2013-03-27 90 views
1

所以..我有這個CA錯誤獲取屬性

<CustomAction Id="InstallSetProp" Property="CustomActionData" Value="<some other data that's formatted exactly the same> /webconftmploc=&quot;[WEBCONFIGTMPLOC]&quot;" />

然而,當這個CA被調用時,顯示一個消息框,說:「錯誤獲取屬性」,這是假的,因爲財產是正確設置和以後訪問。 (除了搞砸我試圖完全自動化安裝的事情之外,什麼都不做)我通過一個啓動程序運行.msi,啓動/qr以幫助完成此操作。

當刪除/webconftmploc=&quot;[WEBCONFIGTMPLOC]&quot;時,消息框錯誤未顯示,記錄[WEBCONFIGTMPLOC]是絕對文件路徑或「未設置」,我想知道是否有任何特殊原因會導致此行爲發生。

但是,我更感興趣的是任何可能的方式來抑制或修復這個動作,當然。

+0

事實證明,這個錯誤信息來自一個不同的CA,它共享'<一些其他格式完全相同的數據>,並且不會識別其後的額外屬性。幸運的是_seems_可以像Rob的帖子所描述的那樣傳遞變量,並且仍然可以同時訪問CustomActionData中的'shared'變量 - 但不確定是否是最佳實踐。 – Izzy 2013-03-28 10:44:02

回答

2

CustomAction只設置屬性。它不可能顯示錯誤消息。如果任何屬性沒有定義,他們只會解決空白。其他東西必須顯示錯誤信息。

但是,由於您使用了特殊名稱CustomActionData,因此您似乎嘗試將數據傳遞到延遲自定義操作。雖然這不是使用CustomActionData的方式。相反,Property屬性應該設置爲CustomActionId,您要傳遞數據也要。說,使用該屬性值是一樣的東西的自定義操作:

<CustomAction Id='MyDeferredCustomAction' Execute='deferred' ... /> 

要通過它,你要發送的字符串,你可以寫:

<CustomAction Id="InstallSetProp" 
       Property="MyDeferredCustomAction" 
       Value="<some other data that's formatted exactly the same> /webconftmploc=&quot;[WEBCONFIGTMPLOC]&quot;" /> 

注意,第二個自定義動作設置與延期自定義操作名稱相同的屬性:MyDeferredCustomActionMyDeferredCustomAction可以通過神奇的CustomActionData屬性訪問值<some other data that's formatted exactly the same> /webconftmploc="value_of_WEBCONFIGIMPLOC_goes_here"。你可以在這裏閱讀更多關於這方面的信息:http://msdn.microsoft.com/en-US/library/2w2fhwzz(v=VS.80).aspx

+0

我發誓WiX標籤應該解析爲你的名字,Rob。 :) – Izzy 2013-03-28 08:53:20

+0

吶,還有很多其他人在WiX工具集上做出了出色的工作。我很高興成爲他們中的一員。 :) – 2013-03-28 12:22:29