我想根據WIX項目中的用戶輸入將互斥應用程序部署到互斥環境中。我所做的研究告訴我,我無法使用條件來做到這一點http://www.joyofsetup.com/2007/05/30/feature-conditions-and-ui/這似乎是一個相當普遍的問題,最終的最佳實踐將是有價值的。WIX安裝程序中相同文件夾中的互斥文件
我已經使用上述文章中的功能和發佈事件實現了此功能。我的用戶界面中的事件如下。
在我的情況下,我將兩個互斥Web應用程序之一安裝到三種不同的環境之一中。我通過創建8個特性來實現這一點,每個應用程序和除web.config以外的所有文件都是1,而web.config文件則是6,這取決於正在安裝的應用程序和正在安裝的環境。我必須在每個功能中包含一個條件才能通過ICE驗證,即使它們由以下發布元素控制,因爲它們將被安裝到不同服務器上相同的目錄中。有沒有更好的方法,或者這是這種情況的標準做法?
<Publish Event="AddLocal" Value="WebApp"><![CDATA[ServerType="Web"]]></Publish>
<Publish Event="Remove" Value="WebApp"><![CDATA[ServerType<>"Web"]]></Publish>
<Publish Event="AddLocal" Value="DataApp"><![CDATA[ServerType="App"]]></Publish>
<Publish Event="Remove" Value="DataApp"><![CDATA[ServerType<>"App"]]></Publish>
<Publish Event="AddLocal" Value="WebDevConfigFeature"><![CDATA[ServerType="Web" AND Environment="Dev" ]]></Publish>
<Publish Event="Remove" Value="WebDevConfigFeature"><![CDATA[ServerType<>"Web" OR Environment<>"Dev"]]></Publish>
<Publish Event="AddLocal" Value="WebQAConfigFeature"><![CDATA[ServerType="Web" AND Environment="QA" ]]></Publish>
<Publish Event="Remove" Value="WebQAConfigFeature"><![CDATA[ServerType<>"Web" OR Environment<>"QA"]]></Publish>
<Publish Event="AddLocal" Value="WebProdConfigFeature"><![CDATA[ServerType="Web" AND Environment="Prod" ]]></Publish>
<Publish Event="Remove" Value="WebProdConfigFeature"><![CDATA[ServerType<>"Web" OR Environment<>"Prod"]]></Publish>
<Publish Event="AddLocal" Value="AppDevConfigFeature"><![CDATA[ServerType="App" AND Environment="Dev" ]]></Publish>
<Publish Event="Remove" Value="AppDevConfigFeature"><![CDATA[ServerType<>"App" OR Environment<>"Dev"]]></Publish>
<Publish Event="AddLocal" Value="AppQAConfigFeature"><![CDATA[ServerType="App" AND Environment="QA" ]]></Publish>
<Publish Event="Remove" Value="AppQAConfigFeature"><![CDATA[ServerType<>"App" OR Environment<>"QA"]]></Publish>
<Publish Event="AddLocal" Value="AppProdConfigFeature"><![CDATA[ServerType="App" AND Environment="Prod" ]]></Publish>
<Publish Event="Remove" Value="AppProdConfigFeature"><![CDATA[ServerType<>"App" OR Environment<>"Prod"]]></Publish>
<Publish Event="EndDialog" Value="Return">1</Publish>
這聽起來很完美。雖然在CostFinalize之後獲得條件以評估是否有竅門?在我的對話框中,我設置了變量,直到CostFinalize之後才能顯示對話框。 – atevans
您必須使用特徵條件而不是組件條件,然後使用ADDLOCAL和REMOVE控件事件來有條件地打開和關閉特徵。 –
好吧,那就是我現在所處的位置,我關心的是「功能膨脹」。我有8個功能需要使用控制事件進行控制。似乎儘管失敗了,這是標準做法。謝謝你的幫助。 – atevans