1

32 ビット バージョンと 64 ビット バージョンのサード パーティ ライブラリを含むインストーラがあります。ライブラリには、同じファイル名の 32 ビットと 64 ビットのフォルダーが付属しています。私が行ったことは、ファイルの名前を個別の 32/64 名に変更して、両方をインストーラーに含めることができるようにすることです。条件付きでファイルを含めるようにタグに設定しようとしてFILEいますが、名前をefxzlib.dllの基本名に戻そうとしています。

これはファイルで可能ですか? のName属性はFile、インストール時ではなく、ビルド時にファイルの名前を変更するようです。この DLL は唯一の固有の 32/64 コンポーネントであるため、32 ビットと 64 ビットの別々のインストーラーを回避しようとしています。これは、マネージド カスタム アクションを使用して行うのが最適ですか?

  <Component Id="CMP_EFX_ZLIB_32BIt" Guid="MY_GUID1">
    <Condition>
      <![CDATA[NOT(VersionNT64)]]>
    </Condition>
    <File Id="FILE_EFX_ZLIB_32BIt" KeyPath="yes" Source="$(var.EFX5LibraryBase32bit)\efxzlib32.dll" Name="efxzlib.dll" />
  </Component>
  <Component Id="CMP_EFX_ZLIB_64BIt" Guid="{MY_GUID2}">
    <Condition>
      <![CDATA[VersionNT64]]>
    </Condition>
    <File Id="FILE_EFX_ZLIB_64BIt" KeyPath="yes" Source="$(var.EFX5LibraryBase64bit)\efxzlib64.dll" Name="efxzlib.dll" />
  </Component>
4

1 に答える 1

0

これは典型的な Windows インストーラーでは少し珍しい状況なので、WiX の手段でこれを達成できるとは思えません。これを正しく行うには、32 ビット システム用と 64 ビット システム用の 2 つのインストーラーが必要です。したがって、インストールの設計に固執すると、両方のシステムにインストールできる 1 つの 32 ビット インストーラーになってしまいます。その逆は適していません。そのような場合は、インストール後のカスタム アクションでファイルの名前を変更することをお勧めします。そのためには管理者権限を取得する必要があることに注意してください。また、更新、アンインストール、および再インストールで問題を解決する必要があります。

更新と再インストールの場合、これが該当する場合は、インストール後のカスタム アクションが再度必要になります。

アンインストールの場合、ファイルの名前を元の名前に戻すインストール前の手順が必要になるか、このカスタム アクションでファイルを削除するか、XML でフォルダーの削除を強制することができます。そうしないと、アプリケーションがアンインストールされても、ファイルはディスクに残ります。

これは非常に複雑な作業ですが、耐久性があります。または、2 インストーラー オプションを再検討してください。

于 2014-03-05T15:59:16.387 に答える