我需要在安装应用程序时使用XmlFile元素的value属性中的百分比char来配置log4net滚动文件appender的路径。
目标是让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"/>
我尝试了[]和%类似实体的各种替换(&amp;#91;,&amp;#93;和&amp;#37;),加倍,三倍,四倍但是值总是被称为环境变量或原因ICE03:字符串格式无效。
替换结果如下:
<file type="log4net.Util.PatternString" value="<inserted LOGPATH>Log_.log"/>
有没有办法让[%processid]强制为字符串,以便按预期插入?
答案 0 :(得分:2)
认为我找到了解决方案:问题在于方括号!
如果您打开WIX文档并导航到“XmlFile元素”,则在“值”属性中显示:
要写的值。有关如何在值中转义方括号的信息,请参阅Formatted主题。
所以,只需查看上面的链接并更改文本,转出方括号,一切都应该正常工作! :)