共用方式為


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 的安裝程式。

Exit:InstallValidate 巨集指令會立即將控件傳回具有 msiDoActionStatusUserExit 狀態的安裝程式。 這會終止安裝。

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

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

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

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

默認 磁碟空間不足 對話框,包含 中止,如果使用者介面層級基本,則會向用戶顯示 [重試] 按鈕。