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}"
20
demandé sur Tshepang 2013-10-25 16:01:31

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;
26
répondu TLama 2013-10-25 12:40:01

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.

8
répondu Miral 2013-10-27 18:34:13

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.

0
répondu Leo_Italy 2017-03-04 06:21:03