variables - 如何为 Wix Bundle Log Element 设置自定义值?
问题描述
如果我输入一个硬编码的值,它可以正常工作
<Log PathVariable="C:\myProjectDir\myLogs\log.txt"/>
但是如果我创建一个单独的变量并替换硬代码,它就不起作用
<Log PathVariable="[LogLocation]"/>
<Variable Name="LogLocation" bal:Overridable="no" Type="string" Value="C:\myProjectDir\myLogs\log.txt" Persisted="yes"/>
我发现了一些东西,<WixVariable Id="WixBundleLog"/>
但我真的不知道如何使用它。
我的最终目标是我有一个引导程序应用程序,我想更改创建我的 msi 和 exe 安装日志的位置
我能够使用更改变量元素值_bootstrapper.Engine.StringVariables["LogLocation"] = "C:\ProjectGorilla\logs\log.txt"
在 C# 中使用上述代码,变量 Id="LogLocation"已更改,但该更改未反映在Log 元素的 PathVariable
所以,我的问题是如何在 Log 元素的 PathVariable 属性中放置一个变量
提前致谢 :)
解决方案
根据文档,该PathVariable
属性是:
将保存日志文件路径的变量的名称。空值将导致不设置变量。默认值为“WixBundleLog”。
PathVariable
没有指定(捆绑)日志将被写入的路径。如果 BA 想要将文件复制到其他地方,它应该是一个变量。Burn 引擎从不读取此变量的值,因此在运行时更改它不会做任何事情。
在加载BootstrapperApplication(https://github.com/wixtoolset /wix3/blob/58abd6993afba08b39e37b0e76b1790161df9231/src/burn/engine/engine.cpp#L545)。BA没有办法改变路径。
今天,包(MSI、EXE 等)日志位置的工作方式与捆绑日志相同。但是,由于它们是在加载 BA 后创建的,因此理论上有人可以实现一个功能,以便 BA 可以更改其路径。
推荐阅读
- python - python数据框,我如何在特定条件下执行%更改
- web-scraping - 如何找到动态加载内容的来源
- c - 将队列的头/尾初始化为 NULL 时出现段错误;
- testing - 在 lcov 报告中的导入语句上开玩笑覆盖缺少分支
- javascript - 防止 React 组件在 props 准备好之前渲染
- android - 在 Android 上使用带有 TFLite C++ API 的 ARM Neon 加速
- r - R中的圆形可视化,文本和图形重叠
- powershell - 如何使用 shell 脚本打开一个 firefox 选项卡并在几秒钟后关闭该选项卡?
- c# - 为什么我在 textmeshpro 文本上显示为空?
- laravel - Inertia.js 和 Laravel:分页状态如何工作?