Tuer le processus avant (re) installer en utilisant "taskkill / f / im" dans la configuration Inno
j'installe un service/démon, qui doit être tué avant de désinstaller et réinstaller.
j'ai déjà trouvé comment faire pour désinstaller :
[UninstallRun]
Filename: "taskkill"; Parameters: "/im ""My Service.exe"" /f"; Flags: runhidden
la section [Run]
, cependant, s'exécute après installation, donc je ne peux pas l'utiliser pour cela. Quelle est la meilleure façon de tuer le processus en utilisant taskkill
avant l'installation?
s'il vous plaît noter que je veux spécifiquement tuer le processus. une solution plus complexe utilisant IPC n'offre aucun avantage dans mon cas, je veux juste exécuter taskkill
avant d'installer un fichier particulier.
2 réponses
j'ai trouvé un moyen d'utiliser le mot-clé BeforeInstall
et une simple fonction Pascal dans la section code. J'ai ajouté un paramètre string pour qu'il puisse être réutilisé pour plusieurs processus.
[Files]
Source: "My Service 1.exe"; DestDir: "{app}"; Flags: ignoreversion; BeforeInstall: TaskKill('My Service 1.exe')
Source: "My Service 2.exe"; DestDir: "{app}"; Flags: ignoreversion; BeforeInstall: TaskKill('My Service 2.exe')
[Code]
procedure TaskKill(FileName: String);
var
ResultCode: Integer;
begin
Exec(ExpandConstant('taskkill.exe'), '/f /im ' + '"' + FileName + '"', '', SW_HIDE,
ewWaitUntilTerminated, ResultCode);
end;
sauf si L'installateur tourne sur une machine Windows XP, ou si vous avez paramétré CloseApplications
directive à no
(la valeur par défaut est yes
), l'installateur doit fermer l'application automatiquement:
la fonctionnalité est disponible depuis Inno Setup 5.5 sous Windows Vista et les versions plus récentes.