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

次に、Win32 アセンブリをインストールするWindows インストーラー パッケージを作成する方法について説明します。 パッケージは、アプリケーションの共有使用のために Winsxs フォルダーにサイド バイ サイド アセンブリをインストールします。 パッケージのインストール後、共有アセンブリは、アセンブリ マニフェスト ファイル内のアセンブリへの依存を指定する任意のアプリケーションでグローバルに使用できます。 インストーラーは、システムにサイド バイ サイド アセンブリをグローバルに登録しません。

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

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

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

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