什么是wix'KeyPath'属性?

什么是WIX的KeyPath属性? 特别是,它如何适用于以下内容:

<Component Id="ProgramMenuDir" Guid="*"> <RemoveFolder Id="ProgramMenuDir" On="uninstall" /> <RegistryValue Root="HKCU" Key="Software\CompName\AppName" Type="string" Value="" KeyPath="yes" /> </Component> 

Rob Mensching解释说 :

组件的KeyPath是Windows Installer用来确定组件是否存在于计算机上的单个资源。

这意味着当Windows安装程序决定是否安装组件时,将首先查看keypath资源是否已经存在。 如果是,则组件中的任何资源都不会被安装。

keypath资源的存在还决定了当您“修复”MSI时组件是否损坏或丢失。

当keypath资源是版本化文件时,只有当Windows Installer发现具有相同或更高版本的文件时才会认为它存在。

在您的具体示例中,您有一个组件可以在卸载时删除文件夹。 只有在给定的registry项还不存在的情况下才会安装此组件。 当您需要安装不能用作keypath的资源的组件的密钥path(如快捷方式)时 ,添加registry项以用作密钥path是常见的技巧。