首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有其他方法访问延迟自定义操作中的会话详细信息?

是否有其他方法访问延迟自定义操作中的会话详细信息?
EN

Stack Overflow用户
提问于 2011-09-05 09:49:43
回答 2查看 13.9K关注 0票数 34

我有一个自定义操作,需要获取以下值,以便将某些部件从安装文件夹复制到VS2010文件夹

  1. VS2010目录路径(VS2010DEVENV属性)
  2. 安装路径(INSTALLLOCATION属性)

为了提供足够的特权,我将自定义操作设置为Execute='deferred' Impersonate='no'。但在运行安装程序时,它会记录消息:

无法从非即时自定义操作访问会话详细信息。

似乎我们不能在“延迟”自定义操作(即session["VS2010DEVENV"])中访问属性。

还有其他方法可以根据需要检索这些值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-05 10:34:00

一定很有帮助。特别注意页面底部,一个关于如何通过CustomActionData传递值的两个步骤的指南。

以下是节选:

若要将属性值写入安装脚本,以便在延迟执行自定义操作期间使用:

  1. 在安装序列中插入一个小的自定义操作,将感兴趣的属性设置为具有与延迟执行自定义操作相同名称的属性。例如,如果延迟执行自定义操作的主键是"MyAction“,则将名为"MyAction”的属性设置为您需要检索的属性X。您必须在"MyAction“自定义操作之前的安装序列中设置"MyAction”属性。尽管任何类型的自定义操作都可以设置上下文数据,但最简单的方法是使用属性分配自定义操作(例如,自定义操作类型51)。
  2. 在处理安装序列时,安装程序将将属性X的值作为属性CustomActionData的值写入执行脚本。
票数 34
EN

Stack Overflow用户

发布于 2014-05-19 18:56:30

其他详细信息:可以在“自定义操作类型51”中使用以下语法传递多个属性值(基本上是设置属性值的自定义操作):

代码语言:javascript
复制
PROPERTY1=Value1;PROPERTY2=Value2;PROPERTY3=...

可以从自定义操作中检索值,如下所示:

代码语言:javascript
复制
string prop1 = session.CustomActionData["PROPERTY1"];
string prop2 = session.CustomActionData["PROPERTY2"];

下面是一个设置ID为“MyCustomAction”的自定义操作的属性值的示例:

代码语言:javascript
复制
<CustomAction
  Id="SetCustomActionPropertyValues"
  Property="MyCustomAction"
  Value="INSTALLDIR=[INSTALLDIR];EXECUTABLE=[#MyExecutableFile]" />

(有关格式化语法的更多细节,请阅读http://msdn.microsoft.com/library/aa368609.aspx,该语法在本例中用于检索ID为“MyExecutableFile”的文件的安装位置)

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7306367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档