2
作爲基於WiX的安裝的一部分,我需要請求用戶輸入屬性JAVA_LOC的值,我將把它存儲爲註冊表值(它不是我想要創建的目錄)但是,如果我使用Publish Event =「SetTargetPath」,則鏈接器說我必須將JAVA_LOC聲明爲組件層次結構中的一個目錄。如果我這樣做,我可以記錄路徑的事情沒關係。但是,事實證明,如果之後運行「更改」安裝,則將忽略新路徑值,並將JAVA_LOC重置爲我強制創建的JAVA_LOC目錄的位置。WiX - 驗證不是安裝目錄的路徑?
如何驗證用戶輸入的路徑不適用於安裝 目錄?請記住,我只是試圖將它存儲在註冊表中,而不是真的爲它創建一個目錄。
戴夫
謝謝,克里斯托弗。這很好。是的,該目錄沒有創建。問題是最後一部分:我在第一次安裝時正確地將JAVA_LOC值存入註冊表中。如果我在下一步執行「更改」安裝並更改UI值,那麼在執行日誌中看到我的新值將被忽略時,將將JAVA_LOC設置爲目錄樹loc並在執行期間進入註冊表。目錄聲明沒有「安全」。任何想法如何讓它不忽略這裏的JAVA_LOC屬性? – 2012-03-22 19:31:46
啊。目錄屬性不需要標記爲安全,這是自動的。問題是因爲你沒有創建目錄並安裝任何東西,MSI不會記住目錄的位置。如果安裝了某些東西,它只會變得粘稠(不可變)。除了在ControlEvent上進行中繼(修復期間用戶界面不會觸發),您需要在CostInitialize之前使用Type51 CA,或者在安裝CostFinalize之後使用Type35 CA來獲取您需要的值的JAVA_LOC目錄屬性,而不是默認創作的值。 y – 2012-03-22 19:38:35
您還需要將註冊表中的值讀回到屬性中作爲CA的輸入。有關更多詳細信息,請參閱以下內容:http://robmensching.com/blog/posts/2010/5/2/The-WiX-toolsets-Remember-Property-pattern – 2012-03-22 19:39:53