共用方式為


Session.Message 方法

Session 物件的 Message 方法會執行任何啟用的記錄作業,並將執行延遲至與引擎相關聯的 UI 處理程式物件。 記錄可能會針對各種訊息類型選擇性地啟用。 請參閱 EnableLog 方法。

如果記錄欄位 0 包含格式化字串,則會用來格式化其他欄位中的數據。 否則,如果訊息是錯誤、警告或使用者訊息,則會嘗試使用訊息類型記錄的欄位 1 中找到的錯誤號碼,在目前資料庫的 Error 數據表中尋找訊息範本並傳回值。

語法

Session.Message(
  kind,
  record
)

參數

種類

kind 參數必須是下列其中一個值。 若要顯示具有按鈕和圖示的消息框,請將 MessageBoxMessageBoxEx 所使用的標準消息框樣式新增至 msiMessageTypeErrormsiMessageTypeWarningmsiMessageTypeUser,以計算種類值。 如需詳細資訊,請參閱下面的一節。

持續性 意義
msiMessageTypeFatalExit
&H00000000
過早終止,可能造成記憶體不足。
msiMessageTypeError
&H01000000
格式化的錯誤訊息 [1] 是 Error 資料表中的訊息編號。
msiMessageTypeWarning
&H02000000
格式化的警告訊息 [1] 是錯誤數據表中的訊息編號。
msiMessageTypeUser
&H03000000
使用者要求訊息 [1] 是錯誤數據表中的訊息號碼。
msiMessageTypeInfo
&H04000000
記錄的資訊訊息,不會顯示。
msiMessageTypeFilesInUse
&H05000000
使用中需要取代的檔案清單。
msiMessageTypeResolveSource
&H06000000
要求以判斷有效的來源位置。
msiMessageTypeOutOfDiskSpace
&H07000000
磁碟空間不足訊息。
msiMessageTypeActionStart
&H08000000
動作開頭、[1] 動作名稱、[2] description、[3] TEMPLATE for ACTIONDATA 訊息。
msiMessageTypeActionData
&H09000000
動作數據。 記錄欄位會對應至 ACTIONSTART 訊息的範本。
msiMessageTypeProgress
&H0A000000
進度列資訊。 請參閱下方記錄欄位的描述。
msiMessageTypeCommonData
&H0B000000
若要啟用 [取消] 按鈕,請將 [1] 設定為 2,並將 [2] 設定為 1。
若要停用 [取消] 按鈕,請將 [1] 設定為 2,並將 [2] 設定為 0

 

記錄

包含訊息特定欄位的必要 Record 物件。

傳回值

常數
msiMessageStatusError
-1
msiMessageStatusNone
0
msiMessageStatusOk
1
msiMessageStatusCancel
2
msiMessageStatusAbort
3
msiMessageStatusRetry
4
msiMessageStatusIgnore
5
msiMessageStatusYes
6
msiMessageStatusNo
7

 

備註

訊息記錄欄位

下列描述當 msiMessageTypeProgress 傳遞為訊息類型時,記錄欄位定義。

欄位 1 指定進度訊息的類型。 其他欄位的意義取決於此欄位中的值。 可以設定為欄位 1 的可能值如下所示。

訊息名稱 欄位 1 描述
MasterReset 0 重設進度列,並設定列中預期的刻度總數。
ActionInfo 1 提供目前動作所傳送之進度訊息的相關信息。
ProgressReport 2 遞增進度列。
ProgressAddition 3 可讓動作 (例如 CustomAction) 將刻度新增至進度列的預期進度總數。

 

Field 2 的意義取決於 Field 1 中的值,如下所示。

欄位 1 值 欄位 2 描述
0 進度列中預期的刻度總數。
1 進度列會針對每個 ActionData 訊息行動的刻度數目。 如果欄位 3 為 0,則會忽略此欄位。
2 進度列已移動的刻度數目。
3 要新增至預期進度總計的刻度數目。

 

Field 3 的意義取決於 Field 1 中的值,如下所示。

欄位 1 值 欄位 3 值 欄位 3 描述
0 0 向前進度列(由左至右)
  1 向後進度列(由右至左)
1 0 目前的動作會傳送明確的 ProgressReport 訊息。
  1 每次傳送 ActionData 訊息時,以 Field 2 中指定的刻度數遞增進度列。
2 未使用
3 未使用

 

Field 4 的意義取決於 Field 1 中的值,如下所示。

欄位 1 值 欄位 4 值 欄位 4 描述
0 0 執行正在進行中。 在此情況下,UI 可以計算並顯示剩餘的時間。
  1 建立執行腳本。 在此情況下,UI 可能會顯示訊息,以在安裝程式完成準備安裝時等候。
1 未使用
2 未使用
3 未使用

 

顯示消息框

若要顯示具有按鈕和圖示的消息框,請將 MessageBoxMessageBoxEx 所使用的標準消息框樣式新增至 msiMessageTypeErrormsiMessageTypeWarningmsiTypeUser,以計算種類。 VBScript 的可用按鈕選項為 vbOKOnly (MB_OK)、vbOKCancel (MB_OKCANCEL)、vbAbortRetryIgnore (MB_ABORTRETRYIGNORE)、vbYesNoCancel (MB_YESNOCANCEL)、vbYesNo (MB_YESNO)和 vbRetryCancel (MB_RETRYCANCEL)。 VBScript 的可用圖示選項為 vbCritical (MB_ICONERROR)、vbQuestion (MB_ICONQUESTION)、vbExclamation (MB_ICONWARNING)和 vbInformation (MB_ICONINFORMATION)。

例如,下列呼叫會傳送 具有 vbExclamation 圖示和 vbYesNo 按鈕的 msiMessageTypeError 訊息。

Session.Message &H01000034, record

如果自定義動作呼叫 Message 方法,自定義動作應該能夠由用戶處理取消,而且應該傳回 msiDoActionStatusUserExit

需求

需求
版本
Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer
DLL
Msi.dll
IID
IID_ISession定義為 000C109E-0000-0000-C000-00000000000046