WIX主升级和返回代码

WIX主升级和返回代码,wix,windows-installer,Wix,Windows Installer,我正在编写一个安装程序,其中还包含使用WIX构建的MSI包。我在运行msiexec后检查返回代码,并跳过一些错误代码。例如,当返回代码为1638(产品已安装)时,用户不应收到错误 但当安装旧版本的产品时,返回代码是1603(未知错误)。我还想跳过这种情况(用户已经获得了更新的版本) Wix代码是 <Upgrade Id="<GUID>"> <UpgradeVersion Minimum="$(var.product_version)" OnlyDetect=

我正在编写一个安装程序,其中还包含使用WIX构建的MSI包。我在运行msiexec后检查返回代码,并跳过一些错误代码。例如,当返回代码为1638(产品已安装)时,用户不应收到错误

但当安装旧版本的产品时,返回代码是1603(未知错误)。我还想跳过这种情况(用户已经获得了更新的版本)

Wix代码是

<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,并且我无法将它与发生真正致命错误的情况区分开来,我想没有简单的方法来检测是否安装了更新的版本:问题是
    降级错误消息
    导致包带错误退出,错误是“已安装较新版本”。