How do you create an event log source using WiX
Asked Answered
P

3

64

I'm creating an installer for a website that uses a custom event log source. I would like our WiX based installer to create that event log source during installation.

Does anyone know the best way to do this using the WiX framework.

Propylite answered 12/9, 2008 at 9:9 Comment(1)
This is amazing. I was looking for exactly this solution, and thought it was too obscure to possibly already be answered here. Go figure.Atheroma
M
59

Wix has out-of-the-box support for creating event log sources.

Assuming you use Wix 3, you first need to add a reference to WixUtilExtension to either your Votive project or the command line. You can then add an EventSource element under a component :

<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>

If this is a .NET project, you can use EventLogMessages.dll in the framework directory as the message file.

Mouse answered 12/9, 2008 at 11:1 Comment(4)
[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dllTropology
If you use the WixNetFxExtension, you can use [NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dllIncise
Just a warning for anyone trying Wim's suggestion; properties can't depend upon the result of other search properties (which NETFRAMEWORK* are). Just spent ages trying to figure out why a DirectorySearch using NETFRAMEWORK40CLIENTINSTALLROOTDIR wasn't working... :PMedrano
One other thing you will need to ensure is that you include -ext "%WIX_BUILD_LOCATION%\WixUtilExtension.dll" on your candle command to use any of the util: features.Bienne
U
19

Just to save people some time - if you are trying to use the Application log and the .NET messages you can cut paste the below code:

<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"
/>

NOTE: the path above is now correct..

Uitlander answered 22/2, 2009 at 0:52 Comment(3)
is it still v2.0.50727 or does a .NET 4 application use v4.0... ?Frederigo
@Frederigo .Net 4.5 uses C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dllUnpeg
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\EventLogMessages.dllTweeddale
R
18

How about the more flexible stuff built in:

EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll"

or

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll"

And

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR64]EventLogMessages.dll"
Reiter answered 17/2, 2011 at 13:47 Comment(1)
Not quite correct. In Wix 3.5 it should be [NETFRAMEWORK40FULLINSTALLROOTDIR] or [NETFRAMEWORK40FULLINSTALLROOTDIR64] (for 64bit) - see wix.sourceforge.net/manual-wix3/wixnetfxextension.htm. And remember to include a PropertyRef to it.Synectics

© 2022 - 2024 — McMap. All rights reserved.