WIX构建报错ICE61:如何不通过抑制检查修复Upgrade.ActionProperty问题?
解决WIX 3.11.2中ICE61错误的非抑制方案
问题背景
为卸载产品旧版本,我在product.wxs中配置了以下代码:
<Property Id="OLD_VERSION" Secure="yes" Value="{53...}" /> <Upgrade Id="EA..."> <UpgradeVersion OnlyDetect="no" Property="OLD_VERSION" Minimum="0.0.0" Maximum="19.0.0" /> </Upgrade>
MSI包可正常构建运行,升级流程也正常,但Visual Studio中出现错误:ICE61: Upgrade.ActionProperty OLD_VERSION cannot be authored in the Property table,该错误导致DevOps中断。想咨询除了在VS项目设置的工具选项卡中抑制ICE61外,是否有其他修复方法?
修复方案
- 删除手动定义的Property元素:ICE61错误的根源是手动在Property表中声明了
OLD_VERSION,而这个属性是由UpgradeVersion元素自动生成和维护的,手动定义会和WIX的内置逻辑冲突。直接移除<Property Id="OLD_VERSION" Secure="yes" Value="{53...}" />即可。 - 在UpgradeVersion中设置Secure属性:如果需要
OLD_VERSION具备Secure特性,无需手动声明Property,直接在UpgradeVersion标签内添加Secure="yes"属性,修改后的代码如下:
<Upgrade Id="EA..."> <UpgradeVersion OnlyDetect="no" Property="OLD_VERSION" Minimum="0.0.0" Maximum="19.0.0" Secure="yes" /> </Upgrade>
这种修改既保留了旧版本卸载功能和属性的安全要求,又能避免触发ICE61检查错误。
内容的提问来源于stack exchange,提问作者fableal
相关产品推荐
相关产品推荐

