REMOVE |
The "REMOVE" property is a standard windows installer one. This documentation will tell you that it must be sequenced after the "InstallValidate" action.
Consider this code:
<$JsCa Binary="Popup.js"> <$JsCaEntry "EarlyInUninstall"> CaMsgBox( "I",'Want this popup to appear very early in uninstall.'); <$/JsCaEntry> <$/JsCa> <$JsCaSetup Binary="Popup.js" Entry="EarlyInUninstall" Seq="LaunchConditions-" CONDITION=^<$CONDITION_UNINSTALL_ONLY>^ Type="immediate">
If you try the above code you will find that during uninstall it may or may not appear depending on how the uninstall was invoked!
The dialog will be displayed unless the maintenance mode dialog is displayed. The reason is until the maintenance mode dialog has been processed the action to be performed is unknown (the user may not wish to uninstall). That is the "REMOVE" property does not contain "ALL" so the custom actions condition is false.
In actual fact, that it works as all is a side effect that should not be relied apon, the documentation states that this property should not be used until after the "InstallValidate" action has executed.