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