如何使用 WiX 创建事件日志源

Posted

技术标签:

【中文标题】如何使用 WiX 创建事件日志源【英文标题】:How do you create an event log source using WiX 【发布时间】:2010-09-08 16:22:32 【问题描述】:

我正在为使用自定义事件日志源的网站创建安装程序。我希望我们基于 WiX 的安装程序在安装期间创建该事件日志源。

有谁知道使用 WiX 框架的最佳方法。

【问题讨论】:

这太棒了。我一直在寻找这个解决方案,并认为它太晦涩了,可能已经在这里得到了回答。去图吧。 【参考方案1】:

Wix 开箱即用地支持创建事件日志源。

假设您使用 Wix 3,您首先需要在您的 Votive 项目或命令行中添加对 WixUtilExtension 的引用。然后,您可以在组件下添加 EventSource 元素:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

    <Component ...>
        ...
        <util:EventSource Log="Application" Name="*source name*"
           EventMessageFile="*path to message file*"/>
        ...
    </Component>

如果是.NET项目,可以使用framework目录下的EventLogMessages.dll作为消息文件。

【讨论】:

[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll 如果你使用WixNetFxExtension,你可以使用[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll 只是对尝试 Wim 建议的任何人的警告;属性不能依赖于其他搜索属性的结果(NETFRAMEWORK* 是)。只是花了很长时间试图弄清楚为什么使用NETFRAMEWORK40CLIENTINSTALLROOTDIRDirectorySearch 不起作用...:P 您需要确保的另一件事是在您的蜡烛命令中包含 -ext "%WIX_BUILD_LOCATION%\WixUtilExtension.dll" 以使用任何 util: 功能。【参考方案2】:

只是为了节省一些时间 - 如果您尝试使用应用程序日志和 .NET 消息,您可以剪切粘贴以下代码:

<Util:EventSource
 xmlns:Util="http://schemas.microsoft.com/wix/UtilExtension"
 Name="ROOT Builder"
 Log="Application"
 EventMessageFile="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll"
/>

注意:上面的路径现在是正确的..

【讨论】:

它仍然是 v2.0.50727 还是 .NET 4 应用程序使用 v4.0...? @gbjbaanb .Net 4.5 使用C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll【参考方案3】:

内置更灵活的东西怎么样:

EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll"

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll"

还有

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR64]EventLogMessages.dll"

【讨论】:

不太正确。在 Wix 3.5 中,它应该是 [NETFRAMEWORK40FULLINSTALLROOTDIR] 或 [NETFRAMEWORK40FULLINSTALLROOTDIR64](对于 64 位) - 请参阅 wix.sourceforge.net/manual-wix3/wixnetfxextension.htm。并记得在其中包含一个 PropertyRef。

以上是关于如何使用 WiX 创建事件日志源的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WiX 从源代码重建完全相同的 msi 文件?

Wix - 如何创建一个临时文件以在安装期间使用

始终可用于写入的事件日志源?

python脚本将变量发送到wix源路径

Wix:如何创建超过 2GB 的 bundle.exe(外部文件)

控制台中EventLog实现事件日志操作