降级会删除可执行文件的新版本,但不会重新安装旧版本

时间:2019-10-08 14:36:07

标签: wix windows-installer

我已经构建了两个版本的应用程序安装程序。版本1.0.0.0和版本1.0.1.0。 在预构建步骤中,应用程序的可执行文件将添加所选版本。

为了允许降级,将MajorUpgrade中的AllowDowngrades属性设置为“是”。

在安装1.0.0.0之后,我通过运行1.0.1.0安装程序来升级安装。可执行文件已正确升级。 然后,我再次运行1.0.0.0安装程序以将安装降级到1.0.0.0。 安装完成,并且版本1.0.1.0的可执行文件已删除。 但是不会重新安装版本1.0.0.0的可执行文件。他们只是失踪了。

我不明白为什么会这样。我可以理解安装程序是否拒绝覆盖较新的可执行文件,但是为什么要删除较新的可执行文件? 我还有其他事情要做才能降级吗?

我的Product.wxs的开头:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  <!-- Including defines. -->
  <?include Defines.wxi ?>
  <Product Id="*"
        Name="$(var.ProductName) $(var.MajorMinorVersion)"
        Language="1033"
        Version="$(var.ProductVersion)"
        Manufacturer="$(var.Manufacturer)"
        UpgradeCode="$(var.UpgradeGuid)">

    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade Schedule="afterInstallInitialize" AllowDowngrades='yes' AllowSameVersionUpgrades='no' />
    ...

1 个答案:

答案 0 :(得分:0)

REINSTALLMODE必须从默认的omus更改为amus

<Property Id="REINSTALLMODE" Value="amus" />

根据Microsoft文档:

o   Reinstall if the file is missing or is an older version.
a   Force all files to be reinstalled, regardless of checksum or version.

通过此更改,可执行文件将以正确的版本重新安装在降级版本上。