Подтвердить что ты не робот

Как создать источник журнала событий .NET с помощью WiX

Это преднамеренный полудубликат Как создать источник журнала событий с помощью WiX и WIX: Создать EventSource используя файл сообщений .NET.

Мой первый вопрос: действительно ли это должно быть так сложно? Не существует ли какой-либо способ просто указать WiX, "моя программа - это .Net-программа, и она должна записываться в журнал событий - пожалуйста, выполните необходимую настройку"?

ОК, предполагая, что это невозможно, я хотел бы получить какие-либо рекомендации для необходимых операторов WiX, чтобы он работал, независимо от того, какая версия .NET Framework установлена, и независимо от того, является ли она 32 или 64-битная система. В конце концов, большинство моих программ .Net могут работать на .Net 2.0 или новее, а также на 32 или 64-битных, поэтому это не имеет значения.

Заключительный вопрос: есть ли способ сделать его надежным? Было бы неплохо, если файлы MSI, которые я создаю сегодня, по-прежнему будут работать через пять лет, даже если .Net CLR 2.0 и 4.0 оба были отнесены к мусорной корзине в Windows 11 или тому, что она называла тогда.

4b9b3361

Ответ 1

В соответствии с запросом. Решение, которое работает с .NET 4 и .NET 4 с помощью UtilExtension:

1) Добавьте эти свойства PropertyRef:

<PropertyRef Id="NETFRAMEWORK40FULLINSTALLROOTDIR"/>
<PropertyRef Id="NETFRAMEWORK40FULLINSTALLROOTDIR64"/>
<PropertyRef Id="NETFRAMEWORK40CLIENTINSTALLROOTDIR"/>
<PropertyRef Id="NETFRAMEWORK40CLIENTINSTALLROOTDIR64"/>

2) 32-разрядная часть:

<!-- Event Source creation for 32bit OS with .NET 4 Full-->
<Component Id="CreateEventSource32BitFullNet4" Guid="your-guid-here">
    <Condition><![CDATA[NETFRAMEWORK40FULLINSTALLROOTDIR AND NOT VersionNT64]]></Condition>
    <CreateFolder/>
    <!-- Create an Event Source -->
    <Util:EventSource
          xmlns:Util="http://schemas.microsoft.com/wix/UtilExtension"
          Name="YOUR APP NAME"
          Log="Application"
          EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR]EventLogMessages.dll"/>
</Component>

<!-- Event Source creation for 32bit OS with .NET 4 Client Profile-->
<Component Id="CreateEventSource32BitClientNet4" Guid="your-guid-here">
    <Condition><![CDATA[NETFRAMEWORK40CLIENTINSTALLROOTDIR AND NOT VersionNT64]]></Condition>
    <CreateFolder/>
    <!-- Create an Event Source -->
        <Util:EventSource
          xmlns:Util="http://schemas.microsoft.com/wix/UtilExtension"
          Name="YOUR APP NAME"
          Log="Application"
          EventMessageFile="[NETFRAMEWORK40CLIENTINSTALLROOTDIR]EventLogMessages.dll"/>
</Component>

3) 64-битная часть:

<!-- Event Source creation for 64bit OS with .NET 4 Full -->
<Component Id="CreateEventSource64BitFullNet4" Guid="your-guid-here">
    <Condition><![CDATA[NETFRAMEWORK40FULLINSTALLROOTDIR64 AND VersionNT64]]></Condition>
    <CreateFolder/>
    <!-- Create an Event Source -->
    <Util:EventSource
          xmlns:Util="http://schemas.microsoft.com/wix/UtilExtension"
          Name="YOUR APP NAME"
          Log="Application"
          EventMessageFile="[NETFRAMEWORK40FULLINSTALLROOTDIR64]EventLogMessages.dll"/>
</Component>

<!-- Event Source creation for 64bit OS with .NET 4 Client Profile -->
<Component Id="CreateEventSource64BitClientNet4" Guid="your-guid-here">
    <Condition><![CDATA[NETFRAMEWORK40CLIENTINSTALLROOTDIR64 AND VersionNT64]]></Condition>
    <CreateFolder/>
    <!-- Create an Event Source -->
    <Util:EventSource
          xmlns:Util="http://schemas.microsoft.com/wix/UtilExtension"
          Name="YOUR APP NAME"
          Log="Application"
          EventMessageFile="[NETFRAMEWORK40CLIENTINSTALLROOTDIR64]EventLogMessages.dll"/>
</Component>