我可以更改 msi 日志文件的默认目录 (%Temp%) 吗?
我想将日志目录移动到 ProgramData 文件夹。
谢谢
MsiLogFileLocation
是只读的,即您没有机会更改日志文件的位置within Windows Installer 包。/L
-parameter 运行 Windows Installer,则可以定义日志文件的位置,例如msiexec.exe /i MyPackage.msi /l*v "C:\path\to\log\logfile.log"
burn
MsiLogFileLocation
-属性访问创建的日志文件的完整路径,只需将日志文件作为安装过程的最后一步复制到您想要的任何位置。这里唯一的缺点:有时最后几行会丢失,因为它是在安装完全完成之前复制的。所以如果最后几行并不总是重要的(因为你进一步解析日志文件等),最后的解决方案可能是最简单的。
我在
InstallFinalize
之后安排了它(并使用了条件NOT (REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE)
,顺便说一句,否则它会覆盖或复制太多或......(不记得))。
使用@taffit 上面所说的,这就是我们最终得到的:
<Property Id="MsiLogging" Value="ewiac!" />
<CustomAction Id="CopyLog" Execute="immediate"
ExeCommand="cmd /c echo F|xcopy /y [MsiLogFileLocation] C:\ProgramData\scrpt\logs\scrpt-install.log && del [MsiLogFileLocation]"
Directory="TARGETDIR"
Impersonate="yes"
Return="asyncNoWait" />
<InstallExecuteSequence>
<Custom Action="CopyLog" After="InstallFinalize">NOT (REMOVE="ALL")</Custom>
</InstallExecuteSequence>
使用 xcopy 是因为日志文件夹可能不存在并且复制不会创建它。
'echo F|'当它询问目标是文件还是目录时,将 F 通过管道传递给命令。 && 表示如果第一个有效则执行以下命令