使用 wix 在 32 位与 64 位操作系统上创建事件日志
本文关键字:操作系统 创建 事件 日志 wix 位与 使用 | 更新日期: 2023-09-27 17:56:36
使用 wix 创建应用程序事件日志的推荐方法似乎是
<Util:EventSource
Name="BLAH"
Log="Application"
EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll"/>
在 64 位操作系统上,将其NETFRAMEWORK40FULLINSTALLROOTDIR替换为 NETFRAMEWORK40FULLINSTALLROOTDIR64。
我注意到,当您在 64 位操作系统上运行 32 位应用程序时,它会创建一个事件日志,当您从代码中使用 .NET EventLog.CreateEventSource 方法时,它会创建带有NETFRAMEWORK40FULLINSTALLROOTDIR的事件日志。
EventMessageFile => C:'Windows'Microsoft.NET'Framework'v4.0.30319'EventLogMessages.dll
如果您运行没有事件日志的 64 位版本的应用程序,它将创建它
EventMessageFile => C:'Windows'Microsoft.NET'Framework64'v4.0.30319'EventLogMessages.dll
无论 EventMessageFile 的路径中是否有框架或 Framework64,32 位和 64 位版本的应用程序都可以在创建后愉快地写入它。
此行为是否受支持?如果要并排允许32位和64位版本的应用程序,创建它的正确方法是什么?
Windows 事件日志允许您创建本地化的事件日志消息文件。当Microsoft编写属于 Windows 一部分的服务时,他们可能希望能够本地化写入事件日志的内容。但是,几乎所有其他人都希望能够以他们选择的语言将字符串写入事件日志,而这正是 .NET 事件日志包装器提供的。因此,.NET 提供了一个非常通用的事件日志消息文件,该文件不包含本地化的消息,而只包含一个带有单个参数占位符的消息,其中插入了提供的字符串参数,使您可以完全控制 .NET 应用程序写入事件日志的内容。
如果 .NET (EventLogMessages.dll
) 中的 32 位和 64 位默认事件日志消息文件包含不同的消息,我会感到惊讶,但即使有了这些知识,您也应该将 32 位服务指向 32 位 DLL,将 64 位服务指向 64 位 DLL。如果我正确理解你的问题,这正是你所看到的行为。
关于 .NET 事件日志消息文件,不存在真正的"并行"问题。但是,如果您出于某种原因决定创建自己的(可能是本地化的)事件日志消息文件,则可以使用两个服务安装此文件的两个副本,也可以共享一个副本,然后将其安装到 %CommonProgramFiles%
。但是,如果一个版本独立于另一个版本进行更新,则不使用两个副本进行并行安装可能会导致问题。