- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 CustomActionData 上设置属性通过延迟自定义操作检索?
最佳答案
延迟的自定义操作无法直接访问安装程序属性 ( reference )。事实上,只有 CustomActionData
属性
session.CustomActionData
以及列出的其他方法和属性 here在 session 对象上可用。
因此,对于延迟自定义操作来检索诸如 INSTALLLOCATION
之类的属性,您必须使用类型 51 自定义操作(即设置属性自定义操作)来传递该信息并您将通过 session.CustomActionData
使用 CustomAction 的 C# 代码中的数据。 (参见 reference 和 reference )
下面是类型 51 自定义操作 (CustomAction1
) 的示例,它将设置可在 CustomAction2
中检索的属性。
<CustomAction Id="CustomAction1"
Property="CustomAction2"
Value="SomeCustomActionDataKey=[INSTALLLOCATION]"
/>
请注意,Property
属性名称为 CustomAction2
。这个很重要。 类型 51 操作的 Property 属性值必须与使用 CustomActionData
的自定义操作的名称相同/相同。(请参阅 reference)
注意到 Value
属性键/值对中的名称 SomeCustomActionDataKey
了吗?在使用自定义操作 (CustomAction2
) 的 C# 代码中,您将使用以下表达式从 CustomActionData
查找该属性:
string somedata = session.CustomActionData["SomeCustomActionDataKey"];
用于从 CustomActionData
检索值的键不是类型 51 自定义操作的 Property
属性中的值,而是来自
对。 (重要要点:Value
属性中的 key=valueCustomActionData
是通过设置与使用自定义操作的 Id 同名的安装程序属性来填充的,但 CustomActionData
键不是安装程序属性.)(参见reference)
在我们的场景中,使用的自定义操作是一个延迟的自定义操作,定义如下:
<Binary Id="SomeIdForYourBinary" SourceFile="SomePathToYourDll" />
<CustomAction Id="CustomAction2"
BinaryKey="SomeIdForYourBinary"
DllEntry="YourCustomActionMethodName"
Execute="deferred"
Return="check"
HideTarget="no"
/>
配置InstallExecuteSequence
当然,使用自定义操作 (CustomAction2
) 必须在类型 51 自定义操作 (CustomAction1
) 之后运行。所以你必须像这样安排它们:
<InstallExecuteSequence>
<!--Schedule the execution of the custom actions in the install sequence.-->
<Custom Action="CustomAction1" Before="CustomAction2" />
<Custom Action="CustomAction2" After="[SomeInstallerAction]" />
</InstallExecuteSequence>
关于wix - 如何使用 WiX 将 CustomActionData 传递给 CustomAction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11233267/
我在将包含分号的数据设置为 CustomActionData 属性时遇到问题。 默认情况下,CustomActionData 类使用分号作为 DataSeparator,当它包含分号时,它会破坏我的数
我尝试从 C++ dll 中的 CustomActionData 属性获取数据,但在延迟序列期间它始终为空。如果我在 UI 序列期间执行的 CA 中使用完全相同的代码,一切都会很好。
关于 CustomActionData 的 ICE03(字符串溢出)问题的回答尝试很少,但我似乎无法确定/得出解决此问题的正确(或接受)做法。 我目前的解决方案是通过保持键名和属性名都简短来减少键值对
在 .net“安装项目”中,可以在安装向导中添加一个或多个自定义屏幕,其中包含用户可以输入其他安装参数的字段(例如文本框)。 然后可以将自定义字段传递到“自定义操作”类库项目,以处理用户字段。下图显示
我又一次陷入了一个问题,这可能很容易解决。 我想扩展一个使用 WiX 创建的设置,以更改已安装程序的配置文件。为此,我创建了一个 CustomAction。为了能够更改配置文件,我需要知道它在我的 C
如何在 CustomActionData 上设置属性通过延迟自定义操作检索? 最佳答案 延迟的自定义操作无法直接访问安装程序属性 ( reference )。事实上,只有 CustomActionDa
我正在使用 WiX v3.14 构建 .Net Core 安装程序。我有一个 CustomAction - UpdateJsonAppSettings - 用 C# 编写,旨在更新作为安装一部分的 a
我是一名优秀的程序员,十分优秀!