我已經創建了一個基本的MSI安裝程序,使用InstallShield 2014作爲服務器/客戶端程序,並且必須根據在我們的服務器之前安裝的數據庫的許可證密鑰動態地隱藏功能應用正在安裝。我爲需要隱藏的功能創建了條件,將InstallLevel設置爲0(如果它們未獲得許可),將InstallLevel設置爲1(如果它們已獲得許可)。我在SQL登錄對話框之後獲取許可證密鑰(因爲安裝程序不知道要查看哪個數據庫),但條件是在創建對話框之前運行的CostFinalize操作期間評估的。因此,在獲取許可證密鑰並運行一些其他自定義操作以確定每個功能的可用性之後,我會在顯示CustomSetup對話框之前調用CostFinalize操作。Installshield 2014 Basic MSI隱藏功能動態不安裝功能
我正在獲取需要顯示的功能的正確行爲,並且您可以在對話框中選擇或取消選擇所述功能,但是,當執行安裝時,所選功能未安裝....並且日誌文件表示該功能未被選中進行安裝,即使用戶明確選擇了該功能。爲什麼會發生這種情況?是否有另一種動態隱藏功能的方法(我在InstallScript操作中嘗試了FeatureSetData函數,但無濟於事)?
此外,在向功能添加條件後,只要我嘗試從程序和功能應用程序中卸載程序,就會收到錯誤1606無法訪問網絡位置。這就像註冊表項變得混亂,當功能的條件...任何幫助將不勝感激。
起初我只是改變了依賴性檢查整個項目,但後來發現它僅適用於'新components',未來組件您我會補充。所以我去了「組件」部分並逐個手動調整每個功能。而令我驚訝的是,它的工作。謝謝,我沒有選擇/想法! – Daneo 2016-01-12 10:16:25