代码之家  ›  专栏  ›  技术社区  ›  harper

向MSI UpgradeTable添加条目以删除相关产品

  •  1
  • harper  · 技术社区  · 6 年前

    WiX安装程序产品节点有一个属性 UpgradeCode . 指同一产品以前的版本。值存储在 UpgradeTable FindRelatedProducts

    这个 UpgradeCode 升级代码 . 但计划是将几个过时的遗留产品集成到一个组合的单一产品中。这个 升级代码 我们知道这个遗留产品。我希望将此代码添加到UpgardeTable也将删除此遗留产品。这可以通过填写升级表来完成。

    如何在WiX设置中的UpgradeTable中添加更多条目?

    需要什么语法?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Stein Åsmul    5 年前

    简短的回答 :添加几个 Upgrade Element 将在编译的MSI中创建多行的源 Upgrade Table 然后列出要在 安装(或者可以中止安装)。对于为每个要卸载的产品系列指定的选项,必须非常小心。


    并排安装


    MajorUpgrade Element :较新版本的WiX特性主要升级实现的“便利特性”,形式为 MajorUpgrade element

    Upgrade Element :在WiX的早期版本中,必须使用更多的基本元素来实现主要升级。这个元素仍然可用,这是您需要做的更精细和细粒度的可升级配置。

    使用这些方法之间的差异通过 维姆科恩 在这里: Majorupgrade or Upgrade ID which is preferred for Major upgrade?


    主要升级配置选择 :下面只是一个示例。在每种情况下,必须仔细分析主要升级的实际配置:

    • 如果找到更高版本,是否要中止?
      • 错误信息是什么?
    • 是否允许较低版本卸载较高版本?(请不要)。
    • 是否允许同一版本卸载自身并重新安装?

    很明显你必须对此进行详细的计划和测试。下面是一个模型。这结合了MajorUpgrade元素和Upgrade元素的使用。您还可以仅依赖升级元素来“手动”执行更细粒度的控制:

    <!-- Major upgrade - Your New Product Line, using the MajorUpgrade convenience element -->
    <MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed" />
    
    <!-- Older Product Line 1: Upgrade Code -->
    <Upgrade Id="{11111111-1111-1111-1111-000000000000}">
       <UpgradeVersion Property="PRODUCTLINE1" IncludeMinimum="yes" Minimum="0.0.0" />
    </Upgrade>
    
    <!-- Older Product Line 2: Upgrade Code -->
    <Upgrade Id="{22222222-2222-2222-2222-000000000000}">
       <UpgradeVersion Property="PRODUCTLINE2"  IncludeMinimum="yes" Minimum="0.0.0" />
    </Upgrade>
    
    <!-- Older Product Line 3: Upgrade Code -->
    <Upgrade Id="{33333333-3333-3333-3333-000000000000}">
       <UpgradeVersion Property="PRODUCTLINE3"  IncludeMinimum="yes" Minimum="0.0.0" />
    </Upgrade>
    

    我建议您更改这些产品线属性的名称,这些属性作为特定的产品线是可以理解的。换句话说,如果卸载WiX3,就称之为WIX3PRODUCTLINE等。。。这使得生成的日志文件更容易理解。

    示例升级表 :

    Upgrade Table

    属性列 对控制重大升级的行为很重要。卸载失败时继续。。。

    How can I compare the content of two (or more) MSI files?


    一些链接 :

    :

    旧条目

    还想把你送到WiX专家那里 尼尔·斯莱特霍姆的网站 对于一些过时但仍然很好的真实样品:

        2
  •  2
  •   PhilDW    6 年前