Was ist das Wix -Attribut ' KeyPath '? Wie gilt dies insbesondere für Folgendes:
<Component Id="ProgramMenuDir" Guid="*">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\CompName\AppName"
Type="string" Value="" KeyPath="yes" />
</Component>
Antworten:
Wie von Rob Mensching erklärt :
Wenn Windows Installer entscheidet, ob Ihre Komponente installiert werden soll, wird zunächst geprüft, ob die Schlüsselpfadressource bereits vorhanden ist. Wenn dies der Fall ist, wird keine der Ressourcen in der Komponente installiert.
Das Vorhandensein der Schlüsselpfadressource bestimmt auch, ob eine Komponente beschädigt wurde oder verloren gegangen ist, wenn Sie eine MSI "reparieren".
Wenn es sich bei der Schlüsselpfadressource um eine versionierte Datei handelt, betrachtet Windows Installer sie nur dann als vorhanden, wenn eine Datei mit einer gleichen oder einer höheren Version gefunden wird.
In Ihrem speziellen Beispiel haben Sie eine Komponente, die bei der Deinstallation einen Ordner entfernt. Diese Komponente wird nur installiert, wenn der angegebene Registrierungsschlüssel noch nicht vorhanden ist. Das Hinzufügen eines Registrierungsschlüssels zur Verwendung als Schlüsselpfad ist ein häufiger Trick, wenn Sie einen Schlüsselpfad für eine Komponente benötigen, die Ressourcen installiert, die selbst nicht als Schlüsselpfad verwendet werden können, z. B. eine Verknüpfung .
quelle