Inno Setup: Installer un autre installateur et l'exécuter avant de poursuivre mon installation
C'est la partie [Files] de mon code jusqu'à présent:
[Files]
Source: "other_installer.exe"; DestDir: "{app}"
Source: "myprogram.exe"; DestDir: "{app}"
Source: "data.dat"; DestDir: "{app}"
Source: "otherdata.dat"; DestDir: "{app}"
Mon programme est dépendant d'un autre programme à exécuter. J'ai inclus l'installateur de ce programme ("other_installer.exe") dans mon installateur. Ce que je voudrais faire, c'est lancer cet installateur dès qu'il a été copié, avant de continuer avec "myprogram.exe" et le reste.
j'ai cherché sur Google et j'ai trouvé la documentation pour BeforeInstall dans L'aide D'installation Inno, mais ils n'ont pas d'exemple d'exécution une autre application. Je crois qu'il devrait être quelque chose comme ceci:
[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}"
3 réponses
Mieux pour la façon dont vous allez peut-être le AfterInstall
paramètre. Le script suivant exécutera le RunOtherInstaller
fonction juste après le OtherInstaller.exe
l'entrée de fichier est traitée. Là, il essaie d'exécuter le juste installé OtherInstaller.exe
le fichier et, si cela échoue, il signale un message d'erreur à l'utilisateur. S'il vous plaît noter que vous ne pouvez pas interrompre l'installation à partir de cette fonction, il n'est donc pas très sûr de faire ce que vous voulez de cette façon:
[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;
un autre bon moment pour lancer les programmes d'installation préalable est PrepareToInstall
fonction d'événement. (Voir les exemples de scripts fournis avec Inno pour la structure de base, et le code de TLama pour l'exécution réelle.)
le principal avantage de PrepareToInstall
est qu'il vous permet de gérer les erreurs et de redémarrer les requêtes de l'installateur enfant -- en utilisant AfterInstall
doesn'T.
le principal inconvénient est que vous devez manuellement ExtractTemporaryFile
tout ce qui est nécessaire pour exécuter l'installation de l'enfant, comme cela se produit avant l'extraction des fichiers.
vous pouvez utiliser AfterInstall, cherchez ceci dans L'aide. Quand le fichier est juste copié, je lancerai la fonction/procédure que vous avez mis comme "AfterInstall:".
dans cette fonction/procédure, utilisez Exec et lancez l'autre installateur.