MsiProcessMessage 関数 (msiquery.h)

MsiProcessMessage 関数は、処理のためにエラー レコードをインストーラーに送信します。

構文

int MsiProcessMessage(
  [in] MSIHANDLE      hInstall,
  [in] INSTALLMESSAGE eMessageType,
  [in] MSIHANDLE      hRecord
);

パラメーター

[in] hInstall

DLL カスタム アクションに対して提供されるインストール、または MsiOpenPackage、MsiOpenPackageEx、または MsiOpenProduct を使用して取得されたインストールを処理します。

[in] eMessageType

eMessage パラメーターは、次のいずれかのメッセージの種類を指定する値である必要があります。 プッシュ ボタンまたはアイコンを含むメッセージ ボックスを表示するには、OR 演算子を使用して、MessageBox 関数と MessageBoxEx 関数で使用される標準のメッセージ ボックス スタイルにINSTALLMESSAGE_ERROR、INSTALLMESSAGE_WARNING、またはINSTALLMESSAGE_USERを追加します。 詳細については、以下の「備考」を参照してください。

意味
INSTALLMESSAGE_FATALEXIT
途中終了。致命的なメモリ不足の可能性があります。
INSTALLMESSAGE_ERROR
書式設定されたエラー メッセージ、
 
[1] は エラー テーブルのメッセージ番号です。
INSTALLMESSAGE_WARNING
書式設定された警告メッセージ、
 
[1] はエラー テーブルのメッセージ番号です。
INSTALLMESSAGE_USER
ユーザー要求メッセージ、
 
[1] はエラー テーブルのメッセージ番号です。
INSTALLMESSAGE_INFO
ログの情報メッセージ、
 
表示されません。
INSTALLMESSAGE_FILESINUSE
置き換える前に閉じる必要がある現在使用中のファイルの一覧。
INSTALLMESSAGE_RESOLVESOURCE
有効なソースの場所を決定するための要求。
INSTALLMESSAGE_RMFILESINUSE
置き換える前に閉じる必要がある現在使用中のファイルの一覧。 Windows インストーラー バージョン 4.0 以降で使用できます。 詳細については、「外部 UI での Restart Manager の使用」を参照してください。
INSTALLMESSAGE_OUTOFDISKSPACE
ディスク領域の不足メッセージ。
INSTALLMESSAGE_ACTIONSTART
進行状況: アクションの開始、
 
[1] アクション名、
 
[2] 説明、
 
[3] ACTIONDATA メッセージのテンプレート。
INSTALLMESSAGE_ACTIONDATA
アクション データ。 レコード フィールドは、ACTIONSTART メッセージのテンプレートに対応します。
INSTALLMESSAGE_PROGRESS
進行状況バーの情報。 下記のレコード フィールドの説明を参照してください。
INSTALLMESSAGE_COMMONDATA
[キャンセル] ボタンを有効にするには、[1] を 2 に、[2] を 1 に設定します。

[キャンセル] ボタンを無効にするには、[1] を 2 に、[2] を 0 に設定します

[in] hRecord

メッセージ形式とデータを含むレコードを処理します。

戻り値

この関数は int を返します。

注釈

MsiProcessMessage 関数は、有効なログ記録操作を実行し、実行を延期します。 さまざまなメッセージの種類に対してログ記録を選択的に有効にすることができます。

INSTALLMESSAGE_FATALEXIT、INSTALLMESSAGE_ERROR、INSTALLMESSAGE_WARNING、およびINSTALLMESSAGE_USER メッセージの場合、フィールド 0 が設定されていない場合は、フィールド 1 を Error テーブルのエラー メッセージに対応するエラー コードに設定する必要があります。 次に、Error テーブルのテンプレートを使用してメッセージを書式設定してから、表示用のユーザー インターフェイス ハンドラーに渡します。

進行状況バー メッセージのレコード フィールド

