共用方式為


排序自訂動作

自訂動作的排程方式與標準動作相同。

在序列資料表中排程自訂動作

  1. (輸入自訂動作名稱,這是 CustomAction) 資料表的主鍵,並進入 Sequence 資料表的 Action 資料行。
  2. Sequence 資料表的 Sequence 資料行中,輸入相對於資料表中其他動作的自訂動作序列。 如需順序資料表的詳細資訊,請參閱 使用時序表
  3. 若要有條件地略過動作,請在 Sequence 資料表的 [條件] 資料行中輸入條件運算式。 如果運算式評估為 FALSE,安裝程式會略過此動作。

如同標準動作的情況,只有在內部使用者介面設定為完整層級時, 才會執行 InstallUISequenceAdminUISequence 中排程的自訂動作。 UI 層級是使用 MsiSetInternalUI 函式來設定。

InstallExecuteSequence、AdminExecuteSequenceAdvtExecuteSequence資料表中排程的標準和自訂動作不會進行系統變更。 相反地,安裝程式會將腳本中的執行記錄排入佇列,以供安裝服務期間後續執行。 如果沒有安裝服務,則這些資料表中排程的動作會以與 UI 順序相同的內容執行。

如果未註冊安裝程式伺服器,則會在用戶端上執行自訂動作。 如果伺服器已註冊並使用完整的 UI 模式,則會在伺服器端執行自訂動作。

如果搭配伺服器使用完整 UI,則會在用戶端上執行 InstallValidate 動作之前的初始動作,以允許完整互動。 然後,執行會切換至會重複這些動作並執行腳本執行動作的伺服器。 這會接著傳回用戶端以進行最終動作。

請注意,如果將產品頂端功能設定為不存在, 則 REMOVE 屬性在 InstallValidate 動作之後可能不等於 ALL。 這表示任何相依于 REMOVE=ALL 的自訂動作都必須在 InstallValidate 動作之後排序。 自訂動作可能會檢查 REMOVE,以判斷是否已將產品設定為完全卸載。

參考已安裝檔案作為其來源的自訂動作,例如自訂動作類型 17 (DLL) 、自訂動作類型 18 (EXE) 、自訂動作類型 21 (JScript) ,以及自訂動作類型 22 (VBScript) ,必須遵循下列排序限制。

  • 自訂動作必須在 CostFinalize 動作之後排序,以便解析參考檔案的路徑。
  • 如果電腦上尚未安裝來源檔案,則必須在 InstallFiles之後排序) 腳本內 (自訂動作。
  • 如果電腦上尚未安裝來源檔案,則必須在 InstallInitialize 動作之後排序未推斷的自訂動作。

下列排序限制適用于變更或更新 Windows Installer 套件的自訂動作。

  • 如果自訂動作變更封裝,例如將資料列新增至資料表,則必須在 InstallInitialize 動作之前排序動作。
  • 如果自訂動作進行會影響成本的變更,則應在 CostInitialize 動作之前進行排序。
  • 如果自訂動作變更功能或元件的安裝狀態,則必須在 InstallValidate 動作之前進行排序。