Search code examples
wixcustom-action

WiX - Set multiple properties in custom action


I have several properties to set when ALLUSERS is 1:

<CustomAction Id="CA1" Property="InstallDir" Value="[MYINSTALLDIR]" Execute="immediate" />
<CustomAction Id="CA2" Property="Version" Value="2.0" Execute="immediate" />
<CustomAction Id="CA3" Property="x" Value="x" Execute="immediate" />
<CustomAction Id="CA4" ... />
<CustomAction Id="CA5" ... />

<InstallExecuteSequence>
    <Custom Action="CA1" After="AppSearch">ALLUSERS=1</Custom>      
    <Custom Action="CA2" After="AppSearch">ALLUSERS=1</Custom>      
    <Custom Action="CA3" After="AppSearch">ALLUSERS=1</Custom>      
    <Custom Action="CA4" After="AppSearch">ALLUSERS=1</Custom>      
    <Custom Action="CA5" After="AppSearch">ALLUSERS=1</Custom>      
</InstallExecuteSequence>

This is working but I'm wondering if there is more concise way instead of tons of CAs and stupid IDs, something like:

<CustomAction Id="CA" Property="InstallDir=[MYINSTALLDIR]; Version=2.0; x=x; y=y; z=z ..." Execute="immediate" />

<InstallExecuteSequence>
    <Custom Action="CA" After="AppSearch">ALLUSERS=1</Custom>      
</InstallExecuteSequence>

Is this possible?


Solution

  • You could write a C++ custom action that calls MsiSetProperty() a bunch of times. There will technically be more risk for failure though. Once setup, a bunch of set property CA's is usually not that horrible.