延後執行自定義動作
延遲執行自定義動作的目的是將系統變更的執行延遲到執行安裝腳本的時間。 這與一般自定義動作或標準動作不同,安裝程式會在序列數據表或 呼叫 msiDoAction時立即執行動作。 延後執行自定義動作可讓封裝作者在執行安裝腳本的特定時間點指定系統作業。
安裝程式不會在處理安裝順序時執行延後執行自定義動作。 相反地,安裝程式會將自定義動作寫入安裝腳本。 在此案例中,安裝程式設定的唯一模式參數是MSIRUNMODE_SCHEDULED。 如需執行模式參數的描述,請參閱 MsiGetMode。
延後執行自定義動作必須在執行腳本產生之 區段內的執行順序數據表中排程。 延遲執行自定義動作必須在 InstallInitialize 之後,再於動作順序中 InstallFinalize。
設定屬性、功能狀態、元件狀態或目標目錄,或將數據列插入順序數據表來排程系統作業的自定義動作,在許多情況下可以安全地使用立即執行。 不過,直接變更系統的自定義動作,或呼叫另一個系統服務,必須延後到執行安裝腳本的時間。 如需自定義動作與主要安裝線程之間潛在衝突的詳細資訊,請參閱 同步和異步自定義動作。
因為安裝腳本可以在寫入安裝會話之外執行,所以在執行安裝腳本期間,會話可能已不存在。 這表示在安裝順序期間,原始會話句柄和屬性數據集無法供延後執行自定義動作使用。 呼叫動態連結庫 (DLL) 的延後自定義動作會傳遞句柄,此句柄只能用來取得非常有限的資訊量,如 取得延遲執行自定義動作的內容資訊中所述。
請注意,延遲的自定義動作,包括 復原自定義動作 和 認可自定義動作,是唯一可在使用者安全性內容外部執行的動作類型。
相關主題