0

有 3 个捆绑包,代码如下所示。1.0.0、1.0.0.1 和 2.0.0。

如果安装了 1.0.0、1.0.0.1 和 2.0.0,View Installed Updates 仍会将 1.0.0.1 列为已安装。它将保留在那里,直到卸载最后一个版本。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Bundle Name="Burn Installer" Version="1.0.0" Manufacturer="LANSA" UpgradeCode="AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA" Copyright="..." AboutUrl="...">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
    <Chain>
      <MsiPackage Id="MainPackage" SourceFile="TESTLIST_v1.0.0_en-us.msi" Vital="yes" DisplayInternalUI="yes" />
    </Chain>
  </Bundle>
</Wix>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Bundle Name="Patch 1.0.0.1" ParentName="Burn Installer" Version="1.0.0.1" Manufacturer="LANSA" UpgradeCode="AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA" Copyright="..." AboutUrl="...">
    <RelatedBundle Id="AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA" Action="Patch"/>     
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
    <Chain>
      <MspPackage Id="Patch" SourceFile="TESTLIST_v1.0.0.1_en-us.msp" Vital="yes" DisplayInternalUI="no" PerMachine="yes" Permanent="no"/>
    </Chain>
  </Bundle>
</Wix>


<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Bundle Name="Burn Installer" Version="2.0.0" Manufacturer="LANSA" UpgradeCode="AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA" Copyright="..." AboutUrl="...">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
    <Chain>
      <MsiPackage Id="MainPackage" SourceFile="TESTLIST_v2.0.0_en-us.msi" Vital="yes" DisplayInternalUI="yes" />
    </Chain>
  </Bundle>
</Wix>

应用升级时,应从程序和功能和/或查看已安装的更新中删除所有以前的版本和补丁。与直接安装 MSI/MSP 而不是通过 Bundler 安装时发生的情况完全相同。

4

1 回答 1

1

WiX 3.9 及更高版本的答案如下...

在主要升级包中,UpgradeCode 必须匹配。以下示例中的“AAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAAA”。

在补丁包中,升级代码必须是唯一的,与任何包中使用的任何其他 GUID 无关。示例中为“CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC”。

在主要升级包中,RelatedBundle 必须是唯一的。此 GUID 用于该主要升级的所有修补程序。示例中为“BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB”。

这些设置还确保主要升级列在程序和功能中,补丁列在查看已安装的更新中。

<Bundle Version="1.0.0" UpgradeCode="AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA">
    <RelatedBundle Id="BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB" Action="Detect" />
</Bundle>
<Bundle Version="1.0.0.1" UpgradeCode="CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC">
    <RelatedBundle Id="BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB" Action="Patch" />
</Bundle>
<Bundle Version="2.0.0" UpgradeCode="AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA">
    <RelatedBundle Id="DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD" Action="Detect" />
</Bundle>
于 2016-08-09T01:37:48.587 回答