将程序集添加到包
Windows Installer 开发人员可以遵循本主题中的准则来创作包含程序集的 Windows Installer 包。
以下准则适用于 Win32 程序集,以及 Microsoft .NET Framework 公共语言运行时使用的程序集。
- 一个 Windows Installer 组件不应包含多个程序集。
- 程序集中的所有文件应包含一个组件中。
- 包含程序集的每个组件应在 MsiAssembly 表中有一个条目。
- 应将每个程序集的强程序集缓存名称写入 MsiAssemblyName 表。
- 为程序集注册 COM Interop 时使用 Registry 表而不是 Class 表。
- 具有相同强名称的程序集是相同的程序集。 当不同的应用程序安装同一个程序集时,包含该程序集的组件应在其 Component 表中使用相同的 ComponentId 值。
注意
产品播发用于标识可由不同应用程序安装和使用的程序集。 产品播发不会标识专用程序集。
添加 Win32 程序集
在包含 Win32 程序集时请遵循以下准则:
- 包含 Win32 程序集的组件的 Component 表中的 KeyPath 值不应为 Null。
- 包含 Win32 策略程序集的组件的 Component 表中的 KeyPath 值应是清单文件。
- 包含 Win32 程序集(而不是策略程序集)的组件的 Component 表中的 KeyPath 值不应是清单文件或目录文件。 它应是程序集中的其他文件。
- 在 MsiAssemblyName 表中,为 Win32 程序集清单的 assemblyIdentity 节中列出的每个名称和值对添加一行。
添加与 .NET Framework 配合使用的程序集
在包含 .NET Framework 公共语言运行时使用的程序集时,请遵循以下准则。
- 包含该程序集的组件的 Component 表中的 KeyPath 值不应为 Null。
- 将公共语言运行时使用的程序集安装到全局程序集缓存时,MsiAssembly 表的 File_Application 列中的值必须为 Null。
- 在 MsiAssemblyName 表中为程序集强名称的每个属性添加一行。 所有程序集必须具有 MsiAssemblyName 表中指定的 Name、Version 和 Culture 属性。 全局程序集需要 publicKeyToken 属性。 下表是公共语言运行时使用的全局程序集的 MsiAssemblyName 表示例。
组件 | 名称 | 值 |
---|---|---|
ComponentA | 名称 | 简单 |
ComponentA | 版本 | 1.0.0.0 |
ComponentA | culture | 中立 |
ComponentA | publicKeyToken | 9d1ec8380f483f5a |