gpt4 book ai didi

properties - Wix - 从其他 CA 中动态创建的延迟自定义操作访问属性值

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

我正在制作一个必须配置它安装的 Web 服务的安装程序。它动态生成属性,这些属性保存在 UI 序列中从用户收集的数据、安装服务并设置参数。

SetParams CA 使用在 UI 序列中生成的动态属性。为了访问延迟 CA 中的数据,我创建了一个即时 CA,它动态提取 session 数据并将其放入 CustomActionData。

<CustomAction Id='SaveParams' BinaryKey='Setup.CustomAction' DllEntry='SaveParameters' Execute='immediate'  Return='check'/>
<CustomAction Id='SetParams' BinaryKey='Setup.CustomAction' DllEntry='SetParameters' Execute='deferred' Impersonate='no' Return='check' />

<Custom Action='SaveParams' Before='SetParams'><![CDATA[REMOVE <> "ALL"]]></Custom>
<Custom Action='SetParams' Before='InstallFinalize'><![CDATA[REMOVE <> "ALL"]]></Custom>

以下是自定义操作中 SaveParameters 方法的一部分
customActionData.Append(string.Format(CultureInfo.InvariantCulture, "{0}={1};", propertyName, session[propertyName]));

这种方法有效!
当从 admin cmd session[propertyName] 启动时返回正确的值,但是当我从非提升的 cmd 提示符运行安装程序更改时,我无法访问即时 CA 中的属性值 - session[propertyName] 返回空字符串?!

我可以访问 wxs 文件中定义的(静态)属性
<Property Id="INSTALL" Secure="yes" /> 

但不是我在像这样的 UI 序列中的其他一些即时自定义操作中添加的那个
session[property] = "VALUE"; //eq. property = DATABASENAME

有谁知道为什么我无法读取动态公共(public)属性(property)值?

注意:从 this 分拆问题。

最佳答案

解决此问题有两种选择。
1. 读取要从执行序列移动到 UI 序列的属性的立即操作
2. 执行阶段的操作可以访问问题中所述的安全属性中的数据。
如果属性是在 CA 中动态创建的,则必须将它们添加到 SecureCustomProperties 系统属性中。分隔符字符是';'。

关于properties - Wix - 从其他 CA 中动态创建的延迟自定义操作访问属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207744/

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