什么是wix'KeyPath'属性?

时间:2010-01-04 23:23:49

标签: installer wix windows-installer

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

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

1 个答案:

答案 0 :(得分:110)

作为explained by Rob Mensching

  

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

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

密钥路径资源的存在还可以确定在“修复”MSI时组件是否已损坏或丢失。

当密钥路径资源是版本化文件时,Windows Installer只有在找到版本相同或更高的文件时才会认为它存在。

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