2008-09-12 9 views
55

Je crée un programme d'installation pour un site Web qui utilise une source de journal des événements personnalisée. Je voudrais que notre installateur basé par WiX crée cette source de journal d'événement pendant l'installation.Comment créer une source de journal des événements à l'aide de WiX

Est-ce que quelqu'un connaît la meilleure façon de le faire en utilisant le cadre WiX.

+3

C'est incroyable. Je cherchais exactement cette solution, et je pensais que c'était trop obscur pour être éventuellement déjà répondu ici. Allez comprendre. –

Répondre

50

Wix dispose d'un support prêt à l'emploi pour la création de sources de journal des événements.

En supposant que vous utilisiez Wix 3, vous devez d'abord ajouter une référence à WixUtilExtension à votre projet Votive ou à la ligne de commande. Vous pouvez ensuite ajouter un élément EventSource sous un composant:

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

Si cela est un projet .NET, vous pouvez utiliser EventLogMessages.dll dans le répertoire cadre que le fichier de message.

+1

[WindowsFolder] Microsoft.NET \ Framework \ v2.0.50727 \ EventLogMessages.dll –

+8

Si vous utilisez WixNetFxExtension, vous pouvez utiliser [NETFRAMEWORK20INSTALLROOTDIR] EventLogMessages.dll –

+1

Juste un avertissement pour quiconque essaie la suggestion de Wim; les propriétés ne peuvent pas dépendre du résultat d'autres propriétés de recherche (dont 'NETFRAMEWORK *' sont). Juste passé des âges essayant de comprendre pourquoi un 'DirectorySearch' utilisant' NETFRAMEWORK40CLIENTINSTALLROOTDIR' ne fonctionnait pas ...: P – porges

14

Juste pour sauver les gens un peu de temps - si vous essayez d'utiliser le journal d'application et les messages .NET vous pouvez couper coller le code ci-dessous:

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

REMARQUE: le chemin ci-dessus est maintenant correct ..

+1

est-ce encore v2.0.50727 ou est-ce qu'une application .NET 4 utilise v4.0 ...? – gbjbaanb

+3

@gbjbaanb .Net 4.5 utilise C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ EventLogMessages.dll –

15

Que diriez-vous l'étoffe plus souple construit:

EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll" 

ou

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll" 

Et

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR64]EventLogMessages.dll" 
+0

Fonctionne-t-elle avec quelqu'un? – CallMeLaNN

+8

Pas tout à fait correct. Dans Wix 3.5, il devrait être [NETFRAMEWORK40FULLINSTALLROOTDIR] ou [NETFRAMEWORK40FULLINSTALLROOTDIR64] (pour 64 bits) - voir http://wix.sourceforge.net/manual-wix3/wixnetfxextension.htm. Et n'oubliez pas d'y inclure un PropertyRef. –

Questions connexes