J’ai un service Windows qui sera installé dans le cadre de l’installation de Wix. Le problème est que, actuellement, le service est en production et qu’il ne répond pas à l’arrêt en raison d’un code mal écrit dans la méthode service OnStop.
Ainsi, la prochaine fois que l’utilisateur tentera d’installer la version mise à niveau, l’installation échouera car le service ne s’arrêtera jamais lorsque wix tentera de l’arrêter.
Existe-t-il un moyen par lequel je parviens à savoir si Wix prend trop de temps pour se désinstaller et que je peux tuer le processus si je reçois cette notification?
Aussi, y a-t-il un moyen de tuer le processus en fonction de la version du produit?
Merci
Je ne devrais pas répondre à cette question car cela fait des années que je n’ai pas eu affaire à ce genre de choses, mais bon sang, essayons.
Je tiens à souligner que je n’ai pas réellement testé ces outils pour tuer des services et que je n’ai pas le temps de le faire pour le moment. Il pourrait y avoir des problèmes avec le séquençage dans lequel StopServices
pourrait être planifié avant l’ CloseApplication
programmée de l’action personnalisée CloseApplication
de WiX. Veuillez vérifier la InstallExecuteSequence
utilisant Orca (vers le bas) après la compilation pour voir si c’est le cas.
J’ai trouvé une solution pour cela après avoir creusé pendant un certain temps.
Je crée un nouveau projet d’action personnalisé C # et je séquence mon action avant InstallInitialize.
Dans ma méthode d’action personnalisée C #, je lis la version de fichier installée existante à l’aide de FileVersionInfo.GetVersionInfo (filePath);
Ensuite, je vérifie avec la version souhaitée que je veux vérifier et si la condition correspond, je tue mon processus de service en utilisant
foreach (Process proc in Process.GetProcessesByName("ProcessName")) { proc.Kill(); session.Log("Service Killed"); }
pour ce faire, Wix Toolset v3.11.1 doit être préalablement installé