Session 是否有其他方法可以访问延迟自定义操作中的会话详细信息?
我有一个自定义操作,需要获取以下值,以便将某些部件从安装文件夹复制到VS2010文件夹Session 是否有其他方法可以访问延迟自定义操作中的会话详细信息?,session,wix,windows-installer,custom-action,Session,Wix,Windows Installer,Custom Action,我有一个自定义操作,需要获取以下值,以便将某些部件从安装文件夹复制到VS2010文件夹 VS2010目录路径(VS2010DEVENVproperty) 安装路径(INSTALLLOCATIONproperty) 为了赋予足够的权限,我将自定义操作设置为Execute='deferred'Impersonate='no'。但在运行安装程序时,它记录了以下消息: 无法从非即时自定义操作访问会话详细信息 似乎我们无法访问“延迟”自定义操作中的属性(即会话[“VS2010DEVENV”]) 是否有其他
VS2010DEVENV
property)INSTALLLOCATION
property)Execute='deferred'Impersonate='no'
。但在运行安装程序时,它记录了以下消息:
无法从非即时自定义操作访问会话详细信息
似乎我们无法访问“延迟”自定义操作中的属性(即会话[“VS2010DEVENV”]
)
是否有其他方法可以根据需要检索这些值?肯定会有帮助。请特别注意页面底部,这是关于如何通过传递值的两个步骤的指南
以下是摘录:
将属性值写入安装脚本以供使用
在延迟执行自定义操作期间:
其他详细信息:在“自定义操作类型51”(基本上只是设置属性值的自定义操作)中使用以下语法可以传递多个属性值: 可以从自定义操作中检索值,如下所示:
string prop1 = session.CustomActionData["PROPERTY1"];
string prop2 = session.CustomActionData["PROPERTY2"];
下面是一个为ID为“MyCustomAction”的自定义操作设置属性值的示例:
(阅读此示例中用于检索ID为“MyExecutableFile”的文件的安装位置的格式化语法的更多详细信息。)感谢您的帮助。CustomActionData属性运行良好。但我想知道如何传递多个值。在我的例子中,我需要VS2010和安装文件夹的值。如果可能的话,您能给出一些提示吗?您必须解析在延迟自定义操作中传递的字符串。例如,您可以传递
[VS2010DEVENV]|[INSTALLLOCATION]
,并在延迟CA中按|
拆分CustomActionData。如果您对CA使用DTF,它具有类似字典的CustomActionData属性,您可以像vs2010=[VS2010DEVENV]那样传递它;location=[INSTALLLOCATION]
,像session.CustomActionData[“vs2010”]
和session.CustomActionData[“location”]
一样获取它!这完全解决了我的问题。非常感谢您的建议。CustomActionData链接已断开(页面上显示“此主题不再可用”)。但这是指在正确的方向,谢谢我!有没有办法将安装脚本中的所有属性发送到自定义操作?我已经使用了这个方法,但是我无法获得INSTALLLOCATION或INSTALLDIR属性,尽管我收到了TARGETDIR属性。非常感谢这个具体的例子。正是我需要的。未来的访问者还应查看更多详细信息和示例。
string prop1 = session.CustomActionData["PROPERTY1"];
string prop2 = session.CustomActionData["PROPERTY2"];
<CustomAction
Id="SetCustomActionPropertyValues"
Property="MyCustomAction"
Value="INSTALLDIR=[INSTALLDIR];EXECUTABLE=[#MyExecutableFile]" />