0

WIXツールセットのheatutilを使用して、dllのCOM登録を生成します。そのdllを使用している製品が1つだけになるまで、すべて正常に動作します。

しかし、このdllがすでに別の製品によって登録されているか、後でインストールされる製品によって使用されている場合、私の製品をアンインストールするとDLL登録が削除され、他のアプリケーションが破損します。

この問題を克服する方法はありますか?生成されたコンポーネントを永続的にするという考えはありますが、それを実現する簡単な方法はないようです。また、アプリケーションがそのdllを使用するopnyである場合は、DLL登録を削除する方がよいため、理想的な状況ではありません。

もう1つの問題は、dllを登録すると、新しいバージョンであっても以前の登録が変更されることです。繰り返しますが、他のアプリケーションを壊します。すでにインストールされている場合は、neverバージョンを使用したいと思います。

説明されている問題を克服するための簡単な解決策を誰かが推奨できますか?

4

1 に答える 1

1

共有 DLL を追加するときは、両方の製品で同じ ID を持つコンポーネントに DLL をカプセル化する必要があります。コンポーネントは、まだインストールされていない場合にインストールされます。それを使用する最後の製品がアンインストールされると削除されます。WiX ライブラリを使用して、共有コンポーネントを処理します。

その共有 DLL のインストール場所を見つける必要があります。製品 A をアンインストールすると、製品のインストール フォルダが削除され、製品 B についても同じことが表示されることが予想されます。したがって、共有 DLL は共通ファイル ツリーにあるはずです。

COM 登録には常に COM サーバー DLL への絶対パスがあるため、適切な製品の DLL に常にバインドされます。製品インストーラーが共有 DLL に関する知識を共有しない場合、製品は DLL を共有しないようにする必要があります。これを実現するには、 Registration Free COMを使用できます。

于 2013-01-03T16:54:01.023 に答える