我们的应用程序在运行时将注册表的一些设置写入 HKCU 配置单元。我想在卸载过程中删除此设置。这是代码:
<Fragment>
<DirectoryRef Id="INSTALLLOCATION" DiskId="1" FileSource="$(var.SourceDirProject)\">
<Component Id="DeleteHkcuManufacturerHive" Guid="GUID">
<Condition>REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE</Condition>
<CreateFolder/>
<RemoveRegistryKey Action="removeOnUninstall"
Id="HKCUkey" Root="HKCU" Key="Software\$(var.Manufacturer)"/>
</Component>
</DirectoryRef>
</Fragment>
ICE57:组件“DeleteHkcuManufacturerHive”具有每用户和每机器数据以及每机器 KeyPath。
为什么我得到 ICE57?安装是按用户进行的。提前致谢。
UPD:每台机器的元素在哪里?可能是 INSTALLLOCATION=Program Files\ManufacturerDirectory?
您正在 HKCU 配置单元上进行操作,该配置单元仅对当前用户可用。
MSDN状态:
ICE57 验证各个组件不会在每台机器上混合,并且
每个用户的数据。此 ICE 自定义操作会检查注册表项、文件、
目录关键路径和非广告快捷方式。混合每个用户和
同一组件中的每台机器数据可能仅导致部分
为多用户中的某些用户安装组件
环境。
ICE 是对您的安装包的验证。如上所述,ICE57 是为了确保您不会混淆每台机器和每用户的构造。如果您必须在卸载过程中删除 HKCU 的条目(并且该软件是按每台计算机安装的),那么您可以在 Visual Studio 中的“属性”>“工具设置”中关闭该特定验证,如下面的屏幕截图所示:
![enter image description here](https://i.stack.imgur.com/5Kuiu.png)
但是,您可能需要考虑问题的根本原因。如果您正在进行每台计算机安装,您的安装程序或应用程序可能不应该写入 HKCU,因为它仅适用于当前用户,而您的应用程序是为所有用户安装的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)