wix - 在 wix 安装程序中启用日志记录

标签 wix

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

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

我想记录我的工作,始终只运行 install.msi,不带任何参数。有什么办法可以做到这一点吗?

最佳答案

您可以告诉 WiX 使用详细日志记录,如下所示:

<Property Id="MsiLogging" Value="v" />

但您无法指定写入文件的位置 - 当 WiX 设置属性时,msiexec 已经确定了这一点。默认为 %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' 并更改 Execute CustomAction 上的 > 属性来commit。这应该允许它以管理员身份运行。

请参阅此讨论以了解更多信息:http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Setting-MsiLogFileLocation-property-td7374335.html

关于wix - 在 wix 安装程序中启用日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35774339/

相关文章:

wix - 如何添加仅在卸载时发生的 WiX 自定义操作(通过 MSI)?

wix - Windows Installer 实例转换如何与升级交互?

xpath - Wix 和 XPath : How to change version number with util:XmlFile when the path is not unique

wix - 如何在 Wix 中显示操作系统的非阻塞警告?

wix - 将参数传递给 CustomAction 并使用返回值

Wix XML 错误 - 当 Component 元素嵌套在 Directory 元素下时,无法指定 Component/@Directory 属性

wix - 指定刻录 Bootstrap 的输出可执行文件名称

.net - 我怎样才能绕过 "this component does not fit the criteria for having an automatically generated guid"

wix - 警告 LGHT1076 : ICE91: The file 'doc_code_file1' will be installed to the per user directory 'code_Simple'

iis - 如何使用 WiX 将应用程序添加到现有的 IIS 站点