WiX MajorUpdate元素未按预期工作

时间:2016-12-09 15:21:10

标签: tfs wix major-upgrade

我使用的是WiX 3.10

以下Wxs文件定义了我的WiX安装程序。但是,我最近想在安装新版本之前删除旧版本。令我惊讶的是,它在本地工作,但是当它由tfs构建时,它的行为有所不同,请参阅以下示例

假设我安装了2.0.1版

  1. 我为项目排队了一个新版本,并获得tfs来创建我的2.0.2 msi
  2. 我运行2.0.2 msi
  3. 我检查程序和功能界面,我看到2.0.1和2.0.2
  4. 我启动另一个tfs构建并获得2.0.3 msi
  5. 我运行2.0.3 msi
  6. 我检查程序和功能窗口,我看到2.0.2和2.0.3(2.0.1已被删除!)
  7. 有人可以解释为什么我会遇到这种奇怪的行为吗?我有一个预构建脚本,它将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>
    

1 个答案:

答案 0 :(得分:1)

嗯,事实证明版本应该是3部分而不是4部分 例如:1.0.0.1将不起作用,而1.0.1适用于我的案例