什么是 wix“ KeyPath”属性?

什么是 Wix‘ 钥匙路径’属性? 特别是,它如何应用于以下方面:

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

作为 解释者: Rob Mensching:

组件的 KeyPath 是 单一资源 安装程序用于确定 组件在机器上“存在”。

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

键路径资源的存在还决定了在“修复”MSI 时组件是否已损坏或丢失。

当 keypath 资源是一个版本化的文件时,Windows Installer 只有在找到一个等于或更高版本的文件时才会认为它存在。

在您的特定示例中,您有一个在卸载时删除文件夹的组件。如果给定的注册表项尚不存在,则此组件将仅为 安装。当您需要一个组件的密钥路径来安装本身不能用作密钥路径的资源(如 捷径)时,添加一个注册表项用作密钥路径是一个常见的技巧。