Comment fermer une application avant de procéder à une installation avec Wix Toolset ?
Depuis longtemps déjà, Wix Toolset dispose d'une action CloseApplication
permettant de fermer une application. Depuis Wix 5 les choses ont un peu changé, et utiliser cette action n'est plus aussi facile. Surtout si l'on souhaite exécuter celle-ci avant de procéder à une installation.
Si vous suivez les indications qui suivent, vous devriez y arriver du premier coup.
Pour commencer, il faut installer l'extension WixToolset.Util.wixext via nuget.
Le nœud Wix du fichier wxs doit être modifié pour inclure le préfix util.
<Wix
...
xmlns:util="http://wixtoolset.org/schemas/v4/wxs/Util"
/>
On peut ensuite définir une ou plusieurs actions CloseApplication.
<util:CloseApplication
Id="CloseApp1"
Target="App1.exe"
CloseMessage="yes"
RebootPrompt="no"/>
Pour finir, il ne reste plus qu'à modifier la séquence InstallExecuteSequence
afin que Wix4CloseApplications_X64
s'exécute avant la validation de l'installation. C'est la partie qui diffère par rapport aux anciennes versions de Wix Toolset.
<InstallExecuteSequence>
<Custom Action="override Wix4CloseApplications_X64" Before="InstallValidate" />
</InstallExecuteSequence>
Note : il faudra utiliser Wix4CloseApplications_X86 pour un installer 32 bits.