2 votes

Exécution d'une application à la fin de la désinstallation dans InnoSetup, gestion de l'annulation par l'utilisateur.

Pendant la désinstallation, il sera demandé à l'utilisateur "Are you sure to uninstall ...".

L'utilisateur clique ensuite sur "Oui" ou "Non".

Est-il possible d'attraper cela sur le script ?

Parce que j'ai besoin d'exécuter une application à la fin du processus de désinstallation.

Si j'exécute l'application pendant "InitializeUninstall()", ce n'est pas correct car l'utilisateur pourrait annuler la désinstallation plus tard (le dialogue ci-dessus s'affiche APRÈS cette fonction).

De même que "DeInitializeUninstall()", cette fonction est toujours exécutée même si l'utilisateur annule la désinstallation.

En gros, j'ai besoin d'exécuter l'application lorsque l'utilisateur est réellement en train de désinstaller (il a accepté de désinstaller). Car j'ai besoin d'attraper le ExitCode de cette application pour définir la fonction UninstallNeedRestart().

Merci.

2voto

cosmin Points 34

Ce que vous pouvez faire, c'est ajouter une variable globale dans votre section [Code].

 [Code]

var
  ApplicationWasUninstalled: Boolean;

Ensuite, dans la procédure InitializeUninstallProgressForm, vous pouvez définir la variable globale à 1 (Remarque : cette fonction n'est exécutée que si l'utilisateur clique sur Oui lorsqu'il lui est demandé s'il souhaite désinstaller votre application.

procedure InitializeUninstallProgressForm();
begin
  ApplicationWasUninstalled := true;
end;

Ensuite, vous allez vérifier la valeur de ApplicationWasUninstalled dans la fonction DeinitializeUninstall.

procedure DeinitializeUninstall();
begin
  if ApplicationWasUninstalled Then Begin
      //your code here
  end;
end;

1voto

Jack Culhane Points 114

Une autre façon d'y parvenir est d'utiliser les sections [Run] et / ou [UninstallRun] pour exécuter un exécutable après l'installation / avant la désinstallation.

Vous pouvez lancer un exécutable pour faire le nettoyage dont vous avez besoin.

Compilez un exe d'aide pour faire ce que vous voulez, ou ajoutez la fonction à votre exécutable principal lorsqu'elle vous est fournie comme paramètre de ligne de commande.

[Run]
Filename: "{app}\CleanUp.exe"; WorkingDir: "{app}"

[UninstallRun]
Filename: "{app}\CleanUp.exe"; Parameters: "/uninstall"; WorkingDir: "{app}"; RunOnceId: "CleanUpApp"

Plus d'informations dans la documentation sur la configuration d'inno : http://www.jrsoftware.org/ishelp/index.php?topic=runsection

Vous devez également ajouter l'exe d'aide à l'installation :

[Files]
...
Source: "C:\myprog\CleanUp.exe"; DestDir: "{app}"; Flags: ignoreversion

1voto

Deanna Points 15182

Vous pouvez le faire dans le CurUninstallStepChanged() lorsqu'elle est appelée avec la fonction d'événement usPostUninstall paramètre.

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
    if CurUninstallStep = usPostUninstall then
    begin
        // Do your uninstall time code here
        Exec(ExpandConstant('{app}\CleanUp.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
    end;
end;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X