WiX Toolset默认日志文件位置

时间:2016-07-07 15:46:17

标签: wix

我已经使用WiX几个星期了,但仍然很难获得有关事情应该如何运作的良好信息。其中一个是伐木。我要求安装程序将日志文件写入特定位置,而无需用户添加任何/ l命令行参数。我看到有一个Log命令,但它的父命令是Bundle,它是创建捆绑包的根元素。我有一个简单的安装程序,所以可能不需要我的情况。这应该很简单,对吧?

3 个答案:

答案 0 :(得分:2)

<强> 1 即可。这是最简单的解决方案(如果我是你,我会这样做) - 创建一个执行以下命令的批处理文件:

   msiexec MyProduct.msi /L*V "%TEMP%\MyProduct.log"

将批处理文件中的路径编辑为所需的自定义路径。

<强> 2 即可。您可以使用MSILogging Property在命令行之外设置日志记录。但此属性仅适用于Windows Installer 4.0。

基本上,您需要在.wxs文件中添加新属性:

<Property Id="MsiLogging" Value="voicewarmupx!"/>
  • v - 详细输出
  • o - 磁盘空间不足消息
  • i - 状态消息
  • c - 初始用户界面参数
  • e - 所有错误消息
  • w - 非致命警告
  • a - 行动启动
  • r - 特定于行动的记录
  • m - 内存不足或致命退出信息
  • u - 用户请求
  • p - 终端属性
  • ! - 将每一行刷新到日志
  • x - 额外的调试信息

这将确保将在%temp%文件夹中创建日志文件,日志文件的名称将类似于“MSI * .LOG”。可以从此属性和MsiLogFileLocation读取日志文件的完整路径。但MsiLogFileLocation属性是只读的,无法设置。

现在这不能满足您在自定义位置创建日志文件的要求,因为我们无法设置日志文件位置。我们无法在WIX中设置日志文件位置的原因是因为我们需要告诉MSIEXEC在Windows安装程序引擎实际开始执行MSI之前将日志文件写入的位置。

要解决此问题,您可以做的一件事是添加自定义操作并将日志文件从%temp%文件夹复制到所需的文件夹。它会是这样的:

<CustomAction Id="CopyLogFile" Execute="immediate" 
              ExeCommand="cmd /c copy [MsiLogFileLocation] C:\customlocation\MyProduct.log" 
              Directory="TARGETDIR" 
              Impersonate="no" 
              Return="asyncNoWait" />

<InstallExecuteSequence>
     <Custom Action="CopyLogFile" OnExit="success" />
</InstallExecuteSequence>

答案 1 :(得分:0)

您可以将捆绑包作为单个安装程序的包装,并让安装程序在安装期间显示自己的界面。这应该很容易做到,而且可能是正确的行动方案。如果它能让你轻松做到你需要的话,我真的没有看到捆绑1个包的问题。

除此之外,需要在启用日志记录的情况下调用安装程序,另一个选项是通过注册表为Windows安装程序启用全局日志记录 - 但这可能不适合您的需要,这需要在安装程序之前设置跑了。

答案 2 :(得分:0)

查找:

C:\ Users \ user-id \ AppData \ Local \ Temp \ Charting_Companion_YYYYMMDDhhmmss_000_Setup.log