wix bundle только установить измененный MSI

У меня есть пакет wix с 4 MSI - все с версией 1.0.0 и версией пакета как 1.0.0. Я устанавливаю это на машине с Windows, и в ARP я вижу пакет WiX как 1.0.0.

Теперь я делаю некоторые изменения только в одном из MSI, скажем, B, и меняю версию Bundle на 1.1.0, а измененную версию MSI (B) на 1.1.0. Остальные MSI (A, C, D) по-прежнему находятся на уровне 1.0.0.

Теперь, когда я снова запускаю пакет, я ожидаю, что установка для A, C и D будет пропущена, и будет обновлена ​​только B, и пакет также будет обновлен до версии 1.1.0 в ARP. Но я наблюдаю, что установка для всех пакетов (A,B,C,D) происходит, а не только для B.

Так что мои ожидания неверны или я делаю что-то не так?

Это то, что у меня есть в моем коде пакета

<Chain>

 <MsiPackage Id=“A"

              Cache="no” 

      Vital=“yes"

              EnableFeatureSelection="no"

              Permanent="no" Visible="no"

              ForcePerMachine=“yes” 

             SourceFile = “<>”/>

   <MsiPackage Id=“B"

              Cache="no” 

      Vital=“yes"

              EnableFeatureSelection="no"

              Permanent="no" Visible="no"

              ForcePerMachine=“yes” 

             SourceFile = “<>”/>

</Chain>

И это то, что у меня есть в моих wxs для отдельных MSI. Я изменяю версию на 1.1.0 только для MSI B и сохраняю UpgradeCode таким же.

<Product Id="*" UpgradeCode="<GUID which is same across installations>"
         Version="1.0.0" />
<MajorUpgrade DowngradeErrorMessage="New version is present."

Я посмотрел много потоков, но обычно они говорят об обновлении всех MSI, но не 1 MSI. Дайте мне знать, если что-то неясно, и заранее спасибо за вашу помощь.

2 ответа

Burn не установит пакет, если он уже установлен. Но если перестроить пакет с Product/@Id="*"изменилась идентификация пакета (и код продукта, и код пакета). Так что Burn устанавливает то, что выглядит как новый пакет. Если вы хотите, чтобы Burn пропустил такой пакет, не перестраивайте его.

В элементе majorUpgrade есть атрибут AllowSameVersionUpgrades со значением по умолчанию no.

Значение "При значении no (по умолчанию) установка продукта с той же версией и кодом обновления (но с другим кодом продукта) разрешается и обрабатывается MSI как два продукта. Если установлено значение yes, WiX устанавливает атрибут msidbUpgradeAttributesVersionMaxInclusive, который сообщает MSI рассматривает продукт с той же версией, что и серьезное обновление ".

Проверьте этот атрибут и посмотрите, поможет ли он в вашей проблеме. Рекомендуется изменить версию на все msis и комплект, это делается автоматически в рамках конвейера CI/CD выпуска продукта.

Другие вопросы по тегам