MigrateFeatureStates 動作

MigrateFeatureStates 動作會在升級期間使用,以及在透過相關應用程式安裝新應用程式時使用。 MigrateFeatureStates 會讀取現有應用程式中的功能狀態,然後在擱置的安裝中設定這些功能狀態。 只有在新功能樹狀結構未從原始變更時,方法才有用。

MigrateFeatureStates 動作只會在第一次安裝產品時執行。 MigrateFeatureStates 巨集指令不會在維護模式或卸載期間執行。

MigrateFeatureStates 巨集指令會依序執行 Upgrade 資料表 的每個記錄,並將每個資料列中的升級程式碼、產品版本和語言與安裝在系統上的所有產品進行比較。 如果 MigrateFeatureStates 巨集指令偵測到對應,而且 msidbUpgradeAttributesMigrateFeatures 位旗標是在 Upgrade 資料表的 Attributes 資料行中設定,安裝程式會查詢產品的現有功能狀態,並針對新應用程式中的相同功能設定這些狀態。 如果未設定 預先選取 的屬性,動作只會移轉功能狀態。

順序限制

MigrateFeatureStates 動作應該緊接在 CostFinalize 動作之後。 MigrateFeatureStates 必須在 InstallUISequence 資料表InstallExecuteSequence 資料表中排序。 如果動作已在 InstallUISequence 中執行,安裝程式會防止 MigrateFeatureStates 在 InstallExecuteSequence 中執行。

ActionData 訊息

MigrateFeatureSettings 會為每個產品傳送動作資料訊息。

備註

如果多個已安裝的產品共用功能,該功能的安裝狀態可能會因產品而異。 MigrateFeatureState 動作會在移轉功能安裝狀態時使用下列優先順序:執行本機、從來源執行、公告和卸載。 例如,已安裝的產品 A 可能會有功能 Y 作為INSTALLSTATE_LOCAL,而已安裝的產品 B 可能會有功能 Y 作為INSTALLSTATE_ABSENT。 如果升級會安裝產品 C,並將功能 Y 的安裝狀態移轉,MigrateFeatureState 會將產品 C 中功能 Y 的安裝狀態設定為 INSTALLSTATE_LOCAL。

如需如何使用 MigrateFeatureStates 動作進行產品升級的詳細資訊,請參閱 準備未來主要升級的應用程式