gpt4 book ai didi

wix - 如何让 WIX MSI 始终删除以前的版本?

转载 作者:行者123 更新时间:2023-12-03 12:29:14 26 4
gpt4 key购买 nike

每当开发人员 checkin 更改时,我都会让 CI 构建系统构建一个 MSI。我们对已安装的 MSI 运行自动化验收测试。

基本上每个 MSI 都是产品的完整安装,因此我们本身没有任何版本控制(ala Windows 安装程序)。

每个 MSI 具有相同的产品 G​​UID 和升级 GUID,以及相同的版本号。但具有不同的包 GUID(在 wix 中使用“*”)。

我想要实现的是,当安装程序运行时,它会“卸载”任何以前安装的产品版本,然后安装新版本......全部来自一个 MSI(我们有一个复杂的安装过程,这是我们无法控制的.. citrix 和 sccm,所以我们想给它们一个简单的安装路径)

我试过了:

<Property Id='PREVIOUSVERSIONSINSTALLED' Secure='yes' />
<Upgrade Id='$UPGRADE_GUID'>
<UpgradeVersion Minimum='1.0.0.0'
Maximum='99.0.0.0'
Property='PREVIOUSVERSIONSINSTALLED'
IncludeMinimum='yes'
IncludeMaximum='no' />
</Upgrade>

并拥有:
<InstallExecuteSequence>
<RemoveExistingProducts After='InstallFinalize' />
</InstallExecuteSequence>

并尝试过:
<InstallExecuteSequence>
<RemoveExistingProducts After='InstallInitialize' />
</InstallExecuteSequence>

但是当我尝试从后续版本安装 msi 时,我得到:
Another version of this product is already installed. Installation of this version cannot continue. 
To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.

这不是我真正想要的..

我知道我可以只更新产品标签中的版本属性,但这变得难以管理。首先,我每天可以生成 20 多个 msi 构建,因为我有许多生成 MSI 的构建管道,但我不确定如何以有意义的方式处理版本编号。

也许 Windows Installer 只是不允许这种“总是覆盖安装的版本”安装?

最佳答案

所以我确实找到了一种无需更改版本号的方法。

我在每次构建时更改产品 GUID,但保持升级 GUID 相同。

我还必须将 RemoveExistingProducts 更改为 Before='InstallInitialize'。否则,它只留下安装路径中构建之间的“增量”。

正如下面 Wim 所指出的,我可以用 '*' 替换生成的产品 G​​UID。 .

关于wix - 如何让 WIX MSI 始终删除以前的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com