2014-03-27 167 views
0

我想將屬性設置爲安裝目錄。以下代碼不起作用在Wix中設置屬性值

<SetProperty Id="TALKMANSERVICE_MESSAGESCONFIG" Before="InstallInitialize" Value="[INSTALLDIR]\services\MessagesConfig.xml" /> 

那麼,什麼時候可以將此屬性設置爲客戶選擇的安裝目錄呢?

回答

1

將它安排在CostFinalize之後的InstallExecuteSequence中。這是需要的,因爲您使用的值是[INSTALLDIR],它是一個目錄表項(假設它存在於MSI中,並且沒有像INSTALLLOCATION那樣調用其他東西),並且在文件成本計算之後該條目纔會被解析爲屬性。

另外,爲什麼你需要這個屬性?您可以使用[#filekey]讓安裝程序告訴您文件的完整路徑。請參閱:Formatted

•如果發現形式[#filekey]的一個子,它是由文件的 完整路徑取代,作爲鑰匙插入 文件表中的值的FileKey。 [#filekey]的值保留爲空,並且不會被路徑替換爲 ,直到安裝程序運行CostInitialize操作,FileCost 操作和CostFinalize操作。 [#filekey]的值取決於該文件所屬組件的安裝狀態爲 。如果 組件是從源運行的,則該值是該文件的源位置 的路徑。如果組件在本地運行,則 值是安裝 之後文件目標位置的路徑。如果組件具有不存在的操作狀態,則組件的安裝狀態用於確定[#filekey] 值。如果組件的安裝狀態也不存在或爲空,則 [#filekey]會解析爲空字符串,否則將根據組件的安裝狀態解析爲 值。有關檢查組件安裝狀態的更多信息,請參閱 安裝功能,組件,文件。

+0

我試圖CostFinalize很好,但它不工作<的SetProperty編號= 「TALKMANSERVICE_MESSAGESCONFIG」= 「Costfinalize」 值= 「[INSTALLDIR] \服務\ MessagesConfig.xml」 後/>。甚至嘗試過 Msdnexpert

+0

我需要將安裝位置保存在配置文件中。這就是我的目標 – Msdnexpert

+0

只有SecureCustomProperties從用戶界面傳遞到執行。在無提示安裝期間,UI序列也不會被處理。嘗試使用我指出給你的[#filekey]。你不應該首先需要這個SetProperty。 –