使用 UpgradeCode
UpgradeCode 主要用于支持重大升级,尽管小型和次要升级补丁可能会使用 UpgradeCode 进行产品验证。 在重大升级期间,FindRelatedProducts、MigrateFeatureStates 和 RemoveExistingProducts 操作会检测、迁移和删除产品的先前版本。 FindRelatedProducts 操作使用基于 UpgradeCode、ProductLanguage 和 ProductVersion 的条件搜索产品。 这些条件在 Upgrade 表中指定。
在给定 FindRelatedProducts 操作所使用的条件的情况下,单个产品的不同语言和版本的 UpgradeCode 可能是相同的。 这是因为你可以使用 Upgrade 表根据版本和语言行区分产品。
对于同一产品的不同版本,你可能永远不需要更改 UpgradeCode。 每个独立产品都应有其自己的 UpgradeCode。 产品套件也应有其自己的 UpgradeCode。 这样做将使套件能够通过使用 Upgrade 表中的多行内容来升级以前版本的套件或独立产品。
以下两个场景演示了 UpgradeCode 的用法。
- 产品 A 和产品 B 附带相同的 ProductLanguage、ProductVersion 和 UpgradeCode。 产品 A 和产品 B 有不同的 ProductCode。 由于为产品分配了相同的 UpgradeCode,因此无法创作 Upgrade 表来区分产品 A 的旧版本与产品 B 的旧版本。在这种情况下,将无法对忽略产品 B 的产品 A 进行升级安装。由于它们是不同的产品,因此应该为每个产品分配不同的 UpgradeCode。
- 产品 A 的英语和法语版本附带相同的 ProductVersion 和 UpgradeCode。 产品 A 的英语和法语版本有不同的 ProductLanguages 和 ProductCodes。 即使英语和法语版本具有相同的 UpgradeCode,也可以创作 Upgrade 表,以便只检测和升级旧的英语版本,而忽略旧的法语版本。 产品的不同语言版本可以使用相同的 UpgradeCode。