復原自定義動作
當安裝程式處理安裝文稿時,它會同時產生復原腳本。 除了回復腳本之外,安裝程式也會儲存安裝期間所刪除之每個檔案的複本。 這些檔案會保留在隱藏的系統目錄中。 安裝完成後,會刪除復原腳本和已儲存的檔案。 如果安裝失敗,安裝程式會嘗試復原安裝期間所做的變更,並還原計算機的原始狀態。
雖然將數據列插入資料庫數據表來排程系統作業的自定義動作會由安裝復原來反轉,但直接變更系統的自定義動作,或發出命令給其他系統服務的自定義動作一律無法由回復來反轉。 復原自定義動作是安裝程式只在安裝復原期間執行的動作,其用途是反轉已對系統進行變更的自定義動作。
復原自定義動作是一種 延後執行自定義動作類型,因為其執行會在安裝順序期間叫用時延遲。 不同於一般延後自定義動作,因為它只會在復原期間執行。 復原自定義動作必須一律在動作順序中復原的延遲自定義動作之前。 復原自定義動作也應該處理延遲自定義動作在執行中間中斷的情況。 例如,如果使用者在執行自定義動作時按下 [取消] 按鈕。
請注意,復原自定義動作無法以異步方式執行。 請參閱 同步和異步自定義動作。
復原自訂動作的補充是 認可自訂動作。 安裝程式會在安裝順序期間執行認可自定義動作、將自定義動作複製到回復腳本中,但在復原期間不會執行動作。
請注意,復原自定義動作可能無法移除認可自定義動作所做的所有變更。 雖然安裝程式會將回復和認可自定義動作寫入回復腳本,但認可自定義動作只會在安裝程式成功處理安裝腳本之後執行。 認可自定義動作是復原腳本中要執行的第一個動作。 如果認可自定義動作失敗,安裝程式會起始復原,但只能回復已寫入回復腳本的作業。 這表示,視認可自定義動作而定,復原可能無法復原動作所做的變更。 您可以藉由撰寫自定義動作來忽略傳回碼,以忽略認可自定義動作中的失敗。
當安裝程式執行復原自定義動作時,將設定的唯一模式參數是MSIRUNMODE_ROLLBACK。 如需執行模式參數的描述,請參閱 MsiGetMode。
您可以將選項旗標新增至 CustomAction 數據表的 [類型] 欄位,來指定復原自定義動作。 如需指定復原自定義動作的選項旗標,請參閱 自定義動作 In-Script 執行選項。
復原和認可自定義動作在復原停用時不會執行。 如果套件作者需要這些類型的自定義動作才能正確安裝,則它們應該使用 RollbackDisabled 屬性,以避免在停用復原時繼續安裝。 如需如何停用回覆的資訊,請參閱 復原安裝 (Windows Installer)。