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を追加します。 詳細については、以下の「備考」を参照してください。
値 | 意味 |
---|---|
|
途中終了。致命的なメモリ不足の可能性があります。 |
|
書式設定されたエラー メッセージ、 |
|
書式設定された警告メッセージ、 |
|
ユーザー要求メッセージ、 |
|
ログの情報メッセージ、 |
|
置き換える前に閉じる必要がある現在使用中のファイルの一覧。 |
|
有効なソースの場所を決定するための要求。 |
|
置き換える前に閉じる必要がある現在使用中のファイルの一覧。 Windows インストーラー バージョン 4.0 以降で使用できます。 詳細については、「外部 UI での Restart Manager の使用」を参照してください。 |
|
ディスク領域の不足メッセージ。 |
|
進行状況: アクションの開始、 |
|
アクション データ。 レコード フィールドは、ACTIONSTART メッセージのテンプレートに対応します。 |
|
進行状況バーの情報。 下記のレコード フィールドの説明を参照してください。 |
|
[キャンセル] ボタンを有効にするには、[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 |