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