Question

J'utilise Inno setup pour installer un produit de la mine, dans la configuration que j'exécuter un programme externe (Validator.exe) si ce programme est annulé ou avorté je dois cancell mon propre programme d'installation.

J'économise le Validator.exe dans le chemin {app} et l'exécuter.

Lorsque le programme d'installation est en cours d'exécution que j'appelle fichier Validator.exe et je reçois le résultat de l'exécution avec: Exec (ExpandConstant ( '{app} /Validator.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode).

Mais ce sont les problèmes avec toutes les solutions que j'ai essayé:

InitializeSetup. Le fichier Validator.exe n'est pas copié dans {app} encore, il ne sera jamais exécuté

Abandonner. Peut être appelée que dans (InitializeSetup, InitializeWizard, CurStepChanged (ssInstall)) donc dans ces cas, le validateur n'est pas copié encore

DeinitializeSetup. Je peux exécuter Validator.exe après l'installation, mais je ne peux pas interrompre le mon installateur de ce point

Je besoin d'un moyen d'annuler l'installation après Validator.exe a été copié et exécuté, peut-être appeler désinstaller mais je ne pouvais pas le faire.

Merci pour toute aide.

Était-ce utile?

La solution

Vous pouvez simplement utiliser le ExtractTemporaryFile () fonction d'aide à extraire validator.exe à une étape d'installation plus tôt. Voir la configuration question inno extraction fichiers au démarrage configuration au lieu de fin et ma réponse.

Autres conseils

Dans Inno Setup, un fichier "externe" est celui qui est pas inclus dans le fichier EXE d'installation. Il existe à l'extérieur, probablement inclus dans un fichier séparé avec le fichier EXE d'installation. Vous dites que votre raison de ne pas appeler Abort dans le cas de InitializeSetup est que le programme de validation n'a pas encore été copié dans le répertoire {app}, ce qui est compréhensible car à ce moment-là, l'utilisateur n'a pas encore précisé ce que la destination de l'installation devrait être. Mais vous n'avez pas besoin validateur soit dans le répertoire de destination. Il est déjà un fichier externe, si simplement l'exécuter à partir de quel répertoire il est déjà.

Une autre possibilité est de mettre la fonctionnalité de validation nécessaire dans une DLL. Vous pouvez inclure la DLL dans le programme d'installation et Inno Setup extrairez la DLL vers un emplacement temporaire afin que vous puissiez appeler ses fonctions à partir du script d'installation.

Merci, il donne d'excellents résultats. Voici comment je l'ai fixé:

function InitializeSetup(): Boolean;.
var
  ResultCode : Integer;
begin
  Result := True;
  ExtractTemporaryFile('Validator.exe');

  if Exec(ExpandConstant('{tmp}\Validator.exe'), '', '', SW_SHOW,
    ewWaitUntilTerminated, ResultCode)
  then begin
    if not (ResultCode = 0) then begin
      Result := false;
    end;
  end;
end;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top