我需要将数据从一个延迟的 .NET 自定义操作传递到另一个,但我不知道该怎么做。
延迟的自定义操作无法访问 Windows Installer session ,因此 session 属性不是一个选项。目标延迟自定义操作已经采用了从早期的即时自定义操作设置的自定义操作数据,但我似乎无法从源延迟操作中修改它。
我也尝试过在自定义操作类上使用静态属性,但正如预期的那样,这也不起作用。
我可以在源操作中写入注册表并在目标操作中将其读回,但这似乎有些老套。在延迟的自定义操作之间传递数据肯定有更标准的方法吗?
最佳答案
是的,好问题。
Surely there is a more standard way to pass data between deferred custom actions?
没有,据我所知,没有这样的标准体系。
老实说,延迟操作可以通过 CustomActionData
读取属性已经是奇迹了——这是在生成执行脚本时通过某种元数据完成的。延迟操作只能访问少数有限的属性,并且它不能与 MSI 数据库交互。
参见 Obtaining Context Information for Deferred Execution Custom Actions更多。这不是 WiX 限制,而是 MSI。
如您所说,查看临时文件夹或注册表 - 尽管不一定方便或好用 - 如果仔细完成,它会非常好地工作。
如果您有兴趣了解更多有关 MSI 架构的信息,这是一个很好的链接:http://bonemanblog.blogspot.co.uk/2005/10/custom-action-tutorial-part-i-custom.html
关于.net - 在延迟的自定义操作之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594036/