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

2023-12-20

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

SetParams CA 使用 UI 序列中生成的动态属性。为了访问延迟 CA 中的数据,我创建了一个即时 CA,它动态提取会话数据并将其放入 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]));

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

我可以访问 wxs 文件中定义的(静态)属性

<Property Id="INSTALL" Secure="yes" /> 

但不是我在 UI 序列中的其他一些立即自定义操作中添加的,如下所示

session[property] = "VALUE"; //eq. property = DATABASENAME

有谁知道为什么我无法读取动态公共财产价值?

注:从this https://stackoverflow.com/questions/9096452/wix-installer-how-to-run-change-with-administrative-privileges-when-run-from-u问题。


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何获取对象的所有属性?

    如何在 JavaScript 中使用反射获取对象的所有属性 循环遍历对象并获取属于该对象且不属于该对象的每个键 一个函数 var properties for var key in obj if obj hasOwnProperty key
  • 如何使用 WiX 卸载时终止进程

    我正在使用 Wix 创建 msi 安装文件 当我卸载应用程序时 它仍然在工作 并且我可以在任务管理器中看到它 我已经尝试过自定义操作的延迟执行 如 Wix 文档中所述 https wixtoolset org documentation m
  • jQuery 检查字体粗细是正常还是粗体

    我使用以下代码设置 font weight 属性 this css font weight normal 现在我想检查一个元素是否具有粗体或正常的字体粗细属性 我该怎么做 你可以使用以下方法得到它 fontWeight this css f
  • 如何在 Eclipse Java 动态 Web 项目中使用 .properties 文件?

    我正在 Eclipse 中开发动态 Web 项目 我创建了一个 properties 文件来存储数据库详细信息 用户名 密码等 我通过右键单击项目和 New gt File 添加它 我使用了Java util包Properties类 但它不
  • 验证服务是否被标记为删除

    有时 当我卸载安装程序 使用 WIX 创建的 时 服务仍标记为删除 用户必须重新启动计算机才能再次安装 我如何验证该服务是否已标记为删除并告诉用户在进行其他安装之前重新启动计算机 一般来说 当某项服务仍然锁定在该服务上 从而阻止 Windo
  • Objective-C 中的属性和实例变量

    我对 Objective C 中的属性和实例变量感到相当困惑 我正在阅读 Aaron Hillegass 的 Mac OS X 的 Cocoa 编程 一切都很合乎逻辑 你可以像这样声明一个类 class Something interfac
  • .properties 或 JSP 编码有问题

    我有jsp文件
  • wix 安装程序/创建网站并分配新的或现有的 Web 应用程序池

    我尝试使用 wix 安装创建一个新网站 没关系 没有问题 但我无法将新的或现有的网络应用程序池分配给新网站 iis website 标记不包含 WebAppPool 属性 我如何将网络应用程序池分配给网站 你可以在下面看到我的代码 感谢您的
  • 如何判断枚举属性是否已设置? C#

    我有一个具有枚举属性的类 如下所示 public class Foo public Color ColorType get set public enum Color Red Green 现在这个类可以像这样初始化 var foo new
  • 在 C# 中轻松创建支持索引的属性

    在 C 中我发现索引属性 http msdn microsoft com en us library aa288464 VS 71 aspx非常有用 例如 var myObj new MyClass myObj 42 hello Conso
  • appSettings 与 applicationSettings。应用程序设置已过时? [复制]

    这个问题在这里已经有答案了 我对在 web config 中保存设置的两种方法有一些疑问 应用程序设置 查看 web config
  • abc.abstractmethod + 属性

    根据docs http docs python org 3 3 whatsnew 3 3 html abc它应该能够结合起来 property and abc abstractmethod所以以下应该在 python3 3 中工作 impo
  • IIS 中的 WIX 和证书

    我正在尝试设置我的安装 以便使用 WIX 配置我的站点及其证书 我可以在 IIS 中查看证书并有权访问 cer 文件 这就是我对证书的了解 所以请简化任何答案 即我不知道我的 BinaryKey 是什么 该证书已安装在计算机上 理想情况下
  • 如何在 ISO C++ 中定义或实现 C# 属性?

    如何在 ISO C 中定义或实现 C 属性 假设以下 C 代码 int id int ID get return id set id value 我知道 C 在编译时将 get 和 set 行转换为 getXXX 和 setXXX 方法 在
  • 为什么事件属性不容易获取?

    我有以下代码 HERE https jsfiddle net 5n2zagjc 2 是可编辑的示例 用法 在输入字段中键入并观看控制台 function test event let keys Object keys event let k
  • JavaFX:使用常量字符串前缀绑定 StringProperty

    我对 JavaFX 中的绑定功能有疑问 我想要的是绑定 2 个字符串属性 但他们的价值观不应该是平等的 让我举个例子 我有一个 StringProperty 代表我的应用程序中最后打开的项目 该值类似于 C temp myProject p
  • 将时间戳变量添加到应用程序属性中的文件夹路径值

    所以我需要在 app properties 文件中设置一个文件夹路径名称值 我还想以当前时间戳命名它 这样当它用于创建文件时 它也会创建文件夹 我目前拥有的不起作用 screenshot events STARTED SUCCEEDED F
  • 从函数体内访问函数对象的属性

    JavaScript 中的函数也是一个对象 并且可以具有属性 那么有没有办法从它自己的函数体内部访问它的属性呢 像这样 var f function console log some way to access f a f a Test f
  • 将属性标记中的值提交到操作表单

    The JSP
  • WiX:如何立即重新启动explorer.exe?

    我是软件打包方面的初学者 我正在使用 cpack Wix 我试图找到有关的有用信息或良好文档util 重启资源 但找不到我的问题的任何答案 Issue 我必须安装一个 ShellExtension 它需要在设置一些注册表值后重新启动 exp

随机推荐