2015-10-26 1 views
1

J'utilise Inno Setup depuis plusieurs mois maintenant, mais j'ai du mal à trouver comment détecter, à partir de l'installateur lui-même, une erreur qui provoquerait la fermeture d'Inno Setup avec un code de sortie différent de zéro.Comment appeler un exe lorsque l'installation d'Inno Setup échoue (dans le programme d'installation lui-même)?

J'ai pensé à utiliser CurStepChanged avec l'étape ssDone, ou même DeinitializeSetup, mais je ne trouve pas comment accéder au code de sortie de l'assistant.

Ai-je raté quelque chose? Il doit y avoir un moyen de le faire ...

+0

Que feriez-vous avec le code de sortie? Je ne comprends pas votre question. –

+0

Je voudrais savoir si quelque chose s'est mal passé afin que je puisse commencer une procédure de retour en arrière sur la machine. Votre réponse proposée a fait l'affaire. –

Répondre

1

Vous ne pouvez pas trouver le code de sortie du programme d'installation de Pascal Scripting.


Si vous voulez détecter que l'installateur n'a, rappelez-vous si CurStepChanged appelé avec ssDone est et tester qu'en DeinitializeSetup.

var 
    Succeeded: Boolean; 

procedure DeinitializeSetup(); 
begin 
    if Succeeded then 
    begin 
    Log('Installation succeeded'); 
    end 
    else 
    begin 
    Log('Installation failed'); 
    end; 
end; 

procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep = ssDone then 
    begin 
    Succeeded := True; 
    end; 
end; 

Il y a des cas de pointe, lorsque ssDone est utilisé même, en cas d'échec du programme d'installation. Par exemple, en cas d'échec, une machine n'a pas été redémarrée pour terminer l'installation précédente. Dans ce cas, le CurStepChanged n'est pas appelé avec ssPostInstall. Vous pouvez donc vérifier les deux étapes, si ce scénario peut se produire dans votre programme d'installation.

+0

Merci pour la réponse. Je fais un essai et reviendra pour vous dire comment ça s'est passé. –

+0

Ok, donc j'ai piraté votre solution et cela fonctionne maintenant comme prévu. Merci beaucoup. –