Win32 API 日本語リファレンス
ホームSystem.ApplicationInstallationAndServicing › IValidate

IValidate

COM
IIDe482e5c6-e31e-4143-a2e6-dbc3d8e4b8d3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IValidate インターフェイスは、オーサリングツールが Windows Installer パッケージを一連の Internal Consistency Evaluator に対して検証できるようにします。

メソッド 7

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT OpenDatabase(LPWSTR szDatabase)

OpenDatabase メソッドは、検証のために Windows Installer のインストールパッケージまたはマージモジュールを開きます。

szDatabaseLPWSTRin開くインストールパッケージまたはマージモジュールへの完全修飾パス。szDatabase パラメーターに NULL を指定することはできません。

戻り値

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
szDatabase の値が無効です。

このメソッドは、MsiOpenDatabase 関数が返すエラーのうち 1 つ以上を返す場合もあります。エラーは HRESULT_FROM_WIN32 関数を使用して HRESULTS に変換されます。

解説(Remarks)

OpenDatabase メソッドは、開かれたデータベースのハンドルを受け取ることもできます。開かれたデータベースのハンドルは "#nnnn" の形式で指定でき、nnnn は文字列形式のデータベースハンドルです。たとえば、開かれたデータベースハンドルが 123 の場合、メソッドはパッケージへのパスの代わりに szDatabase の値として #123 を受け取ることができます。

vtbl 4 HRESULT OpenCUB(LPWSTR szCUBFile)

OpenCUB メソッドは、検証に使用する Internal Consistency Evaluator (ICE) ファイルを開きます。

szCUBFileLPWSTRin検証に使用する Internal Consistency Evaluator (ICE) ファイルへの完全修飾パス。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
szDatabase の値が無効です。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。
E_FAIL
メソッドが失敗しました。

解説(Remarks)

Internal Consistency Evaluator (ICE) ファイルは通常 .cub というファイル名拡張子を持ちます。

vtbl 5 HRESULT CloseDatabase()

CloseDatabase メソッドは、現在開いている Windows Installer パッケージまたはマージモジュールを閉じます。Windows Installer パッケージまたはマージモジュールは、OpenDatabase メソッドを使用して開くことができます。

戻り値

戻り値のコード 説明
S_OK
メソッドは成功しました。

このメソッドは、MsiCloseHandle 関数が返すエラーのうち 1 つ以上を返す場合もあります。エラーは HRESULT_FROM_WIN32 関数を使用して HRESULTS に変換されます。

vtbl 6 HRESULT CloseCUB()

CloseCUB メソッドは、開いている Internal Consistency Evaluator (ICE) .cub ファイルを閉じます。Internal Consistency Evaluator (ICE) .cub ファイルは、OpenCUB メソッドを使用して開くことができます。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値のコード 説明
S_OK
メソッドは成功しました。
S_FALSE
メソッドが失敗しました。

解説(Remarks)

OpenCUB メソッドを使用して .cub ファイルが開かれていない場合、このメソッドは S_FALSE を返します。参照: OpenCUB

vtbl 7 HRESULT SetDisplay(LPDISPLAYVAL pDisplayFunction, void* pContext)

SetDisplay メソッドは、オーサリングツールがコールバック関数を介して ICE のステータスメッセージを取得できるようにします。

pDisplayFunctionLPDISPLAYVALinLPDISPLAYVAL の仕様に準拠するコールバック関数を指定します。
pContextvoid*inoutコールバック関数に渡されるアプリケーションコンテキストへのポインター。このパラメーターはエラーチェックに使用できます。pContext パラメーターには NULL を指定できます。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pDisplayFunction が無効です。
vtbl 8 HRESULT SetStatus(LPEVALCOMCALLBACK pStatusFunction, void* pContext)

SetStatus メソッドは、オーサリングツールが登録されたコールバック関数を介して検証の進行状況に関する情報を受け取れるようにします。

pStatusFunctionLPEVALCOMCALLBACKinLPEVALCOMCALLBACK の仕様に準拠するコールバック関数を指定します。pStatusFunction には NULL を指定できます。
pContextvoid*inoutコールバック関数に渡されるアプリケーションコンテキストへのポインター。このパラメーターはエラーチェックに使用できます。pContext には NULL を指定できます。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値のコード 説明
S_OK
メソッドは成功しました。
vtbl 9 HRESULT Validate(LPWSTR wzICEs)

Validate メソッドは、指定された Internal Consistency Evaluator ファイルを使用して、インストールパッケージまたはマージモジュールの検証を実行します。

wzICEsLPWSTRin

どの Internal Consistency Evaluators (ICE) を実行するかを指定する省略可能なパラメーターです。ICE は区切り文字で区切ったリスト、またはカスタムテーブルで指定できます。

実行する ICE を区切りリストで指定する場合は、リスト内の ICE をコロン (:) で区切ります。たとえば "ICE01:ICE03:ICE08" のようにします。

カスタムシーケンステーブルの名前を指定する場合、実行する ICE はそのカスタムテーブルに入力できます。

szICEs の値が NULL の場合、_ICESequence テーブル内のすべての ICE が実行されます。_ICESequence テーブルは、orca.msi および msival2.msi に付属する既定のテーブルです。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値のコード 説明
S_OK
メソッドは成功しました。
S_PENDING
メソッドが失敗しました。
E_FAIL
メソッドが失敗しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。