启用没有任何命令行参数的MSI安装程序的安装日志

时间:2019-01-31 05:33:13

标签: windows-installer msiexec

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

msiexec /i install.msi /l*v InstallLog.log

我想记录我的工作总是只运行setup.msi而没有任何参数。有什么方法可以做到吗?

2 个答案:

答案 0 :(得分:1)

  

从MSI SDK :“ 您可以使用Command Line OptionsMsiLogging property,在用户计算机上启用详细日志记录, Logging policyMsiEnableLog和   EnableLog方法”。


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

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

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

[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer]
"Logging"="voicewarmup"
"Debug"=dword:00000007

操作方法 :请参见installsite.org中的此常见问题解答条目,“ Globally for all setups on a machine ”部分:{{ 3}},以获取确切程序。

平视 (技术细节): This is a very technical problem that may have a bothersome and highly unexpected pragmatic effect 。此全局日志记录的副作用是,使用http://www.installsite.org/pages/en/msifaq/a/1022.htm从脚本实例化的任何Session objects也会在TEMP文件夹中创建一个日志文件。如果您MSI-API,这可能导致在TEMP文件夹中创建数百个日志文件。 也在事件日志中(大型系统管理员,请勿!)。非常具体的问题,只是指出来。临时文件夹和事件日志的清理可以“解决”问题-甚至更好-只需避免创建Session对象即可。请注意,您的部署工具可能会意外地实例化会话对象。也许在启用日志记录后检查一下,这样就不会在整个网络范围内遇到这个愚蠢的问题。


特定于软件包的日志记录

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

命令行 :最简单的形式:msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.logiterate all packages and instantiate a session object的文档(请参阅开关部分:/L

属性 :您可以在每个程序包中设置msiexec.exe command line来自定义日志记录。 MSI属性MsiLogging property包含日志文件的路径。如果要在安装后打开日志,请使用此选项。

自定义操作 :您可以调查MsiLogFileLocation中的Installer.EnableLog method,以通过自定义操作自定义特定MSI的日志记录行为。更多:MSI-API


某些链接

答案 1 :(得分:1)

要为MSI安装程序启用自动日志记录,需要使用Orca编辑以为MsiLogging属性设置适当的值。 MSI可以使用Orca(用于编辑MSI软件包的官方MS工具)进行编辑。
MSI软件包不是可执行二进制文件,而是具有定义安装过程数据的数据库。我们可以添加值为MsiLoggingv属性。

This image shows Orca UI to edit MSI to enable logging.
ref

相关问题