c# WiX CustomAction Session.Log我在哪里可以找到日志?
本文关键字:日志 在哪里 CustomAction WiX Session Log | 更新日期: 2023-09-27 18:06:40
我是WiX安装新手。
我正在使用Session.Log记录进程中一些有用的数据。
session.Log("Begin register the Vdds interface.");
但是我不确定在哪里可以找到日志。是否有一个默认的日志路径?或者我是否需要指定我需要在installer .wxs文件中提供的路径?
您需要使用msiexec.exe从命令行运行安装程序,然后包含L
命令行选项来指定日志保存的位置。
msiexec /i app.msi /l*v thelog.txt
有关msiexec参数的更多信息,请参见命令行选项
Session.Log将您的日志添加到标准的MSI日志中。如果您在执行过程中提供了/l*v <LogPath>
开关,则可以在LogPath中找到自定义操作的日志。
如果您在安装程序中使用属性MsiLogging,其值为vx,它会生成标准MSI登录用户的临时位置(类型%temp%在运行中),LogName看起来像MSI*. Log,即使没有/L*v
开关也会自动。LogPath可以被/L*v
开关覆盖。
你必须知道的事情:
-
session.Log不记录任何UI操作。
-
有时由于内存泄漏问题,安装程序无法生成MSI*日志。在这种情况下,可以重新启动explorer.exe进程。
-
session. log的工作原理与session类似。信息级别:
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记录属性的变化:
<属性Id Value="0" />
and in CA:
session["WIX_MAGIX_TRICK_PROPERTY"] = "message to log";
结果应该类似于:
MSI (c) (78!34) [09:48:13:70]: PROPERTY CHANGE:修改WIX_MAGIX_TRICK_PROPERTY属性。它的当前值是'0'。它的新值:'message to log'
运行带有参数的msi: /L!*vx
为我解决了这个问题。例如
msiexec /i MyMsi.msi /L!*vx install.log
现在我对Session.Log("..")
的所有调用现在显示在install.log
我不确定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