gpt4 book ai didi

wix - 如何使用 WiX 将 CustomActionData 传递给 CustomAction?

转载 作者:行者123 更新时间:2023-12-02 01:46:03 24 4
gpt4 key购买 nike

如何在 CustomActionData 上设置属性通过延迟自定义操作检索?

最佳答案

延迟的自定义操作无法直接访问安装程序属性 ( reference )。事实上,只有 CustomActionData 属性

session.CustomActionData

以及列出的其他方法和属性 here在 session 对象上可用。

因此,对于延迟自定义操作来检索诸如 INSTALLLOCATION 之类的属性,您必须使用类型 51 自定义操作(即设置属性自定义操作)来传递该信息并您将通过 session.CustomActionData 使用 CustomAction 的 C# 代码中的数据。 (参见 referencereference )

下面是类型 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=value 对。 (重要要点:CustomActionData 是通过设置与使用自定义操作的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com