17

我想在 WiX 的文档位置下复制一个文件。但它给出了警告:

组件 testcomp 安装到用户配置文件。它必须使用 HKCU 下的注册表项作为其 KeyPath,而不是文件。

我的代码:

<Directory Id='PersonalFolder' Name='MyDocuments'>
   <Component Id='testcomp' Guid='08C288B6-D8E0-4036-9CEB-E5F616AC6B5C'>
      <File Id='doc_code_file1' Name='doc_code_file1' DiskId='1'
            Source='Personalfolder\Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets\SimpleMvvm\mvvmcommand.snippet' KeyPath='yes'></File>
   </Component>
</Directory>
4

2 回答 2

27

这是正确的。Windows 安装程序希望将注册表项作为每个用户组件的密钥路径。它与配置文件在企业部署中处理广告内容的方式有关。修复非常简单:

<Directory Id='PersonalFolder' Name='MyDocuments'>
   <Component Id='testcomp' Guid='08C288B6-D8E0-4036-9CEB-E5F616AC6B5C'>

      <RegistryValue Root='HKCU' Key='Software\Manufacturer\Product'
                     Name='Something (I like to use InstallFolder)'
                     Value='Something (I like to use [INSTALLFOLDER]'
                     Type='string'
                     KeyPath='yes' />

      <File Id='doc_code_file1' Name='doc_code_file1' DiskId='1'
            Source='Personalfolder\Visual Studio 2012\Code Snippets\Visual C#\My Code Snippets\SimpleMvvm\mvvmcommand.snippet' />
   </Component>
</Directory>

注意:添加的每用户注册表项并标记为KeyPath='yes'. 后者不是明确必需的,因为它是组件中的第一个资源,默认情况下将被标记为关键路径,但明确使用关键路径有时会更好。

于 2013-04-20T13:53:02.337 回答
2

如果您选中Suppress ICE validation选项,Visual Studio 将忽略这些验证

只需遵循这条路线: YourProject-> Properties->Tool Settings

ICE 验证

于 2020-07-17T08:48:55.040 回答