主要升级

主要升级是需要更改 ProductCode 属性的产品的全面更新。

典型的主要升级会移除以前版本的应用程序并安装新版本。 主要升级可以重新组织功能组件树。 有关详细信息,请参阅 ProductCode更改产品代码

在使用 Windows Installer 进行主要升级期间,安装程序会在用户计算机上搜索与挂起的升级相关的应用程序,当检测到一个应用程序时,它会从系统注册表中检索已安装应用程序的版本。 然后,安装程序使用升级数据库中的信息确定是否升级已安装的应用程序。

若要启用安装程序升级功能,每个包都应有 UpgradeCode 属性和 Upgrade 表。 每个独立产品或产品套件都应有自己的 UpgradeCode。 有关使用 UpgradeCode 的详细信息,请参阅 使用 UpgradeCode 部分。 升级表中的每条记录都提供了用于标识受升级影响的一组产品的升级代码、产品版本和语言信息组合。 当 FindRelatedProducts 操作检测到系统上安装了受影响的产品时,它会将产品代码追加到 Upgrade 表的 ActionProperty 列中的一个属性。 RemoveExistingProducts 操作MigrateFeatureStates 操作用于删除或迁移 ActionProperty 列表中列出的产品。 包作者还可以按照让应用程序为将来的主要升级做好准备主题中所述的过程操作。

可以创作 Windows Installer 升级包,以便在用户已安装较新版本的应用程序时不会安装主要升级。 有关如何创作不会在较新版本上安装的包的详细信息,请参阅阻止旧包在较新版本上安装

注意

Windows Installer 仅使用产品版本的前三个字段。 有关这些字段的说明,请参阅 ProductVersion 属性。 如果在产品版本中包括第四个字段,安装程序将忽略第四个字段。

 

建议采用通过为更新的产品安装完整包来应用主要升级的方法。 有关如何通过安装产品应用主要升级的信息,请参阅通过安装产品应用主要升级

作为产品修补程序包应用的主要升级不能与其他更新一起排序,并且不是可卸载的修补程序。 有关如何将主要升级修补程序包应用于 Windows Installer 的信息,请参阅通过修补产品的本地安装来应用主要升级。 不建议使用修补程序包应用主要升级,而是通过安装完整产品来应用主要升级。

注意

如果应用程序安装在按用户安装上下文中,则还必须使用按用户上下文执行对应用程序的任何主要升级。 如果应用程序安装在按计算机安装上下文中,则还必须使用按计算机上下文执行对应用程序的任何主要升级。 Windows Installer 不会跨安装上下文安装主要升级。

 

可以使用 UPGRADINGPRODUCTCODE 属性将在 InstallValidate 之后排序的自定义操作当作条件来处理主要升级:

  • 如果希望自定义操作在卸载产品期间运行,但不在主要升级移除产品期间运行,请使用此条件。

    REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE

  • 如果希望自定义操作仅在主要升级期间运行,请使用此条件。

    UPGRADEPRODUCTCODE