共用方式為


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 巨集指令進行產品升級的詳細資訊,請參閱 準備未來主要升級的應用程式