If you want to pass property or a directory in Custom action then you can use Set Property Custom Action and place it after Cost Finalize. Name the property with the name of the Custom Action you want to pass it to.
Deferred actions do NOT have access to the MSI session objects which means that if you try to get the value of a property set by the installer like:
Val = Session.Property( "Property1" )
in a VBScript custom action which is deferred, it will return null. The original value of Property1 during deferred custom actions is lost.
Here is where CustomActionData comes to the rescue, let's see how this works...
Now create Custom Action with the name defined earlier (Property1):
Call VBScript from embedded code, there you can use the above set property by Session.Property. You can pass more that one property, by set property CA, by separating it with ";" Also while retrieving these values you need to split the variable in you retrieved from Session.Property.
Val=Session.Property("CustomActionData") Args = Split( Val, ";" ) Value1 = Args(0) Value2= Args(1)
If you are running this CA in Immediate Execution then you need to directly pass the property name.