WIX: создайте EventSource с помощью файла сообщений .NET - PullRequest
4 голосов
/ 28 августа 2010

Я создаю установщик для моего приложения, используя WIX.Пока все отлично работает.Тем не менее, я пытаюсь создать новый источник событий во время установки, и это не работает, как ожидалось.

Я прочитал и понял этот вопрос здесь, на SO, но у меня несколько иная ситуация, в которой данное решение, похоже, не работает должным образом.Следующие действия выполняются иначе:

  1. Я использую WixNetFxExtension, чтобы определить, установлен ли .NET 3.5 в качестве условия запуска.
  2. Я использую WixUtilExtensionчтобы сконфигурировать материал для 32-битных / 64-битных сборок, как описано здесь

Что я хотел бы сделать: использовать файл сообщений о событиях 32-битной платформыпри выполнении 32-битной установки, в противном случае используйте файл сообщения о событии 64-битной платформы.

В одном из комментариев в приведенном выше связанном вопросе SO предлагается использовать следующее, чтобы система использовала 32-битную инфраструктуруфайл сообщения о событии:

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

Я изменил это, чтобы учесть оба типа установок:

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

В начале файла те же <?if ... условные работы, изменение продукта- и следующие имена соответственно.

Некоторые строки над этим кодом, я использую следующее, чтобы разрешить обнаружение .NET Framework:

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

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

Когда я запускаю установщик, кажется, что все работает, источник события создаетсяЯ также могу использовать его из своего приложения, однако я все еще получаю информацию о том, что файл сообщения о событии не найден.Просматривая реестр, я обнаружил, что путь к файлу сообщений отсутствует:

EventMessageFile   REG_EXPAND_SZ    EventLogMessages.dll

Я бы также ожидал, что путь к 32-битной / 64-битной среде тоже будет присутствовать, но это не так.Кажется, к нему добавлено.

Что я здесь не так делаю?

1 Ответ

5 голосов
/ 28 сентября 2010

Я только что наткнулся на это, вам нужно PropertyRef NETFRAMEWORK20INSTALLROOTDIR и NETFRAMEWORK20INSTALLROOTDIR64 (также убедитесь, что WinNetFxExtension ссылается).

...