WIX: создание источника событий using.NET файл сообщений
Я создаю установщик для своего приложения с помощью 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-битному фреймворку тоже будет присутствовать,но он, похоже, не предваряется.
Что я здесь делаю не так?