最近我发布了一个版本0.8.3
包,现在我准备发布一个新包。但是,我正在努力实施Major Upgrade
/Upgrade
.似乎从未填充过WIX_UPGRADE_DETECTED
变量。 然后我遇到了WiX3主要升级不起作用,接受的答案指出:
- 所有安装版本(同样,不是文件版本(都必须为 1.0 或更高版本。
事实上,暂时将两个软件包的主要版本提高到 1 似乎可以解决问题。但是,我无法追溯更改旧软件包的版本,因为它已经安装在数千台计算机上。 在安装新软件包时完全卸载旧软件包的最佳方法是什么?有没有比设置运行msiexec.exe /x {PRODUCT-CODE}
CustomAction
更好的方法?
只要您的升级代码在版本之间稳定,您只需要正确创作的升级表即可包含要升级的版本。
您使用什么结构来实现主要升级?你用MajorUpgrade element
吗?它应该开箱即用:
<MajorUpgrade Schedule="afterInstallInitialize"
DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit."
AllowDowngrades="no" AllowSameVersionUpgrades="no" />
也许您正在使用旧式的主要升级元素:如何实施WiX安装程序升级?
您应该向我们提供用于实施主要升级的WiX代码段。
我会确保升级表中指定的最大版本与您当前安装的安装程序版本相同。
一些链接:
答案:
- Bob Arnson,WiX开发人员关于主要升级的博客:https://www.joyofsetup.com/2010/01/16/major-upgrades-now-easier-than-ever/
- 具有旧式主要升级元素的较大示例:
在Wix中进行主要升级会在"添加/删除程序"中创建2个条目 - 如何实现WiX安装程序升级?
文档:
- http://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html
- https://www.firegiant.com/wix/tutorial/upgrades-and-modularization/