繁体   English   中英

C#WiX CustomAction Session.Log。 我在哪里可以找到日志?

[英]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。

你必须知道的事情:

  1. session.Log在任何UI操作执行时都不会记录。

  2. 有时,由于内存泄漏问题,安装程序无法生成MSI *日志。 在这种情况下,您可以重新启动explorer.exe进程。

  1. 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); } } 
  2. 您可以使用脏技巧:在引用模块中定义属性,并将其在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM