分離コンポーネント
インストール パッケージの作成者は、インストーラーがアプリケーションの共有ファイル (一般的に共有 DLL) を共有の場所ではなく、そのアプリケーションのフォルダーにコピーするように指定できます。 このプライベート ファイル セット (DLL) は、アプリケーションでのみ使用されます。 この方法でアプリケーションを共有コンポーネントと一緒に分離すると、次の利点があります。
- アプリケーションでは常に、展開先の共有ファイルのバージョンが使用されます。
- アプリケーションをインストールしても、他のアプリケーションによって他のバージョンの共有ファイルが上書きされることはありません。
- 異なるバージョンの共有ファイルを使用する他のアプリケーションの後続のインストールでは、このアプリケーションで使用されるファイルを上書きすることはできません。
COM の現在の実装では、CLSID/コンテキスト ペアごとに 1 つの完全なパスがレジストリに保持されるため、すべてのアプリケーションで同じバージョンの共有 DLL が強制的に使用されます。 アプリケーションが COM サーバーのプライベート コピーを保持できるようにするには、Windows 2000 のシステム ローダーで .アプリケーションのフォルダー内の LOCAL ファイル。 システム ローダーが .LOCAL ファイルでは、アプリケーションと同じフォルダーにある DLL を優先するように検索ロジックが変更されます。
Windows インストーラーは、IsolateComponents アクションを実行、IsolatedComponent テーブルのComponent_Shared列に指定されたコンポーネント (一般的には共有 DLL) のファイルを、 Component_Application列で指定されたコンポーネント (一般的には .exe ファイル) と同じフォルダーにコピーします。 インストーラーは、このディレクトリに 0 バイトの長さのファイルを作成し、Component_Applicationのキー ファイルの短いファイル名 (通常はアプリケーションの .exeと同じ名前) を付加します。地元の。 インストーラーは、共有場所のコンポーネントの登録を使用し、プライベートな場所のコンポーネントのコピーに関する登録情報を書き込むことはありません。
詳細については、以下を参照してください。