2011-04-20 173 views

回答

15

要訪問WiX屬性(例如使用Property元素設置的屬性),請使用會話對象的索引器 。以下是一個示例:

[CustomAction] 
public static ActionResult CustomAction1(Session session) 
{ 
string myProperty = session["MY_PROPERTY"]; 
return ActionResult.Success; 
} 

設置屬性同樣簡單。您將通過引用您的財產的名稱爲 的密鑰來設置該值。下面是一個示例:

[CustomAction] 
public static ActionResult CustomAction1(Session session) 
{ 
session["MY_PROPERTY"] = "abc"; 
return ActionResult.Success; 
} 

如果在設置它時該屬性不存在,它將被創建。同樣,您可以通過將 的值設置爲空來清除屬性。從自定義操作創建或更改屬性值 不會阻止安裝程序在安裝日誌中顯示 中的那些屬性。所以,如果一個屬性擁有應該隱藏的信息,那麼您最好先在您的WiX標記中聲明它並將其隱藏屬性 設置爲yes。

<Property Id="MY_PROPERTY" Hidden="yes" /> 
0

你不能。只有Win32 DLL和VBScript 立即操作具有對安裝程序屬性的寫入權限。任何其他自定義操作類型只能通過其命令行或通過CustomActionData接收屬性。

這裏是一個C++ DLL自定義操作教程:http://www.codeproject.com/KB/install/msicustomaction.aspx

獲取和設置Windows Installer屬性,你可以使用MsiGetProperty()MsiSetProperty()

+0

如果您使用DFT編寫託管CA,該怎麼辦? – 2011-04-21 12:20:24

+1

是的,答案很好,但只是部分正確。安裝程序類(從Visual Studio)不能訪問屬性,因爲沒有安裝程序句柄的編組或遠程處理。然而,更好的託管自定義操作解決方案通過抽象如Session [「property」]或通過安裝程序句柄上的直接P/Invoke提供訪問。 – 2011-04-22 12:35:29

相關問題