Bir 7-Zip kendiliğinden açılan arşiv (SFX) arşivinden çıkarıldıktan sonra bir dosyayı çalıştırmak mümkün müdür?


40

Sıkıştırılmış konuşlandırma yapabilen bir uygulama yapmaya çalışıyorum.

Şu anda IDE'mden (Visual Studio 2008 - WPF yayınlanmış uygulama) yayınladığım bir dosya setini alıyorum ve bunları 7-Zip SFX arşivinde sıkıştırıyorum.

Kullanıcılarım, 7-Zip exe'den "tek tıklamayla kurulum" yapıp yapamayacaklarını sordular. Arşivi oluştururken bir parametre listesi var. Çıkarılan yükleyiciyi çalıştırmak için bir çeşit parametre kombinasyonu ayarlamanın bir yolu var mı?

Maalesef, 7-Zip dokümantasyonu bu senaryoyu kapsamıyor gibi görünüyor. Buna benzer bir şey yapan birkaç ücretli uygulama gördüm, ancak aracı dahili olarak kullanabilmemiz için lisanslı koddan arındırmaya çalışıyorum.


Birinin parasını ödediğini gösterir misiniz?
abhishek77,

Yanıtlar:


35

LMZA SDK'yı 7-Zip'den indirmeniz gerekecek . "İnstaller.txt" dosyası dokümantasyon içeriyor:

7zSD.sfx, kurucular için SFX modülüdür. 7zSD.sfx, msvcrt.dll dosyasını kullanır.

Yükleyiciler için SFX modülleri, kurulum programı oluşturmanıza izin verir. Bu modül arşivi temp klasörüne çıkartır ve belirtilen programı çalıştırır ve program bitiminden sonra temp dosyalarını siler. Yükleyiciler için kendi kendine ayıklanan arşiv, 3 dosyaya eklenecek şekilde oluşturulmalıdır: SFX_Module, Installer_Config, 7z_Archive. Installer_Config isteğe bağlı bir dosyadır. Yükleyici kendiliğinden açılan bir arşiv oluşturmak için aşağıdaki komutu kullanabilirsiniz:

copy /b 7zSD.sfx + config.txt + archive.7z archive.exe

Bir config.txt dosyası oluşturmanız gerekir.

Config dosyası, Installer için komutlar içerir. Dosya dizgeden başlar ;!@Install@!UTF-8!ve ile biter ;!@InstallEnd@!. Dosya UTF-8 kodlamasında yazılmalıdır. Dosyada dize çiftleri var:

ID_String = "Değer"

Title Mesajların başlığı

BeginPrompt İstemi iletisine başla

ProgressDeğer "evet" veya "hayır" olabilir. Varsayılan değer "evet" dir.

RunProgramÇalıştırılması için komut. Varsayılan değer "setup.exe". %% T yerine, dosyaların çıkarıldığı geçici klasör yolu ile değiştirilecek

Directory"RunProgram" için dizin öneki. Varsayılan değer ". \"

ExecuteFile Çalıştırılacak dosyanın adı

ExecuteParameters "ExecuteFile" için parametreler

Örneğin:

 ;!@Install@!UTF-8!
 Title="7-Zip 4.00"
 BeginPrompt="Do you want to install the 7-Zip 4.00?"
 RunProgram="setup.exe"
 ;!@InstallEnd@!

1
Evet. Denedim. Biraz rahatsız edici coz her şey komut satırı, ancak bunun için iyi bir belge bulacaksınız. Ve en iyi sıkıştırmayı ücretsiz olarak alıyorum.
Ganesh R.

@MikeG - Bu bağlantı çok daha kapsamlı. Dekompresyon bölümünün tamamen saydam hale getirilmesini açıkladı. Çok hoş teşekkürler!
namuol

