获取在WiX安装程序中设置的事件源的名称,在C#中

本文关键字:事件源 设置 WiX 安装 程序 获取 | 更新日期: 2023-09-27 18:00:37

我需要从C#应用程序对事件日志进行一些自定义写入。因为我在运行时没有管理员权限,所以我在WiX安装程序中创建事件源,如下所示:

<u:EventSource Name="SourceName" Log="Application" EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll" />

然后通过写入

 EventLog.WriteEntry("SourceName", message, EventLogEntryType.Error);

这里的问题是,SourceName必须在我的安装程序和C#代码库之间保持同步——它以前已经不同步了。

我目前正在使用主文件的名称来链接两者,如下所示:

<?define MainExe="MyMain.exe" ?>
<u:EventSource Name="$(var.MainExe)" Log="Application" EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll" />

和:

var name = Application.ResourceAssembly.ManifestModule.Name;
EventLog.WriteEntry(name, message, EventLogEntryType.Error);

但这让人觉得很生气。有没有合适的方法来动态获取在WiX安装程序中设置的事件源的名称,或者我只需要尽我所能?

获取在WiX安装程序中设置的事件源的名称,在C#中

我觉得你做DRY有点太过分了。在两个地方进行维护。如果你真的不能做到这一点,WiX安装程序可以转换app.config并将事件源的名称保存在一个设置中

我唯一一次做配置文件是在做产品线的时候,一个框架的不同消费者将是具有自己独特日志的不同品牌的应用程序。