在安装应用程序时,我需要使用XmlFile元素的value属性中的百分比字符来配置log4net滚动文件附加程序的路径。
目标是让log4net像这样配置
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Log_[%processid].log" />
...
</appender>
基本wix代码如下所示:
<util:XmlFile
Id="RollingFileAppenderLogPath"
File="[INSTALLLOCATION]log4net.config" Action="setValue" Permanent="yes"
ElementPath="/log4net/appender[[]@name='RollingFileAppender'[]]/file" Name="value"
Value="[LOGPATH]Log_[%processid].log"/>
我已经尝试了[]和%like实体([;、!;和%;)的各种替换,加倍、三倍、四倍,但该值总是作为环境变量提及或导致ICE03:无效的字符串格式。
替换结果如下:
<file type="log4net.Util.PatternString" value="<inserted LOGPATH>Log_.log"/>
有没有一种方法可以将[%processid]强制为字符串,以便按预期插入?
我想我找到了解决方案:问题出在方括号上!
如果打开WIX文档并导航到"XmlFile元素",则在"Value"属性上显示:
要写入的值。有关如何转义值中的方括号的信息,请参阅格式化主题。
所以,只需勾选上面的链接并更改文本,去掉方括号,一切都会很好!:)