IValidate
COM公式ドキュメント
IValidate インターフェイスは、オーサリングツールが Windows Installer パッケージを一連の Internal Consistency Evaluator に対して検証できるようにします。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
OpenDatabase メソッドは、検証のために Windows Installer のインストールパッケージまたはマージモジュールを開きます。
| szDatabase | LPWSTR | in | 開くインストールパッケージまたはマージモジュールへの完全修飾パス。szDatabase パラメーターに NULL を指定することはできません。 |
戻り値
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| szDatabase の値が無効です。 |
このメソッドは、MsiOpenDatabase 関数が返すエラーのうち 1 つ以上を返す場合もあります。エラーは HRESULT_FROM_WIN32 関数を使用して HRESULTS に変換されます。
解説(Remarks)
OpenDatabase メソッドは、開かれたデータベースのハンドルを受け取ることもできます。開かれたデータベースのハンドルは "#nnnn" の形式で指定でき、nnnn は文字列形式のデータベースハンドルです。たとえば、開かれたデータベースハンドルが 123 の場合、メソッドはパッケージへのパスの代わりに szDatabase の値として #123 を受け取ることができます。
OpenCUB メソッドは、検証に使用する Internal Consistency Evaluator (ICE) ファイルを開きます。
| szCUBFile | LPWSTR | in | 検証に使用する Internal Consistency Evaluator (ICE) ファイルへの完全修飾パス。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| szDatabase の値が無効です。 | |
| メモリの割り当てに失敗しました。 | |
| メソッドが失敗しました。 |
解説(Remarks)
Internal Consistency Evaluator (ICE) ファイルは通常 .cub というファイル名拡張子を持ちます。
CloseDatabase メソッドは、現在開いている Windows Installer パッケージまたはマージモジュールを閉じます。Windows Installer パッケージまたはマージモジュールは、OpenDatabase メソッドを使用して開くことができます。
戻り値
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 |
このメソッドは、MsiCloseHandle 関数が返すエラーのうち 1 つ以上を返す場合もあります。エラーは HRESULT_FROM_WIN32 関数を使用して HRESULTS に変換されます。
CloseCUB メソッドは、開いている Internal Consistency Evaluator (ICE) .cub ファイルを閉じます。Internal Consistency Evaluator (ICE) .cub ファイルは、OpenCUB メソッドを使用して開くことができます。
戻り値
解説(Remarks)
SetDisplay メソッドは、オーサリングツールがコールバック関数を介して ICE のステータスメッセージを取得できるようにします。
| pDisplayFunction | LPDISPLAYVAL | in | LPDISPLAYVAL の仕様に準拠するコールバック関数を指定します。 |
| pContext | void* | inout | コールバック関数に渡されるアプリケーションコンテキストへのポインター。このパラメーターはエラーチェックに使用できます。pContext パラメーターには NULL を指定できます。 |
戻り値
SetStatus メソッドは、オーサリングツールが登録されたコールバック関数を介して検証の進行状況に関する情報を受け取れるようにします。
| pStatusFunction | LPEVALCOMCALLBACK | in | LPEVALCOMCALLBACK の仕様に準拠するコールバック関数を指定します。pStatusFunction には NULL を指定できます。 |
| pContext | void* | inout | コールバック関数に渡されるアプリケーションコンテキストへのポインター。このパラメーターはエラーチェックに使用できます。pContext には NULL を指定できます。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 |
Validate メソッドは、指定された Internal Consistency Evaluator ファイルを使用して、インストールパッケージまたはマージモジュールの検証を実行します。
| wzICEs | LPWSTR | in | どの Internal Consistency Evaluators (ICE) を実行するかを指定する省略可能なパラメーターです。ICE は区切り文字で区切ったリスト、またはカスタムテーブルで指定できます。 実行する ICE を区切りリストで指定する場合は、リスト内の ICE をコロン (:) で区切ります。たとえば "ICE01:ICE03:ICE08" のようにします。 カスタムシーケンステーブルの名前を指定する場合、実行する ICE はそのカスタムテーブルに入力できます。 szICEs の値が NULL の場合、_ICESequence テーブル内のすべての ICE が実行されます。_ICESequence テーブルは、orca.msi および msival2.msi に付属する既定のテーブルです。 |
戻り値
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IValidate "{E482E5C6-E31E-4143-A2E6-DBC3D8E4B8D3}"
#usecom global IValidate IID_IValidate "{}"
#comfunc global IValidate_OpenDatabase 3 wstr
#comfunc global IValidate_OpenCUB 4 wstr
#comfunc global IValidate_CloseDatabase 5
#comfunc global IValidate_CloseCUB 6
#comfunc global IValidate_SetDisplay 7 sptr,sptr
#comfunc global IValidate_SetStatus 8 sptr,sptr
#comfunc global IValidate_Validate 9 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。