Как создать зависимость между пакетами Windows - PullRequest
3 голосов
/ 29 октября 2011

Мы используем WiX для создания двух пакетов для нашего продукта.Пакет A включает в себя модули и другие компоненты, которые являются предварительными условиями для Пакета B. Я хотел бы запретить удаление Пакета A при установке Пакета B.

Можете ли вы порекомендовать некоторые методы?

(я пробовалустановка свойства с помощью UpgradeVersion / OnlyDetect вместе с условием запуска, но обнаруженный FindRelatedProducts пропускается во время удаления.)


@ Cosmin имеет хороший подход.Что я сделал, так это добавил значение реестра в пакет B, содержащий UpgradeCode пакета A (полагая, что в будущем это может привести к нарушению зависимости). </p> <pre><code> <Component Id="RegistryInfo" Guid="*" Win64="$(var.Win64YesNo)"> <RegistryKey Id="CurrentVersion" Root="HKLM" Key="SOFTWARE\MYCO\PACKAGE_B\CurrentVersion" Action="create"> <RegistryValue Name="ProductVersion" Value="[ProductVersion]" Type="string" /> <RegistryValue Name="PackageAUpgradeCode" Value="$(var.PackageAUpgradeCode)" Type="string" /> </RegistryKey> </Component>

Затем пакетПроверка на «зависимость» во время удаления.</p> <pre><code><Property Id="PACKAGE_B_DEPENDS_ON"> <RegistrySearch Id="PackageAUpgradeCode" Root="HKLM" Key="SOFTWARE\MYCO\PACKAGE_B\CurrentVersion" Name="PackageAUpgradeCode" Type="raw" /> </Property> <Condition Message='Package A is installed and requires this package.'> not REMOVE = "ALL" or not PACKAGE_B_DEPENDS_ON = "$(var.PackageAUpgradeCode)" </Condition>

1 Ответ

3 голосов
/ 29 октября 2011

Решением будет использование записей реестра и поисков:

  • каждый пакет записывает некоторую информацию в реестр, например, путь установки и версию продукта
  • каждый пакет использует поиск в реестре , который обнаруживает другой установщик
  • вы используете свойство поиска для условия ошибка настраиваемого действия

Если вам не нравится использование реестра, вы также можете использовать поиск файлов для установленных файлов.

Обратите внимание, что FindRelatedProducts обнаруживает более старые или более новые версии одного и того же продукта. Установщик Windows не поддерживает два пакета.

Кроме того, условия запуска обычно пропускаются во время установки. Вот почему настраиваемое действие с ошибкой является хорошим подходом.

...