如何在我的wix项目中启用日志记录并设置MsiLogFileLocation?
现在我正在使用以下命令行参数运行我的install.msi:
msiexec /i install.msi /l*v InstallLog.log
我希望在没有任何参数的情况下始终记录我的工作。是否有任何方法可以做到这一点?
如何在我的wix项目中启用日志记录并设置MsiLogFileLocation?
现在我正在使用以下命令行参数运行我的install.msi:
msiexec /i install.msi /l*v InstallLog.log
我希望在没有任何参数的情况下始终记录我的工作。是否有任何方法可以做到这一点?
您可以这样告诉WiX使用详细日志:
<Property Id="MsiLogging" Value="v" />
但是,你无法指定文件写入的位置 - msiexec在WiX设置属性到达时已经确定了。它将默认为%TEMP%\MSI{随机字符}.LOG
。你可以为用户提供一个复选框来决定是否要打开该日志,例如(假设你正在使用内置的InstallDir UI模板 - 其他模板也可能可以,但这是一个非常简单的示例):
<Property Id="MsiLogging" Value="v" />
<UI>
<UIRef Id="WixUI_InstallDir" />
<Publish Dialog="ExitDialog"
Control="Finish"
Event="DoAction"
Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="View Installation Log" />
<WixVariable Id="WixUILicenseRtf" Value="license.rtf"/>
<Property Id="WixShellExecTarget" Value="[MsiLogFileLocation]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<Property Id="MsiLogging" Value="v!" />
<CustomAction Id="CopyLog" Execute="immediate"
ExeCommand="cmd /c copy [MsiLogFileLocation] C:\temp\log.txt"
Directory="TARGETDIR"
Impersonate="no"
Return="asyncNoWait" />
<InstallExecuteSequence>
<Custom Action="CopyLog" OnExit="success" />
</InstallExecuteSequence>
C:
驱动器根目录,因为它需要管理员权限。如果您可以接受丢失更多日志,可以将OnExit ='success'
更改为After ='InstallFinalize'
,并将CustomAction
上的Execute
属性更改为commit
,这应该允许其以管理员身份运行。