jch*_*cha 28 session windows-installer custom-action wix
我有一个自定义操作,需要低于将安装文件夹中的某些部分复制到VS2010文件夹的值
VS2010DEVENV属性)INSTALLLOCATION属性)为了提供足够的权限,我将自定义操作设置为Execute='deferred' Impersonate='no'.但是在运行安装程序时,它会记录以下消息:
无法从非立即自定义操作访问会话详细信息
看来我们无法在"延期"自定义操作中访问属性(即session["VS2010DEVENV"])
有没有其他方法可以根据需要检索这些值?
Yan*_*nko 32
这一定很有帮助.请特别注意页面底部,如何通过CustomActionData传递值的2个步骤的指导.
以下是摘录:
要将属性的值写入安装脚本,以便在延迟执行自定义操作期间使用:
- 将一个小的自定义操作插入到安装序列中,该序列将感兴趣的属性设置为与延迟执行自定义操作同名的属性.例如,如果延迟执行自定义操作的主键是"MyAction",则将名为"MyAction"的属性设置为您需要检索的属性X. 您必须在"MyAction"自定义操作之前在安装序列中设置"MyAction"属性.虽然任何类型的自定义操作都可以设置上下文数据,但最简单的方法是使用属性分配自定义操作(例如,自定义操作类型51).
- 在处理安装序列时,安装程序会将属性X的值作为属性CustomActionData的值写入执行脚本.
ber*_*hof 13
其他详细信息:可以使用"自定义操作类型51"中的以下语法传递多个属性值(这基本上只是设置属性值的自定义操作):
PROPERTY1=Value1;PROPERTY2=Value2;PROPERTY3=...
Run Code Online (Sandbox Code Playgroud)
可以从自定义操作中检索值,如下所示:
string prop1 = session.CustomActionData["PROPERTY1"];
string prop2 = session.CustomActionData["PROPERTY2"];
Run Code Online (Sandbox Code Playgroud)
以下是为ID为"MyCustomAction"的自定义操作设置属性值的示例:
<CustomAction
Id="SetCustomActionPropertyValues"
Property="MyCustomAction"
Value="INSTALLDIR=[INSTALLDIR];EXECUTABLE=[#MyExecutableFile]" />
Run Code Online (Sandbox Code Playgroud)
(有关格式化语法的更多详细信息,请阅读此MSDN文章,在此示例中,该语法用于检索ID为"MyExecutableFile"的文件的安装位置)
| 归档时间: |
|
| 查看次数: |
11215 次 |
| 最近记录: |