最近我发布了一个版本为0.8.3
的软件包,我现在准备发布一个新软件包了。然而,我正在努力实施Major Upgrade
/ Upgrade
。似乎WIX_UPGRADE_DETECTED
变量从未填充过。然后我跑过WiX3 major upgrade not working,接受的答案说:
- 所有安装版本(同样,不是文件版本)必须为1.0或更高版本。
确实暂时将这两个软件包的主要版本提升为1似乎解决了这个问题。但是我无法追溯更改旧包的版本,因为它已经安装在数千台计算机上。在安装新软件包的同时彻底卸载旧软件包的最佳方法是什么?有没有比建立运行CustomAction
的msiexec.exe /x {PRODUCT-CODE}
更好的方法?
只要您的升级代码在不同版本之间保持稳定,您只需要正确创建升级表以包含要升级的版本。
您使用什么构造来实现主要升级?你使用MajorUpgrade element
吗?它应该可以直接开箱即用:
<MajorUpgrade Schedule="afterInstallInitialize"
DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit."
AllowDowngrades="no" AllowSameVersionUpgrades="no" />
也许你正在使用旧式的主要升级元素:How to implement WiX installer upgrade?。
您应该向我们提供您用于实施重大升级的WiX代码段。
我会确保您的升级表中指定的最大版本与您当前安装的安装版本相同。
一些链接:
回答:
文档: