2013-10-25 28 views
20

yüklemeden devam etmeden önce onu çalıştırın:Inno Setup: diğer yükleyici yükleme ve benim Bu benim defa kod [Dosyalar] kısmıdır

[Files] 
Source: "other_installer.exe"; DestDir: "{app}" 
Source: "myprogram.exe"; DestDir: "{app}" 
Source: "data.dat"; DestDir: "{app}" 
Source: "otherdata.dat"; DestDir: "{app}" 

Programım çalıştırmak için başka bir programa bağlıdır. Yükleyicimdeki bu programın yükleyicisini ("other_installer.exe") ekledim. Yapmak istediğim, "myprogram.exe" ve geri kalanıyla devam etmeden önce kopyalandıktan hemen sonra bu yükleyiciyi başlatmaktır.

Inno Setup Yardımı'nda GoInstall belgelerini buldum ve belgelerini buldum, ancak başka bir uygulamayı çalıştırmanın bir örneği yok. Eğer AfterInstall parametre olabilir gitmek yolu

[Files] 
Source: "other_installer.exe"; DestDir: "{app}" 
Source: "myprogram.exe"; DestDir: "{app}"; BeforeInstall: // RUN OTHER_INSTALLER.EXE // 
Source: "data.dat"; DestDir: "{app}" 
Source: "otherdata.dat"; DestDir: "{app}" 

cevap

24

Daha iyi: Ben böyle bir şey olması gerektiğine inanıyoruz. Aşağıdaki komut dosyası, OtherInstaller.exe dosya girişi işlendikten hemen sonra RunOtherInstaller işlevini yürütecektir. Orada yüklü olan OtherInstaller.exe dosyasını çalıştırmaya çalışır ve bu başarısız olursa, kullanıcıya bir hata iletisi bildirir. O işlevinden yüklemeyi kesintiye unutmayın, bu yüzden bu şekilde istediğini yapmak çok güvenli değil edin:

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName={pf}\My Program 

[Files] 
Source: "OtherInstaller.exe"; DestDir: "{app}"; AfterInstall: RunOtherInstaller 
Source: "OtherFile.dll"; DestDir: "{app}" 

[Code] 
procedure RunOtherInstaller; 
var 
    ResultCode: Integer; 
begin 
    if not Exec(ExpandConstant('{app}\OtherInstaller.exe'), '', '', SW_SHOWNORMAL, 
    ewWaitUntilTerminated, ResultCode) 
    then 
    MsgBox('Other installer failed to run!' + #13#10 + 
     SysErrorMessage(ResultCode), mbError, MB_OK); 
end; 
+0

Hatayı saklamak ve yüklemeyi daha sonra kesmek (ve potansiyel olarak geri almak) mümkün mü? – Septagram

0

Sen AfterInstall kullanmak Yardım bunun için bakabilirsiniz. Dosya kopyalandığında, "AfterInstall:" olarak koyduğunuz işlevi/prosedürü başlatırım.

Bu işlevde/yordamda, Exec'yi kullanın ve diğer yükleyiciyi başlatın.

+0

Evet, cevabım sizinkilere benziyorsa özür dilerim –

8

Önkoşul yükleyicileri çalıştırmak için başka bir iyi zaman da PrepareToInstall olay işlevidir. (Temel yapısı için Inno ile sağlanan örnek komut dosyalarını ve gerçek yürütülmesi için tlama kanunu.)

PrepareToInstall ana avantajı, çocuk yükleyici hataları ve yeniden başlatma isteklerini işlemek için izin vermesidir - AfterInstall kullanarak yapmaz.

Bunun ana dezavantajı, el ile ExtractTemporaryFile çocuk yüklemesini çalıştırmak için gereken herhangi bir şey yapmanız gerektiğinden, bu dosyaların ayıklanmasından önce gerçekleşir.

İlgili konular