5

WIX を使用してアプリケーションのインストーラーを作成しています。これまでのところ、すべて正常に動作しています。しかし、インストール中に新しいイベント ソースを作成しようとしていますが、期待どおりに動作しません。

SO でこの質問を読んで理解しましたが、特定のソリューションが適切に機能していないように見える状況が多少異なります。以下は別の方法で行われます。

  1. を使用してWixNetFxExtension、起動条件として .NET 3.5 がインストールされているかどうかを判断しています。
  2. hereWixUtilExtensionで説明されているように、32ビット/64ビットビルド用に構成するために を使用しています

私がやりたいのは、32 ビット インストールを行うときは 32 ビット フレームワークのイベント メッセージ ファイルを使用し、それ以外の場合は 64 ビット フレームワークのイベント メッセージ ファイルを使用することです。

上記のリンクされた SO の質問のコメントの 1 つは、次を使用して、システムに 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 ビット フレームワークへのパスも存在することを期待していますが、先頭に追加されていないようです。

ここで何が間違っていますか?

4

1 に答える 1

6

私はちょうどこれに出くわしました、あなたはする必要がPropertyRef NETFRAMEWORK20INSTALLROOTDIRありますNETFRAMEWORK20INSTALLROOTDIR64(WinNetFxExtensionが参照されていることも確認してください)。

于 2010-09-27T23:35:43.340 に答える