Я создаю установщик для моего приложения, используя WIX.Пока все отлично работает.Тем не менее, я пытаюсь создать новый источник событий во время установки, и это не работает, как ожидалось.
Я прочитал и понял этот вопрос здесь, на SO, но у меня несколько иная ситуация, в которой данное решение, похоже, не работает должным образом.Следующие действия выполняются иначе:
- Я использую
WixNetFxExtension
, чтобы определить, установлен ли .NET 3.5 в качестве условия запуска. - Я использую
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-битной среде тоже будет присутствовать, но это не так.Кажется, к нему добавлено.
Что я здесь не так делаю?