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 выпуска продукта.