![](/img/trans.png)
[英]Wix CustomAction [C#] session.Message is not show during the installation
[英]C# WiX CustomAction Session.Log. Where can I find the log?
我是WiX安装程序的新手。
我正在使用Session.Log来记录进程的一些有用数据。
session.Log("Begin register the Vdds interface.");
但我不知道在哪里可以找到日志。 是否有记录的默认路径? 或者我是否需要在安装程序.wxs文件中指定我需要提供的路径?
您需要使用msiexec.exe从命令行运行安装程序,然后包含L
命令行选项以指定日志的保存位置。
例如:
msiexec /i app.msi /l*v thelog.txt
有关msiexec参数的详细信息,请参阅命令行选项
Session.Log将您的日志添加到标准MSI日志。 如果您在执行期间提供了/l*v <LogPath>
开关,则可以在LogPath中找到自定义操作的日志。
如果您在安装程序中使用Property MsiLogging值为vx,它将在用户临时位置生成标准MSI日志(运行时键入%temp%),LogName看起来像MSI * .LOG,即使没有/L*v
开关也是如此。 使用/L*v
开关可以覆盖LogPath。
你必须知道的事情:
session.Log在任何UI操作执行时都不会记录。
有时,由于内存泄漏问题,安装程序无法生成MSI *日志。 在这种情况下,您可以重新启动explorer.exe进程。
session.Log的工作方式类似于具有信息级别的session.Message:
public void Log(string msg) { if (msg == null) throw new ArgumentNullException("msg"); using (Record record = new Record(0)) { record.FormatString = msg; int num = (int) this.Message(InstallMessage.Info, record); } }
您可以使用脏技巧:在引用模块中定义属性,并将其在CA中的值设置为您要记录的消息。 似乎WIX记录了属性的变化:
<Property Id =“WIX_MAGIX_TRICK_PROPERTY”Value =“0”/>
在加州:
session [“WIX_MAGIX_TRICK_PROPERTY”] =“要记录的消息”;
结果应该类似于:
MSI(c)(78!34)[09:48:13:770]:属性更改:修改WIX_MAGIX_TRICK_PROPERTY属性。 其当前值为“0”。 它的新价值:'消息记录'。
我不确定session.Log
在哪里记录消息。 但是session.Message
:
Record record = new Record();
record.FormatString = string.Format("Something has gone right!");
session.Message(InstallMessage.Info, record);
显示在生成的日志文件中:
msiexec /i app.msi /l*v thelog.txt
使用参数运行msi: /L!*vx
为我解决了这个问题。 例如
msiexec /i MyMsi.msi /L!*vx install.log
现在我对Session.Log("..")
所有调用现在都显示在install.log中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.