變更產品代碼
產品名稱是 GUID,這是應用程式或產品的主要識別。 請參閱 產品代碼。
符合下列指導方針的更新通常不需要變更產品代碼,而且可以處理為 小型更新,或者如果版本要變更,則為 次要升級:
- 更新可以放大或減少功能元件樹狀結構,但不得重新組織 Feature 和 FeatureComponents 資料表所描述之功能與元件的現有階層。 它可以將新功能新增至現有的功能元件樹狀結構。 如果移除父功能,它也必須移除移除功能的所有子功能。
- 更新可以將新的元件新增至新的或現有的功能。
- 更新不得變更任何元件的元件程式碼。 因此,小型更新或次要升級絕對不能變更元件金鑰檔的名稱,因為這需要變更元件程式碼。
- 更新不得變更安裝套件.msi檔案的名稱。 相反地,因為它修改封裝,所以應該變更封裝程式碼。 請注意,這表示更新可以變更.msi檔案中的資料表、自訂動作和對話方塊,而不需變更檔案名。
- 更新可以新增、移除或修改兩個或多個功能未共用之元件的檔案、登錄機碼或快捷方式。 如果更新修改了已建立版本的檔案,該檔案的版本必須在 File 資料表中遞增。 如果更新移除資源,它也應該更新 RemoveFile 和 RemoveRegistry 資料表,以移除已安裝的任何未使用檔案、登錄機碼或快捷方式。
- 由兩個或多個功能共用的元件更新必須與使用元件的所有應用程式和功能回溯相容。 只要變更與回溯相容,更新就可以修改共用元件的資源,例如檔案、登錄專案和快捷方式。 不建議更新從共用元件新增或移除檔案、登錄專案或快捷方式。
- 小型更新會隨附為 Windows Installer 修補程式套件。 (一個完整產品 CD-ROM 通常不會提供小型 update.)
如果更新有下列任一項成立,則必須變更產品代碼:
- 必須同時安裝相同系統上的原始和更新產品。
- .msi檔案的名稱已變更。
- 現有元件的元件程式碼已變更。
- 元件已從現有的功能中移除。
- 現有的功能已變成現有功能的子系。
- 現有的子功能已從其父功能中移除。
請注意,將新的子功能完全由新的元件組成,新增至現有的功能不需要變更產品代碼。
您可以在 Feature 資料表的 Attributes 欄位中包含 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent 來撰寫新的子功能。 如果次要升級只會新增子功能,則 REINSTALL=ALL 就足以強制安裝新的子功能。 如需詳細資訊,請參閱 控制特徵選取狀態。
使用者可能會隱藏新的子功能。 若要同步處理新子功能的安裝狀態與其父功能,請設定子功能的 msidbFeatureAttributesFollowParent 和 msidbFeatureAttributesUIDisallowAbsent 位。
相關主題