我是WiX安装程序的新手。
我正在使用Session.Log记录流程的一些有用数据。
session.Log("Begin register the Vdds interface.");
但我不确定在哪里可以找到日志。是否有记录的默认路径?或者我是否需要在安装程序.wxs文件中指定我需要提供的路径?
答案 0 :(得分:15)
您需要使用msiexec.exe从命令行运行安装程序,然后包含L
命令行选项以指定日志的保存位置。
例如:
msiexec /i app.msi /l*v thelog.txt
有关msiexec参数的详细信息,请参阅Command-Line Options
答案 1 :(得分:3)
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进程。
答案 2 :(得分:2)
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记录了属性的变化:
&lt; Property Id =“WIX_MAGIX_TRICK_PROPERTY”Value =“0”/&gt;
并在CA中:
session [“WIX_MAGIX_TRICK_PROPERTY”] =“要记录的消息”;
结果应与此类似:
MSI(c)(78!34)[09:48:13:770]:属性更改:修改WIX_MAGIX_TRICK_PROPERTY属性。其当前值为“0”。它的新价值:'消息记录'。
答案 3 :(得分: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
答案 4 :(得分:0)
使用参数运行msi:/L!*vx
为我解决了这个问题。
E.g。
msiexec /i MyMsi.msi /L!*vx install.log
现在我对Session.Log("..")
的所有电话都显示在install.log