2008-09-12 8 views
55

Estoy creando un instalador para un sitio web que usa un origen de registro de eventos personalizado. Me gustaría que nuestro instalador basado en WiX cree ese origen de registro de eventos durante la instalación.Cómo se crea una fuente de registro de eventos usando WiX

¿Alguien sabe la mejor manera de hacerlo utilizando el marco de trabajo de WiX.

+3

Esto es increíble. Estaba buscando exactamente esta solución, y pensé que era demasiado oscura para que posiblemente ya la respondiera aquí. Imagínate. –

Respuesta

50

Wix tiene soporte listo para usar para crear orígenes de registro de eventos.

Suponiendo que usa Wix 3, primero necesita agregar una referencia a WixUtilExtension a su proyecto Votive o la línea de comando. A continuación, puede agregar un elemento EventSource bajo un componente:

<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 este es un proyecto .NET, puede utilizar EventLogMessages.dll en el directorio de marco como el archivo de mensajes.

+1

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

+8

Si usa WixNetFxExtension, puede usar [NETFRAMEWORK20INSTALLROOTDIR] EventLogMessages.dll –

+1

Solo una advertencia para cualquiera que pruebe la sugerencia de Wim; las propiedades no pueden depender del resultado de otras propiedades de búsqueda (que 'NETFRAMEWORK *' son). Acabo de pasar siglos tratando de descubrir por qué un 'DirectorySearch' utilizando' NETFRAMEWORK40CLIENTINSTALLROOTDIR' no funcionaba ...: P – porges

14

sólo para salvar a la gente algún tiempo - si usted está tratando de utilizar el registro de aplicación y los mensajes de .NET se puede cortar pega el siguiente código:

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

NOTA: la ruta anterior es ahora correcta ..

+1

¿sigue siendo v2.0.50727 o una aplicación .NET 4 usa v4.0 ...? – gbjbaanb

+3

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

15

¿Qué hay de las cosas más flexible construido en:

EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll" 

o

EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll" 

Y

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

¿Funciona a alguien? – CallMeLaNN

+8

No del todo correcto. En Wix 3.5 debería ser [NETFRAMEWORK40FULLINSTALLROOTDIR] o [NETFRAMEWORK40FULLINSTALLROOTDIR64] (para 64 bits) - ver http://wix.sourceforge.net/manual-wix3/wixnetfxextension.htm. Y recuerda incluirle un PropertyRef. –

Cuestiones relacionadas