change installer properties in C# custom action

Bogdan Verbenets picture Bogdan Verbenets · Apr 20, 2011 · Viewed 9.6k times · Source

How to change installer properties in my C# custom action?

Answer

Bogdan Verbenets picture Bogdan Verbenets · Apr 26, 2011

To access a WiX property, such as those set with the Property element, use the Session object's indexer. Here is an example:

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

Setting properties is just as easy. You'll set the value by referencing the key with the name of your property. Here's an example:

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

If the property doesn't exist when you set it, it will be created. Similarly, you can clear a property by setting its value to null. Creating or changing property values from a custom action doesn't stop the installer from displaying those properties in the install log. So, if a property holds information that ought to be hidden, you're better off declaring it in your WiX markup first and setting its Hidden attribute to yes.

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