我正在使用wix创建每用户安装程序。我对wix和Windows安装程序有一些经验,但仅适用于每台机器安装程序,因此我目前正在发现ICE38的痛苦:Component xx installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file.
首先我忽略了警告:每个文件都在自己的组件中,但我没有在组件中添加RegistryValue
,因此每个文件都会引发ICE38。这些文件已正确复制到用户配置文件,并在卸载时删除。
然而,对安装程序的每个文件发出警告并且忽略它会感到很尴尬。在每个组件下添加RegistryValue
元素会让ICE高兴,但是它很麻烦,因为我有50多个文件,并且热量似乎无法自动生成(如果我错了,请纠正我)。此外,我不明白为什么文件不能成为每用户安装中的KeyPath,并且为复制到用户配置文件的每个文件添加注册表值似乎都很奇怪。
如果我没有注册表值作为我的组件,会出现什么问题。的keyPath?如果需要注册表值,那么wix工具集中是否有一个工具用于生成它们?
答案 0 :(得分:4)
ICE测试是静态测试,他们不知道安装最终是按用户还是按系统进行。当产品由一个用户安装然后由另一个用户使用时,问题实际上是在每个系统安装中,并且您可能会丢失该用户的资源。如果你知道你总是按用户分类,那么这不是什么大不了的事 - 抑制错误。
答案 1 :(得分:0)
我知道建议使用注册表项以使漫游用户配置文件正常工作(有多少人使用它?我不知道)但我不明白为什么ICE不是我很乐意使用ShortcutFolder作为密钥路径(它位于用户的配置文件中,应该与注册表项一样好,作为密钥路径)。我相信它与组策略和Windows安装程序交互的方式有一些细节。
http://robmensching.com/blog/posts/2007/4/27/how-to-create-an-uninstall-shortcut-and-pass-all-the/