在 Windows XP 上安装 Win32 程序集供应用程序专用
本主题中的过程介绍如何创建 Windows Installer 包以安装 Win32 程序集。 包将程序集和应用程序清单文件安装到应用程序使用的创作文件夹中。 应用程序清单指定应用程序对专用程序集的依赖关系。 安装包后,专用程序集可供应用程序专属使用。 应用程序清单中指定的程序集依赖项将替代(针对此应用程序)程序集清单文件中指定的任何其他全局程序集依赖项。
在继续之前,最好先了解如何在不使用程序集的情况下创作 Windows Installer 包。 有关详细信息,请参阅安装示例。
在 Windows XP 上安装专用程序集
- 定义包含 Win32 程序集和应用程序清单文件的 Windows Installer 组件。 此组件可以包含应始终随程序集一起安装或删除的其他资源。 此过程的其余步骤介绍如何创作安装数据库来安装此组件。
- 在包含 Win32 程序集和应用程序清单文件的组件的组件表中添加一行。 为此组件代码输入有效的 Windows Installer GUID。 有关详细信息,请参阅更改组件代码和如果违反组件规则会怎么样?
- 安装程序将程序集清单文件复制到包含 MsiAssembly 表的 File_Application 字段中指定的文件的文件夹。
- 在 FeatureComponents 表中添加一行,以便将组件与 Windows Installer 功能相关联。 有关详细信息,请参阅组件和功能。 Windows Installer 功能应该是用户可识别的应用程序功能的一部分。 当用户选择此功能或者应用程序因出错而调用此功能时,将激活该程序集。 如果程序集定义了其他某个功能,请在 Feature 表中为该功能的属性额外添加一行。 如果创作合并模块,则不需要执行此步骤。
- 对于并行程序集,绑定和激活信息(例如 COM 类、接口和类型库)存储在清单文件而不是注册表中。 专用程序集将此信息存储在程序集清单中。 在支持并行程序集的系统上,安装程序将跳过有关 Extension 表、Verb 表、TypeLib 表、MIME 表、Class 表、ProgId 表和 AppId 表中所输入组件的任何信息的处理。 可以将绑定和激活信息输入到这些表中,以供不支持并行程序集共享的系统使用。
- 并行安装不会全局注册程序集。 如果在 SelfReg 表中输入了任何自行注册信息,安装程序将跳过自行注册组件。 可以将自行注册信息输入到 SelfReg 表中,以便在不支持并行程序集共享的系统上自行注册组件。
- 将任何其他注册表信息(不包括组件的绑定和激活或自行注册)添加到 Registry 表、RemoveRegistry 表和 Environment 表。
- 在支持并行共享的操作系统上,安装程序会跳过此组件的 IsolatedComponent 表。 如果希望程序集在支持本地文件的系统上是专用的,请在此表中输入信息。
- 在 MsiAssembly 表中为包含 Win32 程序集的组件添加一行。 在 MsiAssembly 表的 Attributes 字段中输入值 1,以指定这是一个 Win32 程序集。 在 MsiAssembly 表的 File_Application 字段中输入专用程序集的文件密钥。 将 MsiPublishAssemblies 操作添加到 InstallExecuteSequence 表或 AdvtExecuteSequence 表。 将 MsiUnpublishAssemblies 操作添加到 InstallExecuteSequence 表。 将程序集和清单文件的文件夹创作到 Directory 表中。 此文件夹应位于应用程序的根目录中,并包含 MsiAssembly 表的 File_Application 字段中指定的文件。 在安装应用程序期间,安装程序会解析 Directory 表 以获得此文件夹的路径。 有关详细信息,请参阅使用 Directory 表。
- 将行添加到组件的 MsiAssemblyName 表。 为清单的 assemblyIdentity 节中指定的每个名称和值对添加一行。 有关详细信息,请参阅 MsiAssemblyName 表。