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

Reply via email to