Qu'est-ce que l'attribut Wix 'KeyPath'? En particulier, comment s'applique-t-il aux éléments suivants:
<Component Id="ProgramMenuDir" Guid="*">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\CompName\AppName"
Type="string" Value="" KeyPath="yes" />
</Component>
Comme expliqué par Rob Mensching :
Le KeyPath pour un composant est une ressource unique que Windows Installer utilise pour déterminer si un composant "existe" sur une machine.
Cela signifie que lorsque Windows Installer décide d'installer ou non votre composant, il vérifie d'abord si la ressource de chemin de clé est déjà présente. Si tel est le cas, aucune des ressources du composant n'est installée.
La présence de la ressource Keypath détermine également si un composant a été endommagé ou a disparu lorsque vous "réparez" un MSI.
Lorsque la ressource keypath est un fichier versionné, Windows Installer ne considérera qu'elle existe que s'il trouve un fichier avec une version égale ou supérieure.
Dans votre exemple spécifique, vous avez un composant qui supprime un dossier lors de la désinstallation. Ce composant ne sera installé que si la clé de registre donnée n'existe pas encore. L'ajout d'une clé de registre à utiliser comme chemin de clé est une astuce courante lorsque vous avez besoin d'un chemin de clé pour un composant qui installe des ressources qui ne peuvent pas être utilisées comme chemin de clé, comme un raccourci .