Wix: Создание событийурсы с использованием файла сообщения .NET
-
01-10-2019 - |
Вопрос
Я создаю установщик для моего приложения, используя WIX. Все работает нормально. Однако я пытаюсь создать новый источник события во время установки, и это не работает должным образом.
Я прочитал и понял этот вопрос Вот на так, но у меня несколько разная ситуация, в которой данное решение, похоже, не работает должным образом. Следующее сделано по-другому:
- Я использую
WixNetFxExtension
Чтобы определить, устанавливается ли .NET 3.5 в виде условия запуска. - Я использую
WixUtilExtension
Чтобы настроить вещи для 32-битных / 64-битных сборки, как описано здесь
То, что я хотел бы сделать, это: используйте файл сообщения о событии на 32-разрядных рамках при выполнении 32-битной установки, в противном случае используйте файл сообщений события 64-битного каркаса.
Одной из комментариев в приведенном выше связанном с этом вопросом предлагается использовать следующее, чтобы система использовала 32-битный файл сообщения события Framework:
<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 ...
Условные работы, меняющиеся продукты и заблокировки соответствующим образом.
Некоторые строки выше этого кода я использую следующее, чтобы разрешить обнаружение Framework .NET:
<PropertyRef Id="NETFRAMEWORK35"/>
<PropertyRef Id="NETFRAMEWORK20"/>
<Condition Message="...">
<![CDATA[Installed OR NETFRAMEWORK35]]>
</Condition>
Когда я запускаю установщик, все, кажется, работает, источник события тоже создан, я также могу использовать его из моего приложения, однако я все еще получаю информацию о том, что файл сообщения события не найден. Осмотрите реестр, я обнаружил, что путь к файлу сообщений отсутствует:
EventMessageFile REG_EXPAND_SZ EventLogMessages.dll
Я ожидаю, что путь к 32-битным / 64-битным каркасам тоже присутствует, но, похоже, это не предложено.
Что я здесь делаю не так?
Решение
Я просто побежал в это, вам нужно PropertyRef
NETFRAMEWORK20INSTALLROOTDIR
а также NETFRAMEWORK20INSTALLROOTDIR64
(Также убедитесь, что WinnetFxextense ссылается).