WIX主升级和返回代码
我正在编写一个安装程序,其中还包含使用WIX构建的MSI包。我在运行msiexec后检查返回代码,并跳过一些错误代码。例如,当返回代码为1638(产品已安装)时,用户不应收到错误 但当安装旧版本的产品时,返回代码是1603(未知错误)。我还想跳过这种情况(用户已经获得了更新的版本) Wix代码是WIX主升级和返回代码,wix,windows-installer,Wix,Windows Installer,我正在编写一个安装程序,其中还包含使用WIX构建的MSI包。我在运行msiexec后检查返回代码,并跳过一些错误代码。例如,当返回代码为1638(产品已安装)时,用户不应收到错误 但当安装旧版本的产品时,返回代码是1603(未知错误)。我还想跳过这种情况(用户已经获得了更新的版本) Wix代码是 <Upgrade Id="<GUID>"> <UpgradeVersion Minimum="$(var.product_version)" OnlyDetect=
<Upgrade Id="<GUID>">
<UpgradeVersion Minimum="$(var.product_version)" OnlyDetect="yes" Property="NEWERFOUND" />
<UpgradeVersion Minimum="0.1.0" IncludeMinimum="yes" Maximum="$(var.product_version)" IncludeMaximum="no" Property="SELFFOUND" />
</Upgrade>
<MajorUpgrade DowngradeErrorMessage=You have installed newer version $(var.product_name)." />
您无法控制msiexec.exe
的返回代码。它的返回代码和列表是全面的。服务根据安装状态确定退出代码
更新:我唯一的建议是直接使用数据库功能:
,及
运行操作,该操作将通过处理计算自寻
和新发现
属性
然后,对这些特性进行分析
用包装袋盖上包装
使用获得的SELFFOUND
和NEWERFOUND
值,您可以决定是否需要安装产品。如果是,您可以运行msiexec.exe
或使用
Disclamer:我从来没有尝试过做这样的事情,我不确定它是否会起作用。应该是这样的,但看起来并不容易。如果NEWERFOUND集合我得到的是1603而不是1638,并且我无法将它与发生真正致命错误的情况区分开来,我想没有简单的方法来检测是否安装了更新的版本:问题是降级错误消息
导致包带错误退出,错误是“已安装较新版本”。