我有CI构建系统建立一个MSI每当一个变化的开发商检查。 我们运行安装MSI自动化验收测试。
基本上每个MSI是一个完整的安装的产品,所以我们没有任何版本(ALA Windows安装)本身..
每个MSI都有相同的产品GUID和升级GUID,和相同的版本号。 但具有不同的包装GUID(在威克斯使用“*”)。
我想实现的是,当安装程序运行时,它会“卸载”以前安装的产品版本,并安装新的..从单一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安装程序只是不允许这种类型的“始终覆盖安装版”安装?