2013-02-13 27 views
1

我正在開發針對企業產品的Windows安裝程序,該安裝程序具有作爲單獨的MSI產品的不同變體。我們必須檢查,如果已經安裝了其他變體,我們不能安裝產品。我創建了不同的WIX腳本,並用它們作爲單獨的產品(MSI)構建它們。在WiX中的多個MSi中安裝功能

每個變體都有一個基本框架和一些模塊。我創建了每個模塊作爲一項功能,並將它們與基礎功能(基本功能必須根據現在安裝)一起包含在內建的變體中。

我收到要求,我們必須允許在任何安裝的變體上安裝另一個變體。例如,我將Product1與基礎框架一起安裝了兩個模塊作爲三個功能(Base,Mod1,Mod2)。 Product2使用Base和Mod3構建。現在,當我在安裝Product1的系統中安裝Product2時,只應安裝Mod3。

我正在使用WIX 3.5。

任何幫助,將不勝感激。

在此先感謝。

回答

3

沒有測試,我會說你可以用ComponentSearch來做到這一點。定義這種搜索,搜索產品1的組件並將結果寫入變量。然後您可以檢查變量是否爲空以確定產品1是否已安裝。

<Property Id="EXISTING_PRODUCT"> 
     <ComponentSearch Id="SearchMyProduct" Guid="{YOUR-OWN-GUID}" Type="file"/> 
</Property> 

然後,您可以在功能中使用Condition

<Feature Title="Product2"> 
    <Condition Level="0">EXISTING_PRODUCT <> ""</Condition> 
</Feature> 

你也可以使用一個CustomAction定義基於搜索結果禁用Feature期望值。 (應該是Level的值)。

我還沒有測試過這種方式,但我認爲它應該可以工作。請嘗試並提供反饋。

附加鏈接:

http://wix.tramontana.co.hu/tutorial/getting-started/conditional-installation

+0

謝謝馬丁。讓我用我的WIX項目進行檢查。 – Muthukkumaran 2013-02-15 09:46:56

+0

這對我有效。但我必須妥協我的自定義行爲。我正在重新編寫用於安裝和卸載的自定義操作。接受了答案。 – Muthukkumaran 2013-02-18 11:53:38

+0

我必須使用Property @ Secure =「yes」才能正確處理卸載情況。否則,該屬性在卸載時被忽略。 – uli78 2013-10-02 12:36:53

相關問題