65

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.

1
  • 3
    This is amazing. I was looking for exactly this solution, and thought it was too obscure to possibly already be answered here. Go figure. Commented May 21, 2010 at 17:09

3 Answers 3

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.

Sign up to request clarification or add additional context in comments.

4 Comments

[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll
If you use the WixNetFxExtension, you can use [NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll
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... :P
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.
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..

3 Comments

is it still v2.0.50727 or does a .NET 4 application use v4.0... ?
@gbjbaanb .Net 4.5 uses C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\EventLogMessages.dll
18

How about the more flexible stuff built in:

EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll"

or

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll"

And

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR64]EventLogMessages.dll"

1 Comment

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.