2010-08-28 25 views
4

Je crée un programme d'installation pour mon application à l'aide de WIX. Tout fonctionne bien jusqu'à présent. Cependant, j'essaye de créer une nouvelle source d'événement pendant l'installation et cela ne fonctionne pas comme prévu.WIX: Création d'EventSource à l'aide du fichier de messages .NET

J'ai lu et compris this question ici sur SO, mais j'ai une situation quelque peu différente dans laquelle la solution donnée ne semble pas fonctionner correctement. Ce qui suit est fait différemment:

  1. J'utilise le WixNetFxExtension pour déterminer si .NET 3.5 est installé en tant que condition de démarrage.
  2. J'utilise le WixUtilExtension pour configurer des trucs pour 32 bits/64 bits construit comme il est décrit here

Ce que je voudrais faire est la suivante: utiliser le fichier de messages d'événement de cadre 32 bits lors d'une installation 32 bits, utilisez le fichier de messages d'événement du framework 64 bits.

Un des commentaires dans le suggère ci-dessus lié SO question d'utiliser les éléments suivants pour que le système utilise le fichier de message d'événement de cadre 32 bits:

<util:EventSource 
    Log="Application" 
    Name="*source name*" 
    EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll"/> 

J'ai modifié cela compte pour les deux types de configurations :

<?if $(var.Platform) = x64 ?> 
    <util:EventSource Log="..." Name="..." EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR64]EventLogMessages.dll" /> 
<?else ?> 
    <util:EventSource Log="..." Name="..." EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll" /> 
<?endif ?> 

au début du fichier, les mêmes œuvres <?if ... conditionnelles, l'évolution des produits et les foldernames en conséquence.

Quelques lignes ci-dessus que le code J'utilise ce qui suit pour permettre la détection de .NET Framework:

<PropertyRef Id="NETFRAMEWORK35"/> 
<PropertyRef Id="NETFRAMEWORK20"/> 

<Condition Message="..."> 
    <![CDATA[Installed OR NETFRAMEWORK35]]> 
</Condition> 

Quand je lance le programme d'installation, tout semble fonctionner, la source d'événement est créé, aussi, je Je peux aussi l'utiliser depuis mon application, cependant, je reçois toujours l'information que le fichier de message d'événement n'est pas trouvé. Inspectant le Registre je trouve que le chemin vers le fichier de message est manquant:

EventMessageFile REG_EXPAND_SZ EventLogMessages.dll 

J'attends le chemin du cadre 32 bits/64 bits pour être présent aussi, mais il ne semble pas à être ajouté.

Qu'est-ce que je fais mal ici?

Répondre

5

Je viens de rencontrer ceci, vous devez PropertyRefNETFRAMEWORK20INSTALLROOTDIR et NETFRAMEWORK20INSTALLROOTDIR64 (assurez-vous également que WinNetFxExtension est référencé).

+0

Parfait! Merci beaucoup. –