Is there alternative way to access session details in deferred custom action?

后端 未结 2 508
终归单人心
终归单人心 2020-12-24 05:56

I have a custom action and need to get below values for copying some parts from installation folder to VS2010 folder

  1. VS2010 directory path (VS2010DEVENV<
相关标签:
2条回答
  • 2020-12-24 06:38

    This must be helpful. Pay special attention to the bottom of the page, a guideline of 2 steps how to pass values via CustomActionData.

    Here is the excerpt:

    To write the value of a property into the installation script for use during a deferred execution custom action:

    1. Insert a small custom action into the installation sequence that sets the property of interest to a property having the same name as the deferred execution custom action. For example, if the primary key for the deferred execution custom action is "MyAction" set a property named "MyAction" to the property X which you need to retrieve. You must set the "MyAction" property in the installation sequence before the "MyAction" custom action. Although any type of custom action can set the context data, the simplest method is to use a property assignment custom action (for example Custom Action Type 51).
    2. At the time when the installation sequence is processed, the installer will write the value of property X into the execution script as the value of the property CustomActionData.
    0 讨论(0)
  • 2020-12-24 06:41

    Additional details: multiple property values can be passed by using the following syntax in a "Custom Action Type 51" (which is basically just a custom action that sets a property value):

    PROPERTY1=Value1;PROPERTY2=Value2;PROPERTY3=...
    

    Values can be retrieved from within the custom action like this:

    string prop1 = session.CustomActionData["PROPERTY1"];
    string prop2 = session.CustomActionData["PROPERTY2"];
    

    Here's an example that sets property values for a custom action with ID "MyCustomAction":

    <CustomAction
      Id="SetCustomActionPropertyValues"
      Property="MyCustomAction"
      Value="INSTALLDIR=[INSTALLDIR];EXECUTABLE=[#MyExecutableFile]" />
    

    (read this MSDN article for more details on the formatted syntax which in this example is used to retrieve the install location of a file with ID "MyExecutableFile")

    0 讨论(0)
提交回复
热议问题