Is there a way to determine whether a DTF custom action was called via an
immediate or deferred action other than a try catch around accessing the
inappropriate session data and handling the "Cannot access session details from
a non-immediate custom action" exception?
The following will throw a System.Reflection.TargetInvocationException "Cannot
access session details from a non-immediate custom action" if called from a
deferred action.
if (session["InvokeTest1"] != null)
{
// This is an immediate action
session.Log("This is an immediate action. Value={0}",
session["InvokeTest1"]);
}
However the following works fine in either an immediate or deferred action
CustomActionData cad = session.CustomActionData;
if (cad.Count > 0)
{
session.Log("This is a deferred action with {0}
parameters", cad.Count);
}
So how can I check which type I am being called from instead of handling the
exception?
I want to create a general purpose action that can be called in either instance
and am not sure the best way to do this.
{Neil had a good post at:
http://blog.deploymentengineering.com/2009/02/msi-tip-how-to-reuse-customaction-for.html
on how to reuse a custom action for deferred and rollback operations and I'd
like to go one step further}
Thanks - TopCat
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users