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 有不同的 ProductCodes。 由於產品已指派相同的 UpgradeCode,因此無法撰寫 Upgrade 數據表,以區分舊版產品 A 與舊版產品 B。在此情況下,您將無法安裝忽略產品 B 的產品 A 升級。因為這些是不同的產品,因此每個產品都應該指派不同的 UpgradeCode。
- 英語和法語版本的產品 A 與相同的 ProductVersion 和 UpgradeCode一起出貨。 產品 A 英文和法文版本在 ProductLanguages 和 ProductCodes上有不同之處。 雖然英文和法文版本都共用相同的 UpgradeCode,但可以撰寫 Upgrade 數據表,讓只會偵測及升級較舊的英文版本,並忽略較舊的法文版本。 產品的不同語言版本可以使用相同的 UpgradeCode。