wix:针对perUser安装程序的ICE57和ICE91警告

12

我正在使用wix 3.5来创建一个"perUser"安装范围的Windows安装程序。wxs文件在这里,生成的MSI文件在这里

我从light.exe链接器获得以下奇怪的警告。我不确定是否应该仅将其抑制或者是否有更好的方法来解决它。

ICE57

D:\hg\downmarker\setup\product.wxs(34) : 警告 LGHT1076 : ICE57: 组件 'component.downmarker.exe' 具有 HKCU 注册表 KeyPath 的 per-user 和 per-machine 数据。

对我来说,这个警告没有意义,因为即使没有管理员访问权限,安装程序也可以正常工作 - 这证明了安装程序不会像警告中所述写入任何"per-machine data"。

ICE91

D:\hg\downmarker\setup\product.wxs(37) : 警告 LGHT1076 : ICE91: 文件'downmarker.exe'将被安装到不基于ALLUSERS值变化的每个用户目录'DownMarkerFolder'。即使需要进行每台机器的安装,此文件也不会被复制到每个用户的配置文件中。

我也不理解这个警告,因为我明确将安装程序标记为"perUser"安装范围。

1个回答

9
ICE57的出现是因为组件“component.downmarker.exe”包含来自HKEY_CURRENT_USER和HKEY_CLASSES_ROOT的注册表项。HKEY_CLASSES_ROOT是每台计算机的,因此该组件具有每个用户和每台计算机的数据。
我注意到您正在使用HKEY_CLASSES_ROOT进行文件关联。您可以使用“HKEY_CURRENT_USER\SOFTWARE\Classes”来获取每个用户的文件关联。
对于每个用户的安装程序,ICE91是无害的,可以忽略: http://msdn.microsoft.com/en-us/library/aa369053(VS.85).aspx

2
+1 感谢提供 ICE91 链接,这让人感到放心。对于 ICE57:在每个用户的上下文中,HKEY_CLASSES_ROOT 已经映射到 HKEY_CURRENT_USER\SOFTWARE\Classes,它并不总是针对机器。否则,我将无法在没有管理员权限的情况下运行我的安装程序。此外,如果我按照您的建议明确写入 HKCU\Software\Classes,那么我仍然会收到警告,可能是因为 ProgId 元素隐式使用了 HKCR - Wim Coenen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接