Мы используем 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>