Windows XP でのアプリケーションのプライベート使用のための Win32 アセンブリのインストール
このトピックの手順では、Win32 アセンブリをインストールするWindows インストーラー パッケージを作成する方法について説明します。 パッケージは、アセンブリとアプリケーション マニフェスト ファイルを、アプリケーションが使用する作成済みフォルダーにインストールします。 アプリケーション マニフェストは、プライベート アセンブリに対するアプリケーションの依存関係を指定します。 パッケージをインストールした後、プライベート アセンブリはアプリケーションを排他的に使用できます。 アプリケーション マニフェストで指定されているアセンブリの依存関係は、アセンブリ マニフェスト ファイルで指定されているその他のグローバル アセンブリ依存関係をオーバーライドします (このアプリケーションの場合)。
続行する前に、アセンブリを使用せずにWindows インストーラー パッケージを作成する方法を理解しておくことをお勧めします。 詳細については、 インストール例を参照してください。
Windows XP にプライベート アセンブリをインストールするには
- Win32 アセンブリとアプリケーション マニフェスト ファイルを含むWindows インストーラー コンポーネントを定義します。 このコンポーネントには、アセンブリと共に常にインストールまたは削除する必要がある他のリソースを含めることができます。 この手順の残りの手順では、インストール データベースを作成してこのコンポーネントをインストールする方法について説明します。
- Win32 アセンブリとアプリケーション マニフェスト ファイルを含むコンポーネントの Component テーブル に行を追加します。 このコンポーネント コードの有効なWindows インストーラー GUID を入力します。 詳細については、「コンポーネントコードの変更」および「コンポーネントルールが壊れた場合の動作」を参照してください。
- インストーラーは、アセンブリ マニフェスト ファイルを 、MsiAssembly テーブルの File_Application フィールドに指定されたファイルを含むフォルダーにコピーします。
- コンポーネントを Windows インストーラー機能に接続する FeatureComponents テーブルに行を追加します。 詳細については、「 コンポーネントと機能」を参照してください。 Windows インストーラー機能は、ユーザーが認識できるアプリケーション機能の一部である必要があります。 アセンブリは、この機能がユーザーによって選択されるか、アプリケーションによってエラーが発生したときにアクティブ化されます。 アセンブリで追加のフィーチャが定義されている場合は、フィーチャ属性の フィーチャー テーブル に追加の行を追加します。 マージ モジュールを作成する場合、この手順は必要ありません。
- サイド バイ サイド アセンブリの場合、バインドとアクティブ化の情報 (COM クラス、インターフェイス、タイプ ライブラリなど) は、レジストリではなくマニフェスト ファイルに格納されます。 プライベート アセンブリは、この情報をアセンブリ マニフェストに格納します。 サイド バイ サイド アセンブリをサポートするシステムでは、インストーラーは 拡張テーブル、 Verb テーブル、 TypeLib テーブル、 MIME テーブル、 クラス テーブル、 ProgId テーブル、および AppId テーブルに入力されたコンポーネントに関する情報の処理をスキップします。 サイド バイ サイド アセンブリ共有をサポートしていないシステムで使用するために、バインディングとアクティブ化の情報をテーブルに入力できます。
- サイド バイ サイド インストールでは、アセンブリはグローバルに登録されません。 SelfReg テーブルに自己登録情報が入力されている場合、インストーラーはコンポーネントの自己登録をスキップします。 セルフ登録情報を SelfReg テーブルに入力して、サイド バイ サイド アセンブリ共有をサポートしていないシステム上のコンポーネントを自己登録できます。
- その他のレジストリ情報 (コンポーネントのバインドとアクティブ化または自己登録を除く) を 、レジストリ テーブル、 RemoveRegistry テーブル、および Environment テーブルに追加します。
- インストーラーは、サイド バイ サイド共有をサポートするオペレーティング システム上のこのコンポーネントの IsolatedComponent テーブル をスキップします。 ローカル ファイルをサポートするシステムでアセンブリをプライベートにする場合は、このテーブルに情報を入力します。
- Win32 アセンブリを含むコンポーネントの MsiAssembly テーブルに 行を追加します。 MsiAssembly テーブルの [属性] フィールドに値 1 を入力して、これが Win32 アセンブリであることを指定します。 MsiAssembly テーブルの File_Application フィールドに、プライベート アセンブリのファイル キーを入力します。 MsiPublishAssemblies アクションを InstallExecuteSequence テーブルまたは AdvtExecuteSequence テーブルに追加します。 MsiUnpublishAssemblies アクションを InstallExecuteSequence テーブルに追加します。 アセンブリとマニフェスト ファイルのフォルダーを ディレクトリ テーブルに作成します。 このフォルダーは、アプリケーションのルート ディレクトリにあり、 MsiAssembly テーブルの File_Application フィールドに指定されたファイルが含まれている必要があります。 アプリケーションのインストール中に、インストーラーは、このフォルダーへのパスの ディレクトリ テーブル を解決します。 詳細については、「 ディレクトリ テーブルの使用」を参照してください。
- コンポーネントの MsiAssemblyName テーブルに 行を追加します。 マニフェストの assemblyIdentity セクションで指定された名前と値のペアごとに 1 行を追加します。 詳細については、 MsiAssemblyName テーブルを参照してください。