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

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