パッケージへのアセンブリの追加
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 テーブルの例です。
コンポーネント | 名前 | 値 |
---|---|---|
ComponentA | 名前 | simple |
ComponentA | version | 1.0.0.0 |
ComponentA | カルチャ | 中立 |
ComponentA | publicKeyToken | 9d1ec8380f483f5a |