Комплект WiX: исправления для версии 1.0.0 не удаляются из «Программы и компоненты» при установке пакета 2.0.0.

Есть 3 комплекта, код указан ниже. 1.0.0, 1.0.0.1 и 2.0.0.

Если установлены версии 1.0.0, 1.0.0.1 и 2.0.0, в разделе «Просмотр установленных обновлений» по-прежнему будет отображаться версия 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.


person RobG    schedule 09.08.2016    source источник


Ответы (1)


Ответ для WiX 3.9 и более поздних версий выглядит следующим образом...

В пакетах основных обновлений UpgradeCode должен совпадать. «AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA» в приведенном ниже примере.

В пакетах исправлений код обновления должен быть уникальным, не связанным с каким-либо другим идентификатором GUID, используемым в любом пакете. «CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC» в примере.

В пакетах Major Upgrade 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>
person RobG    schedule 09.08.2016
comment
Это сработало для меня, за исключением того, что удаление исправления не приводит к понижению пакета MSI до исходной версии. Вы тоже заставили это работать? - person Christopher Painter; 23.02.2017
comment
@ChristopherPainter Да, у меня это сработало. И мы прекратили это использование WiX, поскольку автор WiX указал, что это не так, как предполагалось. Так как был ряд других неразрешимых вопросов, и он был сильно возмущен этим, мы решили нашу проблему другим путем. - person RobG; 27.03.2017