パッケージへのアセンブリの追加

Windows インストーラー開発者は、このトピックのガイドラインを使用して、アセンブリを含む Windows インストーラー パッケージを作成できます。

次のガイドラインは、Win32 アセンブリと、Microsoft .NET Framework の共通言語ランタイムで使用されるアセンブリに適用されます。

  • Windows インストーラー コンポーネントに含めるアセンブリは 1 つのみとする必要があります。
  • アセンブリ内のすべてのファイルは 1 つのコンポーネント内に存在する必要があります。
  • アセンブリを含む各コンポーネントは、MsiAssembly テーブルにエントリが必要です。
  • 各アセンブリの厳密なアセンブリ キャッシュ名を、MsiAssemblyName テーブル内に作成する必要があります。
  • アセンブリのための COM 相互運用機能を登録するときは、Class テーブルの代わりに Registry テーブルを使用します。
  • 厳密な名前が同じアセンブリは同じアセンブリです。 同じアセンブリが別々のアプリケーションによってインストールされる場合、アセンブリを含むコンポーネントでは、Component テーブルの ComponentId に同じ値を使用する必要があります。

Note

製品アドバタイズでは、さまざまなアプリケーションでインストールおよび使用できるアセンブリが識別されます。 製品アドバタイズでは、プライベート アセンブリは識別されません。

 

Win32 アセンブリの追加

Win32 アセンブリを含めるときは、次のガイドラインを使用します。

  • Win32 アセンブリを含むコンポーネントの Component テーブル内の KeyPath 値を Null にすることはできません。
  • Win32 ポリシー アセンブリを含むコンポーネントの Component テーブル内の KeyPath 値は、マニフェスト ファイルにする必要があります。
  • ポリシー アセンブリではない Win32 アセンブリを含むコンポーネントの Component テーブル内の KeyPath 値を、マニフェスト ファイルまたはカタログ ファイルにすることはできません。 アセンブリ内の別のファイルである必要があります。
  • Win32 アセンブリのマニフェストの assemblyIdentity セクションに一覧表示されている名前と値のペアごとに、MsiAssemblyName テーブルに行を追加します。

.NET Framework で使用されるアセンブリの追加

.NET Framework の共通言語ランタイムで使用されるアセンブリを含める場合は、次のガイドラインを使用します。

  • そのアセンブリを含むコンポーネントの Component テーブル内の KeyPath 値を Null にすることはできません。
  • 共通言語ランタイムで使用されるアセンブリをグローバル アセンブリ キャッシュにインストールする場合、MsiAssembly テーブルの File_Application 列の値は Null である必要があります。
  • アセンブリの厳密な名前の各属性の行を MsiAssemblyName テーブルに追加します。 すべてのアセンブリには、MsiAssemblyName テーブルで指定されている Name、Version、および Culture 属性が必要です。 グローバル アセンブリには publicKeyToken 属性が必要です。 次のテーブルは、共通言語ランタイムで使用されるグローバル アセンブリの MsiAssemblyName テーブルの例です。

MsiAssemblyName テーブル

コンポーネント 名前 値
ComponentA 名前 simple
ComponentA version 1.0.0.0
ComponentA カルチャ 中立
ComponentA publicKeyToken 9d1ec8380f483f5a