如何在我的 MSI项目中启用日志记录并设置MsiLogFileLocation
?现在,我使用命令行参数运行setup.msi
:
msiexec /i install.msi /l*v InstallLog.log
我想记录我的工作总是只运行setup.msi
而没有任何参数。有什么方法可以做到吗?
答案 0 :(得分:1)
从MSI SDK :“ 您可以使用Command Line Options,MsiLogging property,在用户计算机上启用详细日志记录, Logging policy,MsiEnableLog和 EnableLog方法”。
是的,您通过设置适当的注册表项来 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.log
。 iterate 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
软件包不是可执行二进制文件,而是具有定义安装过程数据的数据库。我们可以添加值为MsiLogging
的v
属性。
(ref)