在没有任何命令行参数的情况下为 MSI 安装程序启用安装日志

May*_*yur 4 windows-installer

如何在我的MSI 项目中启用日志记录并设置?现在我用命令行参数运行我的:MsiLogFileLocationsetup.msi

msiexec /i install.msi /l*v InstallLog.log
Run Code Online (Sandbox Code Playgroud)

我想记录我的工作总是在setup.msi没有任何参数的情况下运行。有没有办法做到这一点?

Ste*_*mul 9

来自 MSI SDK:“您可以使用命令行选项MsiLogging 属性日志记录策略MsiEnableLogEnableLog方法在用户计算机上启用详细日志记录”。

简短回答:因此,将属性MsiLogging属性添加到您的 MSI属性表中,并可能"vp"用作值(不带引号)。


热调试提示:在日志文件中搜索value 3以查找错误Rob Mensching(Wix & Orca 作者)。否则 MSI 日志文件可能会让人不知所措。请参阅下面有关日志解释的更多信息(黄色部分)。



Burn:WiX Burn Bundles(setup.exe启动器)有自己的日志结构(除了上面描述的 MSI 特定的日志)。换句话说,MSI 文件有它们的日志记录,而setup.exe刻录启动器有它们的日志记录。


快速日志记录(详细):最简单的详细日志记录来自cmd.exe.

msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.log
Run Code Online (Sandbox Code Playgroud)

快速参数说明

 /i = run install sequence 
 /L*v C:\Your.log = verbose logging at specified path
Run Code Online (Sandbox Code Playgroud)

调试日志(详细):高级、缓慢的日志记录以获取最大的详细信息。

msiexec.exe /i C:\Path\Your.msi /L*vx! C:\Your.log
Run Code Online (Sandbox Code Playgroud)

快速参数说明

 /i = run install sequence 
 /L*vx! C:\Your.log = verbose debug logging at specified path

 The x adds extra debugging information, and the ! disables the log buffer.
 This means there is no lost log if there are any crashes.
Run Code Online (Sandbox Code Playgroud)

所有 MSI 软件包 - 全局日志记录(策略)

是的,您enable logging globally on the machine通过设置适当的注册表项。然后,启动的每个 MSI 将导致在TEMP文件夹中创建一个具有临时名称的日志文件。按更改日期对文件列表进行排序以获取最新的文件列表。

注册表项和值:实际的注册表设置:

msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.log
Run Code Online (Sandbox Code Playgroud)

操作方法:请参阅 installsite.org 中的此常见问题解答条目,“Globally for all setups on a machine”部分: http : //www.installsite.org/pages/en/msifaq/a/1022.htm了解确切过程。

单挑(技术细节)This is a very technical problem that may have a bothersome and highly unexpected pragmatic effect。此全局日志记录的副作用是,您使用MSI-API从脚本实例化的任何Session 对象也会在 TEMP 文件夹中创建日志文件。如果迭代所有包并实例化会话对象,这可能会导致在 TEMP 文件夹中创建数百个日志文件。也在事件日志中(大系统管理员不行!)。非常具体的问题,但只是指出它。临时文件夹和事件日志的清理“解决”了问题——或者更好——只是避免创建会话对象。请注意,您的部署工具可能会意外地实例化会话对象。也许在启用日志记录后检查,这样你就不会在网络范围内遇到这个愚蠢的问题。


特定于包的日志记录

除了全局设置和策略之外,您还可以通过属性或自定义操作自定义每个包的日志记录,或者仅通过msiexec.exe 命令行指定选项和日志记录位置。

命令行:以其最简单的形式:msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.log. 为文档msiexec.exe指令线(看部分,用于开关:/L

属性:您可以在每个包中设置MsiLogging 属性以自定义日志记录。MSI 属性MsiLogFileLocation保存日志文件的路径。如果要在安装后打开日志,请使用此选项。

自定义操作:你可以调查Installer.EnableLog method的的MSI-API定制日志行为从自定义操作特定的MSI。更多: Windows 安装程序日志记录


解释 MSI 日志文件

关于解释日志文件的主题:如何解释 MSI 日志文件

直接链接:(Direct PDF Link to Robert Macdonald's log guide从 Wayback 复活)。

查找错误:并且,如上所述:在日志文件中搜索值 3以查找错误Rob Mensching(Wix 和 Orca 的作者)。否则 MSI 日志文件可能会让人不知所措。

高级安装程序如何读取 Windows 安装程序详细日志文件?


写入日志:从您自己的自定义操作写入 MSI 日志文件并不难。以下是Robert Dickau关于该主题的入门: MSI 提示:从自定义操作写入日志文件


一些链接