WiX捆绑包:1.0.0的补丁不会从程序&安装捆绑软件2.0.0时的功能

时间:2016-08-09 01:37:49

标签: wix patch burn wix3.9 major-upgrade

有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时发生的情况完全相同。

1 个答案:

答案 0 :(得分:1)

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

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

在修补程序包中,升级代码必须是唯一的,与任何捆绑中使用的任何其他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>