Windows Installer 基本知识

Windows Installer 在用户的计算机上安装和卸载应用程序或软件产品,以称为 Windows Installer 组件(有时称为 WIC 或仅组件)单元执行这些任务。 GUID 标识每个 WIC,这是使用 Windows Installer 的设置的基本安装和参考计数单元。

有关 Windows Installer 的综合文档,请参阅平台 SDK 主题 Windows Installer

创作 VSPackage

Windows Installer 使用安装包,其中包含 Windows Installer 安装、卸载或修复产品以及运行安装用户界面(UI)所需的信息。 每个安装包都包含一个 .msi 文件,其中包含安装数据库、摘要信息流和安装的各个部分的数据流。 若要使用安装程序,必须创作安装。 由于安装程序围绕组件的概念组织安装,并将有关安装的信息存储在关系数据库中,因此创作安装包的过程大致需要执行以下步骤:

  1. 规划设置创作以支持版本控制和并行策略。

  2. 确定要向用户显示的功能。

  3. 将 VSPackage 和依赖项组织到组件中。

  4. 使用信息填充安装数据库。

  5. 验证安装包。

    本文档主要涉及该过程的第一步和第三步。 在这些步骤中,将 VSPackage 功能组织到 WIC 中,以便可以构建版本控制和维护策略,以考虑 Visual Studio 的后续版本。 平台 SDK 的 Windows Installer 文档中详细介绍了其余三个步骤。

主要术语

以下是与 Windows Installer 技术相关的关键术语的定义。

资源文件、注册表项、快捷方式等可能安装到计算机。 这些资源以逻辑方式分组到 Windows Installer 组件中。

Windows Installer 组件 (WIC) 安装的基本单元,表示作为单元安装和卸载的相关资源的逻辑分组。 Windows Installer 组件由唯一组件 ID 或 GUID 标识。 此外,Windows Installer 在 WIC 级别维护其引用计数。 为了获得最大的版本控制灵活性,请在给定 WIC 中包括不超过一个主资源,例如 DLL。 请注意,在标识和填充 WIC 后,为其指定 GUID 并部署它后,无法更改其组合。 有关详细信息,请参阅 将应用程序组织到组件中。

包(Redist 包)一个部署单元,由 .msi 文件和此文件可能指向的外部源文件组成。 包包含 Windows Installer 运行 UI 以及安装或卸载应用程序所需的所有信息。

.msi 文件 A COM 结构化存储文件,其中包含安装应用程序所需的说明和数据。 每个包至少包含一个 .msi 文件。 .msi 文件包含安装程序数据库、摘要信息流,以及一个或多个转换和内部源文件。 要安装的文件可以压缩到内阁中,并存储在 .msi 文件中的流中,或者存储在源介质上的 .msi 文件外存储、压缩或未压缩的文件。 有关详细信息,请参阅 Windows Installer 文件扩展名

Windows Installer 规则强制实施

两组规则通过安装程序的组件确定资源的部署。 Windows Installer 本身维护一个规则集,同时应强制第二个集作为安装作者。

注意

仅当运行 .msi 文件的验证时,才会强制实施 Windows Installer 规则。 然而,你被警告将这些规则视为最佳做法。 有关详细信息,请参阅 验证安装数据库包验证

安装程序强制实施的规则

  • 给定组件中的所有文件都必须安装到同一目录中。 相反,安装到单独文件夹的文件必须属于单独的组件。

  • 每个组件只能有一个密钥路径。 密钥路径只是表示整个组件的文件或注册表项。

组件提供程序职责

  • 后续版本中可能单独交付的任何两个资源都应存在于单独的组件中。 只有在确定这些资源永远不会单独交付时,资源才应分组到同一组件中。 事实上,建议所有主要资源(例如 DLL)始终存在于单独的 WIC 中。 有关详细信息,请参阅 “定义安装程序组件”。

  • 任何版本控制的资源都不应在多个 WIC 中交付。