【问题标题】:How to set custom value to Wix Bundle Log Element?如何为 Wix Bundle Log Element 设置自定义值?
【发布时间】:2021-08-28 11:36:17
【问题描述】:

如果我输入一个硬编码的值,它就可以正常工作

<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"/>

 

我在&lt;WixVariable Id="WixBundleLog"/&gt; 的行中找到了一些东西,但我真的不知道如何使用它。

我的最终目标是我有一个引导程序应用程序,并且我想更改创建我的 msi 和 exe 安装日志的位置

我能够使用 _bootstrapper.Engine.StringVariables["LogLocation"] = "C:\ProjectGorilla\logs\log.txt"

更改 变量 元素值

在 C# 中使用上述代码,Variable Id="LogLocation" 被更改,但该更改并未反映在 Log 元素的 PathVariable

所以,我的问题是如何将变量放入 Log 元素的 PathVariable 属性中

提前致谢:)

【问题讨论】:

    标签: variables logging path wix bootstrapper


    【解决方案1】:

    根据documentationPathVariable属性为:

    将保存日志文件路径的变量的名称。空值将导致不设置变量。默认为“WixBundleLog”。

    PathVariable 未指定写入(捆绑)日志的路径。如果 BA 想要将文件复制到其他地方,它应该是一个变量。 Burn 引擎从不读取此变量的值,因此在运行时更改它不会做任何事情。

    (捆绑)日志是在加载 BootstrapperApplication (https://github.com/wixtoolset/wix3/blob/58abd6993afba08b39e37b0e76b1790161df9231/src/burn/engine/engine.cpp#L545) 之前创建的 (https://github.com/wixtoolset/wix3/blob/58abd6993afba08b39e37b0e76b1790161df9231/src/burn/engine/engine.cpp#L499)。 BA没有办法改变路径。

    现在,包(MSI、EXE 等)日志位置的工作方式与捆绑日志相同。但是,由于它们是在加载 BA 之后创建的,因此理论上有人可以实现一个功能,以便 BA 可以更改其路径。

    【讨论】:

    • 最后你说的MSI日志位置改变理论上应该是可以的。关于我应该如何寻找理论上可能的答案的任何想法?
    • @Lelouch 创建一个功能请求以允许 BA 在github.com/wixtoolset/issues/issues 更改包日志的路径。然后要么自己实现它,要么希望别人实现它。一旦您构建了具有该新功能的工具集,您的 BA 就可以使用该新功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多