【问题标题】:WiX MajorUpdate element not working as expectedWiX MajorUpdate 元素未按预期工作
【发布时间】:2016-12-11 03:28:07
【问题描述】:

我使用的是 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 已被删除!)

有人可以解释为什么我会出现这种奇怪的行为吗?我有一个预构建脚本,将product Idelement 更新为新的 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>

【问题讨论】:

    标签: tfs wix major-upgrade


    【解决方案1】:

    嗯,原来版本应该是 3 部分而不是 4 例如:1.0.0.1 不会工作,但 1.0.1 对我的情况有用

    【讨论】:

    • 我想知道是否是这种情况,但没有对此发表评论,因为在您的示例场景中,您只使用了 3 个部分变量 =P。如果您希望 4 部分变量起作用,则必须使用“AllowSameVersionUpgrades”,但最好只使用 3 部分变量。在 MajorUpgrade 元素的页面 wixtoolset.org/documentation/manual/v3/xsd/wix/… 上有一些额外的解释
    • 谢谢,我为这个废话浪费了两个小时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2016-08-21
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2016-11-28
    相关资源
    最近更新 更多