eMessageType が INSTALLMESSAGE_PROGRESS に設定されている場合のレコード フィールドについて説明します。 フィールド 1 は、進行状況メッセージの種類を指定します。 他のフィールドの意味は、このフィールドの値によって異なります。 フィールド 1 に設定できる値は次のとおりです。
フィールド 1 の値 フィールド 1 の説明
0 進行状況バーをリセットし、バーのティックの予想合計数を設定します。
1 現在のアクションによって送信される進行状況メッセージに関連する情報を提供します。
2 進行状況バーを進めます。
3 アクション (CustomAction など) で、進行状況バーの進行状況の予想合計数にティックを追加できるようにします。
 

フィールド 2 の意味は、次のようにフィールド 1 の値によって異なります。

フィールド 1 の値 フィールド 2 の説明
0 進行状況バーのティックの予想合計数。
1 現在のアクションによって送信される ActionData メッセージごとに進行状況バーが移動するティック数。 フィールド 3 が 0 の場合、このフィールドは無視されます。
2 進行状況バーが動かしたティックの数。
3 予想進行状況の合計に追加するティックの数。
 

フィールド 3 の意味は、次のようにフィールド 1 の値によって異なります。

フィールド 1 の値 フィールド 3 の値 フィールド 3 の説明
0 0 正方向の進行状況バー (左から右へ)
  1 逆方向の進行状況バー (右から左へ)
1 0 現在のアクションが、明確な ProgressReport メッセージを送信します。
  1 ActionData メッセージが現在のアクションによって送信されるたびに、フィールド 2 で指定されたティック数だけ進行状況バーをインクリメントします。
2 未使用  
3 未使用  
 

フィールド 4 の意味は、次のようにフィールド 1 の値によって異なります。

フィールド 1 の値 フィールド 4 の値 フィールド 4 の説明
0 0 実行が進行中です。 この場合、UI は残り時間を計算して表示できます。
  1 実行スクリプトの作成。 この場合、UI はインストーラーがインストールの準備を完了するまでお待ちくださいというメッセージを表示できます。
1 未使用  
2 未使用  
3 未使用  
 

詳細とコード サンプルについては、「 ProgressBar へのカスタム アクションの追加」を参照してください。

メッセージ ボックスの表示

プッシュ ボタンまたはアイコンを含むメッセージ ボックスを表示するには、OR 演算子を使用して、MessageBox および MessageBoxEx で使用されるメッセージ ボックス オプションを使用して、INSTALLMESSAGE_ERROR、INSTALLMESSAGE_WARNING、またはINSTALLMESSAGE_USERを追加します。 使用可能なプッシュ ボタン オプションは、MB_OK、MB_OKCANCEL、MB_ABORTRETRYIGNORE、MB_YESNOCANCEL、MB_YESNO、MB_RETRYCANCELです。 使用可能な既定のボタン オプションは、MB_DEFBUTTON1、MB_DEFBUTTON2、およびMB_DEFBUTTON3です。 使用可能なアイコン オプションは、MB_ICONERROR、MB_ICONQUESTION、MB_ICONWARNING、MB_ICONINFORMATIONです。 アイコン オプションが指定されていない場合、Windows インストーラーはメッセージの種類に基づいて既定のアイコン スタイルを選択します。

たとえば、 次の MsiProcessMessage の呼び出しでは、MB_ICONWARNING アイコンとMB_ABORTRETRYCANCEL ボタンを含むINSTALLMESSAGE_ERROR メッセージが送信されます。

PMSIHANDLE hInstall;
PMSIHANDLE hRec;
MsiProcessMessage(hInstall, 
                  INSTALLMESSAGE(INSTALLMESSAGE_ERROR|MB_ABORTRETRYIGNORE|MB_ICONWARNING),
                  hRec);

カスタム アクションが MsiProcessMessage を呼び出す場合、カスタム アクションはユーザーによるキャンセルを処理でき、ERROR_INSTALL_USEREXITを返す必要があります。

MsiProcessMessage を使用してメッセージを送信する方法の詳細については、「MsiProcessMessage を使用して Windows インストーラーにメッセージを送信する」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP の Windows インストーラー
対象プラットフォーム Windows
ヘッダー msiquery.h
Library Msi.lib
[DLL] Msi.dll

こちらもご覧ください

インストーラーのアクション関数

MsiProcessMessage を使用した Windows インストーラーへのメッセージの送信