サイド バイ サイド共有のための Win32 アセンブリのインストール

Win32 アセンブリをインストールするための Windows インストーラー パッケージを作成する方法を次に示します。 このパッケージは、アプリケーションを共有して使用するために、Winsxs フォルダーにサイド バイ サイド アセンブリをインストールします。 このパッケージをインストールすると、アセンブリ マニフェスト ファイルでアセンブリへの依存関係を指定するどのアプリケーションでも、共有アセンブリをグローバルに使用できるようになります。 インストーラーは、システムでサイド バイ サイド アセンブリをグローバルに登録しません。

マージ モジュールを使用して、共有サイド バイ サイド アセンブリをインストールできます。

続行する前に、アセンブリなしで Windows インストーラー パッケージを作成する方法を理解しておく必要があります。 単純なインストールを作成する方法の例については、「インストール例」を参照してください。

共有アセンブリをサイド バイ サイドでインストールするには

  1. Win32 アセンブリを含む Windows インストーラー コンポーネントを定義します。 このコンポーネントには、常にアセンブリと共にインストールまたは削除する必要がある他のリソースが含まれる場合があります。 アセンブリのないインストールの場合と同様に、アプリケーションの他のすべてのコンポーネントを作成できます。 Win32 アセンブリを含むコンポーネントの行を Component テーブルに追加します。 このコンポーネント コードの有効な Windows インストーラー GUID を入力します。 このコンポーネントのキー パスとしてマニフェスト ファイルを使用しないでください。
  2. FeatureComponents テーブルに行を追加して、コンポーネントを Windows インストーラーの機能に関連付けます。 詳細については、「コンポーネントと機能」を参照してください。 Windows インストーラー機能は、ユーザーが認識できるアプリケーションの機能の一部である必要があります。 アセンブリは、この機能がユーザーによって選択されるか、アプリケーションによってフォールトになったときにアクティブ化されます。 アセンブリで追加の機能を定義する場合は、機能の属性を表す追加の行を Feature テーブルに追加します。 この手順は、マージ モジュールを作成するときには必要ありません。
  3. サイド バイ サイド アセンブリの場合、COM クラス、インターフェイス、タイプ ライブラリなど、バインドとアクティブ化の情報はレジストリではなくマニフェスト ファイルに格納されます。 共有アセンブリは、この情報をアセンブリ マニフェストに格納します。 サイド バイ サイド アセンブリをサポートするシステムでは、インストーラーは Extension テーブルVerb テーブルTypeLib テーブルMIME テーブルClass テーブルProgId テーブルAppId テーブルに入力されたコンポーネントに関する一切の情報の処理をスキップします。 これらのテーブルには、サイド バイ サイド アセンブリ共有をサポートしていないシステムで使用するために、バインドとアクティブ化の情報を入力できます。
  4. サイド バイ サイド インストールではアセンブリがグローバルに登録されません。何らかの自己登録情報が SelfReg テーブルに入力されている場合、インストーラーはコンポーネントの自己登録をスキップします。 サイド バイ サイド アセンブリ共有をサポートしていないシステムでのコンポーネントの自己登録のために、自己登録情報を SelfReg テーブルに入力できます。
  5. コンポーネントのバインドとアクティブ化または自己登録を除くその他のレジストリ情報を、Registry テーブルRemoveRegistry テーブルEnvironment テーブルに追加します。
  6. これは共有アセンブリであるため、.local ファイルは生成されません。 IsolatedComponent テーブルには、このコンポーネントの情報を含めないでください。 サイド バイ サイド共有をサポートするオペレーティング システムでは、インストーラーはこのコンポーネントに関しては IsolatedComponent テーブルをスキップします。 .local ファイルをサポートするシステムでアセンブリをプライベートにする場合は、IsolatedComponent テーブルに情報を追加します。
  7. サイド バイ サイド共有を有効にするには、Win32 アセンブリを Winsxs フォルダーにインストールする必要があります。 これを行うには、このアセンブリに関しては MsiAssembly テーブルの File_Application 列を null のままにします。 これにより、コンポーネントのフォルダーではなく WinSxS フォルダーにアセンブリをインストールするようにインストーラーに指示します。 Win32 アセンブリを含む行をコンポーネントの MsiAssembly テーブルに追加します。 MsiAssembly テーブルの Attributes フィールドに値 1 を入力して、これが Win32 アセンブリであることを指定します。 共有アセンブリの場合、File_Application フィールドは空のままにします。 MsiPublishAssemblies アクションInstallExecuteSequence テーブルまたはAdvtExecuteSequence テーブルに追加します。 MsiUnpublishAssemblies アクションを InstallExecuteSequence テーブルに追加します。
  8. コンポーネントの MsiAssemblyName テーブルに行を追加します。 マニフェストの assemblyIdentity セクションで指定された名前と値のペアごとに 1 行を追加します。 例については、「MsiAssemblyName テーブル」を参照してください。