将程序集添加到包

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 表示例。

MsiAssemblyName 表

组件 名称
ComponentA 名称 简单
ComponentA 版本 1.0.0.0
ComponentA culture 中立
ComponentA publicKeyToken 9d1ec8380f483f5a