如果我输入一个硬编码的值,它会正常工作
<Log PathVariable="C:myProjectDirmyLogslog.txt"/>
但是如果我创建一个单独的变量并替换硬代码,它就不起作用了
<Log PathVariable="[LogLocation]"/>
<Variable Name="LogLocation" bal:Overridable="no" Type="string" Value="C:myProjectDirmyLogslog.txt" Persisted="yes"/>
我在<WixVariable Id="WixBundleLog"/>
的行中发现了一些东西,但是我真的不知道如何使用它。
我的最终目标是我有一个引导程序应用程序,我想改变我的msi和exe安装日志创建的位置
I able able可以改变变量元素值使用_bootstrapper.Engine.StringVariables["LogLocation"] = "C:ProjectGorillalogslog.txt"
在c#中使用上述代码,变量Id="LogLocation">被更改了,但是这个更改没有反映在Log元素的PathVariable
所以,我的问题是如何在Log元素的PathVariable属性中放置一个变量
Thanks in advance:)
根据文档,PathVariable
属性为:
保存日志文件路径的变量名。空值将导致不设置该变量。默认为"WixBundleLog"
PathVariable
没有指定将写入(bundle)日志的路径。如果BA想要将文件复制到其他地方,它应该读取这个变量。Burn引擎永远不会读取这个变量的值,所以在运行时更改它不会做任何事情。
在加载BootstrapperApplication (https://github.com/wixtoolset/wix3/blob/58abd6993afba08b39e37b0e76b1790161df9231/src/burn/engine/engine.cpp#L545)之前创建(bundle)日志(https://github.com/wixtoolset/wix3/blob/58abd6993afba08b39e37b0e76b1790161df9231/src/burn/engine/engine.cpp#L499)。BA无法更改路径。
包(MSI, EXE等)日志位置今天的工作方式与bundle日志相同。但是,由于它们是在加载BA之后创建的,因此理论上可能有人可以实现一个功能,以便BA可以更改它们的路径。