You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WIX项目MSI验证出现ICE43与ICE57错误的解决咨询

解决WIX项目的ICE43和ICE57验证错误

错误原因分析

  • ICE43:非广告快捷方式(直接指向EXE的快捷方式)所在组件,必须使用HKCU下的注册表项作为KeyPath,不能用文件或目录。
  • ICE57:原组件同时包含每用户数据(桌面快捷方式)和每机器数据(位于NetzLaufwerkeAppFolder这类全局安装目录),且KeyPath是每机器类型,导致权限/范围冲突。

修改方案

调整快捷方式组件的范围为每用户,并添加HKCU注册表项作为KeyPath,具体代码修改如下:

<Fragment>
    <Component Id="DesktopShortcut" Directory="DesktopFolder" Guid="d92737a6-cc4e-433a-aff0-697dee411288" InstallScope="perUser">
        <!-- 添加HKCU注册表项作为组件KeyPath -->
        <RegistryValue 
            Id="ShortcutRegKey" 
            Root="HKCU" 
            Key="Software\[Manufacturer]\[ProductName]" 
            Name="DesktopShortcutCreated" 
            Type="integer" 
            Value="1" 
            KeyPath="yes" 
        />
        <Shortcut Id="ApplicationDesktopShortcut" Directory="DesktopFolder" Name="test shortcut" Target="[MyFolder]test.exe">
            <Icon Id="AppIcon" SourceFile="..\resources\AppIcon_256.ico"/>
        </Shortcut>
        <!-- 卸载时清理残留的快捷方式目录(可选但规范) -->
        <RemoveFolder Id="RemoveDesktopFolder" Directory="DesktopFolder" On="uninstall" />
    </Component>
</Fragment>

关键修改点说明

  1. 组件范围调整:设置InstallScope="perUser"并将组件目录改为DesktopFolder(每用户目录),确保组件所有内容都属于当前用户,消除每用户/每机器数据冲突。
  2. 添加注册表KeyPath:新增的HKCU注册表项作为组件的唯一标识,符合ICE43对非广告快捷方式组件的要求。
  3. 关于广告快捷方式的差异:你提到的教程中直接关联EXE的情况,大概率使用了广告快捷方式(MSI的特殊快捷方式类型),这类快捷方式依赖组件的文件KeyPath且属于每机器范围,无需注册表项。但桌面快捷方式通常用非广告类型,因此需要按上述规则处理。

内容的提问来源于stack exchange,提问作者Luca Jan Montinaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:33:13