Wix: Создание событийурсы с использованием файла сообщения .NET

StackOverflow https://stackoverflow.com/questions/3590015

Вопрос

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

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

  1. Я использую WixNetFxExtension Чтобы определить, устанавливается ли .NET 3.5 в виде условия запуска.
  2. Я использую 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 ссылается).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top