Search code examples
c#wixwindows-installercustom-action

change installer properties in C# custom action


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


Solution

  • 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" />