我已经构建了两个版本的应用程序安装程序。版本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' />
...
答案 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.
通过此更改,可执行文件将以正确的版本重新安装在降级版本上。