CAImmediate will be called whenever the transaction succeeds (whenever CARollback doesn't ultimately get called) and will never be called when the transaction fails (whenever CARollback does get called), since the rest of InstallExecuteSequence is abandoned after rollback occurs.
Those two actions will always (install, removal, upgrade, repair, patch, whatever) be mutually exclusive of each other. CARollback could be called if CADeferred fails, if some other action that happens to get the same sequence number as either CADeferred or CARollback fails (whether or not CADeferred was ever called or not), or if any other checked activity fails before InstallFinalize starts running the commit actions). Yes, two actions can have the same sequence number (it often happens with some merge modules or other libraries that try to get actions right in front of InstallFinalize, a very popular place to be). Yes, there is an ICE warning when that happens. Yes, it is perfectly legal. No, there is no way to know the relative order of execution of the actions that share the same sequence number. No, you should never have the rollback and the deferred action pair share the same sequence number, as there is then no way to ensure that the rollback would be called if the deferred action fails. -----Original Message----- From: Tony [mailto:yellowjacketl...@gmail.com] Sent: Wednesday, November 11, 2009 5:15 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Rollback and uninstall sequences... Thanks Blair/Richard. That helps. So, if I have these custom actions and sequence <CustomAction Id="CARollback" BinaryKey="zzz.dll" DllEntry="MyRollbackFunction" Execute="rollback"/> <CustomAction Id="CADeferred" BinaryKey="zzz.dll" DllEntry="MyDeferredFunction" Execute="deferred"/> <CustomAction Id="CAImmdediate" BinaryKey="zzz.dll" DllEntry="MyImmediateFunction" Execute="immediate"/> <InstallExecuteSequence> <Custom Action='CARollback' Before='CADeferred'/> <Custom Action='CADeferred' Before='InstallFinalize'/> <Custom Action='CAImmediate' After='InstallFinalize' /> </InstallExecuteSequence> Will CAImmediate ever get called during Rollback? Uninstall? CARollback will only be called if rollback occurs in, or after, CADeferred is called, correct? On Wed, Nov 11, 2009 at 2:29 AM, Blair <os...@live.com> wrote: > For removal, people sometimes take the deferred action that was marked as -- Tony ---------------------------------------------------------------------------- -- Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users