我有一個產品包含幾個功能(A,B,C),它們都共享一個共同的Windows服務組件。 問題在於存在一個最終情況:如果只安裝了一個特定功能(功能C)和一個「遺留模式」標誌(某些保存在註冊表中的屬性),那麼這個Windows服務組件應該未安裝或其啓動類型應從「自動」更改爲「禁用」。我更喜歡禁用啓動類型解決方案的「未安裝」解決方案。由幾個功能共享組件的條件安裝
在其他所有情況下:除了此功能(C)之外還安裝了其他功能(A,B),或未設置'legacy-mode'標誌時,應安裝windows-service組件並啓動類型應設置爲「自動」。
如果產品已重新配置,應重新評估條件並針對兩種情況採取適當的措施。
的問題是,它是無法使用的功能在窗口服務組件的條件安裝態,因爲這兩個功能安裝狀態和組件的狀態在同一CostFinalize作用來評價(見:http://www.joyofsetup.com/2008/04/09/feature-states-in-component-conditions/) 此外,使用自定義操作中刪除組件的方法不起作用,因爲非傳遞組件不能從現有功能中刪除,除非這是主要升級(請參閱http://blogs.msdn.com/b/heaths/archive/2010/02/15/test-your-conditions.aspx)
我可以將組件分離爲不同的功能,並嘗試編寫自定義操作,該操作基於CostFinalize操作之後的其他功能的安裝狀態設置此功能的安裝狀態,但是該接口需要compli爲不同場景安裝邏輯(安裝,重新配置,回滾,卸載)並使其更容易出錯。
你會建議什麼?
如果您的評論解決了您的問題,您應該將其作爲回答發佈並接受,以便其他人在遇到類似問題時可以更輕鬆地找到解決方案。 – Netfangled
好吧,我現在就做到了。謝謝。 –