什么是Wix' KeyPath '属性?特别是,它如何适用于以下内容:
<Component Id="ProgramMenuDir" Guid="*">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software\CompName\AppName"
Type="string" Value="" KeyPath="yes" />
</Component>
答案 0 :(得分:110)
组件的KeyPath是一个 Windows的单一资源 安装程序用于确定是否 组件“存在”在计算机上。
这意味着当Windows Installer决定是否安装组件时,它将首先查看密钥路径资源是否已存在。如果是,则不会安装组件中的任何资源。
密钥路径资源的存在还可以确定在“修复”MSI时组件是否已损坏或丢失。
当密钥路径资源是版本化文件时,Windows Installer只有在找到版本相同或更高的文件时才会认为它存在。
在您的特定示例中,您有一个组件可以在卸载时删除文件夹。如果给定的注册表项尚不存在,则此组件将仅安装。当您需要一个组件的密钥路径来安装不能用作密钥路径的资源时,添加一个注册表项以用作密钥路径是一个常见的技巧,如shortcut。