我正在使用Wix 3.10
以下WXS文件定义了我的WIX安装程序。但是,我最近想在安装新版本之前删除旧版本。令我惊讶的是,它在本地起作用,但是当它由TFS构建时,其行为不同,请参见以下示例
假设我已安装了2.0.1版
- 我为该项目排队一个新的构建,并让TFS创建我的2.0.2 MSI
- 我运行2.0.2 MSI
- 我检查程序和功能接口,我看到2.0.1和2.0.2
- 我启动了另一个TFS构建并获得2.0.3 MSI
- 我运行2.0.3 MSI
- 我检查程序和功能窗口,我看到2.0.2和2.0.3(2.0.1已删除!)
有人可以解释为什么我会得到如此奇怪的行为吗?我有一个前构建脚本,将product Id
元素更新为新的GUID和version
元素,以匹配TFS构建编号(因此,我可以保证每个构建上有一个新的GUID和一个新版本编号)
这是我的WXS
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
Name="xxx"
Language="1033"
Version="0.0.0.0"
Manufacturer="xxx"
UpgradeCode="FC30BA3E-619C-4247-988E-2823831E9E04">
<Package Compressed="yes"
InstallerVersion="200"
Manufacturer="xxx"
Description="xxx"
Comments="(C) 2016 xxx"
Platform="x64"
InstallScope="perMachine"/>
...
<MajorUpgrade
Schedule="afterInstallInitialize"
DowngradeErrorMessage="A newer version of [ProductName] is already installed."/>
</Product>
</Wix>
好吧,事实证明该版本应为3个部分,而不是4个部分例如:1.0.0.1无法正常工作1.0.1为我的案件