この問題に対する 100% の優れた答えはありません。関連する問題に対処しようとする、使用中の基盤となるテクノロジに応じて、さまざまな規則があります。これらには以下が含まれます:
- 参照カウントを追跡する SharedDLLs レジストリ キー
- Windows インストーラーのコンポーネント数 (複数の .msi パッケージが、マージ モジュールなどから同一のコンポーネントをインストールする場合)
- その他のパッケージ レベルの参照スキーム
- システム フォルダからアンインストールしない
ただし、これらは、特定のファイルの場所が 1 つしかない場合にのみ機能します。あなたの場合、行間を読むと、capicom.dll のファイルの場所は複数あると思われますが、COM 登録のレジストリの場所は 1 つだけです。したがって、コピーをインストールすると、既存の COM 登録が上書きされる可能性があります。コピーが配置されている間は、すべて問題ありません。ただし、コピーを削除したり、登録を解除したりしても、COM 登録は以前のコピーには戻りません。
capicom.dll のファイル コピーが 1 つだけであることを保証できない場合、私が考える最善の選択肢は、 capicom.dll のプライベート コピーを参照する実行可能ファイルで登録不要の COM マニフェストを使用し、プライベート コピーの登録をスキップすることです。 capicom.dll の。InstallShield を使用すると、外部マニフェストを作成できます。また、マニフェストを自分で作成して実行可能ファイルに埋め込むこともできます。capicom をロードする必要があるインプロセス COM サーバーを自分で公開する場合は、アクティベーション コンテキストが機能することを確認するために、さらに注意してください。