3
我們使用WiX爲我們的產品創建兩個包。軟件包A包含作爲軟件包B的先決條件的模塊和其他組件。我想在安裝軟件包B時阻止軟件包A卸載。如何創建Windows包之間的依賴關係
你能推薦一些技巧嗎?
(我試過了啓動條件以及設置與UpgradeVersion/OnlyDetect的屬性,但發現FindRelatedProducts卸載過程中跳過)。
@Cosmin有一個不錯的辦法。我所做的是將註冊表值添加到包含程序包A的UpgradeCode的程序包B(認爲這將允許在將來需要時打破依賴關係)。
<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>
然後程序包A檢查程序中的「依賴性」卸載。
<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>
什麼會使啓動條件跳過? – Demyn
LaunchConditions操作的默認條件。大多數安裝創作工具將其設置爲「未安裝」,因此僅在安裝期間評估啓動條件。 –