【发布时间】:2019-10-08 14:36:07
【问题描述】:
我已经构建了两个版本的应用程序安装程序。一个版本 1.0.0.0 和一个版本 1.0.1.0。 在预构建步骤中,应用程序的可执行文件会添加所选版本。
为了允许降级,将 MajorUpgrade 中的 AllowDowngrades 属性设置为“yes”。
安装 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' />
...
【问题讨论】:
-
尝试将 MajorUpgrade 计划设置为 afterInstallValidate 并再次测试 - 看看是否可行。问题与 MSI 错误有关。降级是一种不好的做法,你能消除它吗?
-
出于相当尴尬的原因,我无法消除它。设置“afterInstallValidate”不起作用。
标签: wix windows-installer