Share via


InstallValidate 動作

InstallValidate 動作會確認成本已屬性的所有磁片區都有足夠的空間可供安裝使用。 如果有任何磁片區不足磁碟空間,InstallValidate 動作就會結束安裝,併發生嚴重錯誤。

InstallValidate 巨集指令也會通知使用者,如果一或多個要覆寫或移除的檔案目前正由使用中的進程使用中。 如需詳細資訊,請參閱 系統重新開機

序列限制

CostFinalize巨集指令和任何 UI 對話方塊順序,允許使用者修改選取狀態和/或目錄,應該在 InstallValidate 巨集指令之前排序。

變更功能或元件的安裝狀態的自訂動作必須在 InstallValidate 動作之前排序。

ActionData 訊息

沒有 ActionData 訊息。

備註

一般而言,當使用者嘗試起始檔案複製時,先前的 UI 對話方塊順序應該執行與 InstallValidate 動作相同的驗證。 如果選取的磁片區沒有足夠的空間可供安裝,此 UI 對話方塊順序應該會顯示 [ 磁碟空間 不足] 對話方塊。 如果磁碟空間不足,應該撰寫 UI 對話方塊,以防止使用者繼續安裝。 在無訊息安裝的情況下,沒有使用者介面,如果磁碟空間不足,InstallValidate 動作就會終止安裝。 如果啟用記錄,則會在記錄檔中記錄提前終止的原因。

如果檔案在檔案 成本期間開啟任何檔案以供執行或修改,則會將專案新增至內部 FilesInUse 資料表。 FilesInUse 資料表包含檔案名稱和完整路徑的資料行。 當 InstallValidate 巨集指令執行時,安裝程式會查詢 FilesInUse 資料表中的專案,並使用檔案判斷進程的名稱。 InstallValidate 巨集指令會針對此查詢所識別的每個唯一進程,將一筆記錄新增至 ListBox 使用者介面資料表。 記錄在每個資料行中包含下列值:

屬性:FileInUseProcess

 

進程名稱

 

文字進程主視窗標題中包含的文字

InstallValidate 巨集指令接著會顯示 [ 使用中的檔案 ] 對話方塊。 此對話方塊會顯示必須關閉的程式,以避免重新開機系統以取代使用中的檔案。

InstallValidate 巨集指令會查詢具有保留名稱FilesInUse對話方塊的 [撰寫] 對話方塊的 [對話方塊] 資料表,並加以顯示。 此對話方塊必須包含系結至名為 FileInUseProcess 之屬性的 ListBox 控制項。 根據慣例,此對話方塊具有 [結束]、[ 重試] 或 [ 忽略] 按鈕,但這是 UI 作者。 每個按鈕都應該系結至ControlEvent資料表中的EndDialog ControlEvent。 InstallValidate 巨集指令會回應 DoAction ControlEvent 所傳回的值,如使用者所推送按鈕相關聯的其中一個 EndDialog 引數所決定:

重試:清除新增至 ListBox 資料表的所有值,而且會重複整個檔案 成本 程式,並重新檢查仍在使用的檔案。 如果仍然將一或多個進程識別為使用要覆寫或刪除的檔案,則程式會重複執行;否則,InstallValidate 會以 msiDoActionStatusSuccess 的狀態將控制項傳回安裝程式。

結束:InstallValidate 巨集指令會立即將控制項傳回至具有 msiDoActionStatusUserExit 狀態的安裝程式。 這會終止安裝。

任何其他傳回值:InstallValidate 巨集指令會立即將控制項傳回至具有 msiDoActionStatusSuccess 狀態的安裝程式。 在此情況下,由於一或多個檔案仍在使用中,後續 的 InstallFiles 和/或 InstallAdminPackage 動作必須排程使用中的檔案 (s) 在系統重新開機時要取代或刪除。

如果資料庫中沒有 ListBox 資料表,InstallValidate 會以無訊息方式結束,而不會發生錯誤。

分號是轉換、來源和修補程式的清單分隔符號,不應用於這些檔案名或路徑。

安裝程式永遠不會考慮在唯讀位置中標示為唯讀的檔案。

如果使用者介面層級基本,則會向使用者顯示包含[中止] 和 [重試] 按鈕的預設 [磁碟空間不足] 對話方塊。