5
9.35 beta sürümünden itibaren "SFX modülleri LZMA SDK paketine taşındı" (7- zip.org'da mevcut ) olduğuna dikkat edin .
Lukas,

21

Kararlaştırılan çözüm doğrudur, ancak gerçekte yapmanız gerekenleri açıklamakta yardımcı olmaz !. Bunu ve daha birçok çözümü okudum ve bunun nasıl yapılacağına dair tam ve eksiksiz basit talimatlar bulamadım.

Kafam karışık gibi, lütfen Molly7244'ün yayınladıklarını nasıl elde edeceğinize dair adım adım talimatlar veren blog yazımı okuyun.

Setup.exe dosyasını çalıştıran 7zip -sfx anahtarı ile kendiliğinden açılan bir arşiv nasıl yapılır

Bloglarımdaki adımlar işte bu yüzden bağlantılar kopabileceğime dikkatimi çekti.

Adım 1 - Kurulum klasörünüzü kurun

Bunu kolaylaştırmak için bir klasör oluşturun: c: \ Install. Gerekli tüm dosyaları kopyalayacağımız yer burasıdır.

Adım 2 - 7Zilgisayarlarınızı kopyalayın

  1. .Msi ve setup.exe dosyanızın bulunduğu klasöre gidin
  2. Hem .msi hem de setup.exe dosyasını seçin.
  3. Sağ tıklayın ve 7Zip -> "Arşive ekle" seçeneğini seçin
  4. Arşivi "Installer.7z" olarak adlandırın (veya seçtiğiniz bir adı)
  5. Tamam'ı tıklayın.
  6. Şimdi "Installer.7z" olmalıdır.
  7. Bu .7z dosyasını c: \ Install dizine kopyalayın

Adım 3 - 7z-Extra sfx genişletme modülünü edinin

7z-Extra'yı indirmeniz gerekiyor.

  1. 7Zip'i indirmek için gitmek için bu bağlantıyı takip edin
  2. Beta sürümü doğru içermediğinden, 9.20 sürümünü (@ Mayıs-2015 gibi) indirmeniz gerekir.
  3. Bir doğrudan indirme bağlantısı.
  4. 7zip fazladan dosyaları çıkart
  5. "7zS.sfx" dosyasını c: \ Install e kopyalayın

Adım 4 - config.txt ayarlarınızı yapın

UTF-8'de kodlamanız gerektiğinden bu metin dosyasını düzenlemek için NotePad ++ kullanmanızı tavsiye ederim, aşağıdaki talimatlar notepad ++ kullanıyor.

  1. Windows Gezgini'ni kullanarak c: \ Install gidin
  2. sağ tıklayın ve "Yeni Metin Dosyası" nı seçin ve config.txt olarak adlandırın
  3. sağ tıklayın ve "NotePad ++ ile Düzenle" yi seçin
  4. "Kodlama Menüsü" nü tıklayın ve "UTF-8'de Kodla" yı seçin
  5. Bunun gibi bir şey girin:

    ;!@Install@!UTF-8!
    Title="SOFTWARE v1.0.0.0"
    BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
    RunProgram="setup.exe"
    ;!@InstallEnd@!
    

Bunu [SOFTWARE v1.0.0.0] ürün isminizle değiştirerek düzenleyin. Kurulum dosyası için parametreler ve seçenekler hakkında notlar burada

CheckPoint

Şimdi aşağıdaki 3 dosyayla birlikte bir "c: \ Install" klasörüne sahip olmalısınız:

  1. Installer.7z
  2. 7zS.sfx
  3. config.txt

5. Adım - Arşivi oluşturun

Web’de bulduğum bu talimatlar ancak hiçbir yerde yukarıdaki 4 adımdan herhangi birini açıklamamıştır.

  1. Bir cmd penceresi açın, Pencere + R -> cmd -> enter tuşuna basın
  2. Komut penceresinde aşağıdakileri yazın

    cd \
    cd Install
    copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
    
  3. C: \ Install'a bakın ve şimdi bir MyInstaller.exe'ye sahip olduğunuzu göreceksiniz

  4. Sen bittin

Yükleyiciyi çalıştırın

MyInstaller.exe'ye çift tıklayın ve mesajınızla bilgi ister. Tamam'ı tıklatın, setup.exe çalışır.

Otomasyon ile ilgili PS Notu

Şimdi bunun c: \ Install dizininizde çalıştığına dair bir "Install.bat" dosyası oluşturacağım ve kopya betiğini içine koyacağım.

copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe

Artık, dağıtım paketinin yeni bir sürümünü yeniden oluşturmanız gerektiğinde, Install.bat dosyasını düzenleyebilir ve çalıştırabilirsiniz.


2
Bu kabul edilen cevap olmalı!
noelicus

Komut satırı değişkenini, içindeki ExecuteParametersöğeye geçirmek mümkün müdür config.txt? Örneğin: C:\Install\MyInstaller.exe some_file.txt yürütürdü setup.exe some_file.txt.
07'de

Evet öyle. Matthew-lundberg söylediği gibi onun cevabını , "SFX yürütülebilir geçirilen Argümanlar install.cmd komut boyunca iletilir"
dthor

8

Ayrıca NSIS'e de bakmalısınız . Bununla, 7-Zip'in kullandığı yöntemle sıkıştırılmış bir yükleyici oluşturabilirsiniz ( LZMA ), bu nedenle kabaca aynı boyutta olmalıdır ve yükleme işlemi üzerinde tam denetime sahip olursunuz.


2

Jcrawfor74'ın cevabı üzerine inşa, işte bazı ek bilgiler:

Yerine 7zS.sfx , ayrıca dosyasını kullanabilirsiniz 7zS2.sfx . Bu çok daha küçük bir versiyondur (28 kB vs. 140 kB) ancak config.txt dosyasını desteklemiyor. Böylece kopya komutunda bırakabilirsiniz. Yalnızca küçük yapılandırma komut dosyaları oluşturmak istiyorsanız, bu daha küçük EXE dosyaları oluşturmanıza olanak sağlar.

Daha küçük olan SFX modülü hiçbir soru sormaz. Dosyaları diğer modül gibi geçici bir klasöre çıkarır ve ardından çalıştırılabilir adaylar bulur. Kaynak koduna göre (indirme sayfasında da bulunur), C \ Util \ SfxSetup \ SfxSetup.c dosyasında, dosyaları adlarına ve uzantılarına göre farklı şekilde tartar ve ardından en yüksek puanlama dosyasını alır.

Her iki SFX modülü de en az Windows 10'da otomatik olarak Yönetici olarak çalışır ve bu yapılandırılamaz. Bu davranış, sistem genelindeki kurulumlar için arzu edilebilir olsa da, bu her zaman böyle olmayabilir. Ayrıca, bu karar yalnızca dosya sürüm verisine dayanmaktadır, çünkü Windows'a ne yapılacağını açıkça söyleyen hiçbir bilgi yoktur. Windows uyumluluğu dosyaya bakar ve yükseklik istemine neden olan "Kurulum" gibi dizeleri bulur.

Yönetici izinleri istemez bir SFX modülünü gerekiyorsa, kaynak veya daha basit, böyle bir kaynak editörü ile düzenleme dosya sürümü bilgi SFX modülünü kurabiliriz bu bir . Sadece "Kurulum" kelimesini belirtilen Kaynak Hacker durumunda FileDescription alanından kaldırın, dosyayı derleyin ve EXE dosyasını kaydedin. Bu adımı doğrudan 7zS.sfx veya 7zS2.sfx dosyasında da gerçekleştirebilir ve yükseltilmemiş SFX paketleri oluşturmak için kullanabilmeniz için bir yerde saklayabilirsiniz. Bunu, ürün adınızı veya içindeki yükü tanımlayan herhangi bir şeyi koymak için dosya sürümü bilgilerini tamamen özelleştirmek için kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.