Question

I have a WiX installer that has per-feature custom actions that need to be executed on uninstall. Right now I'm running into a problem where the actions execute whether or not the feature was actually installed by the user. The custom actions fail because they expect certain resources to exist and then the entire install is stuck in a broken state.

What is the correct way to run a custom action if and only if its related feature is being uninstalled? I have included the snippet that I'm currently using below, if it helps.

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") AND (&FeatureName<=2)]]></Custom>
Was it helpful?

Solution

Try

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles">
   <![CDATA[(NOT UPGRADINGPRODUCTCODE) 
             AND (&FeatureName=2) AND (!FeatureName=3)]]>
</Custom>

See MSDN for details of condition syntax and examples

OTHER TIPS

It sounds like the custom actions are broken and not handling missing resources correctly.

How would the CA's handle it if a user manually removes files? What happens if a user deletes the application folder, and then tries to remove it via ARP?

What happens if a user just removes a feature, without uninstalling the entire application? You'll be better off long-term fixing the CA's.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top