次の方法で共有


MsiDetermineApplicablePatchesA 関数 (msi.h)

MsiDetermineApplicablePatches 関数は、一連のパッチ ファイル、XML ファイル、および XML BLOB を受け取り、指定された Windows インストーラー パッケージに適用される修正プログラムと順序を決定します。 この関数では、置き換えられたパッチまたは古いパッチも考慮に入れることができます。 この関数では、セットで指定されていないシステムにインストールされている製品またはパッチは考慮されません。

構文

UINT MsiDetermineApplicablePatchesA(
  [in] LPCSTR                 szProductPackagePath,
  [in] DWORD                  cPatchInfo,
  [in] PMSIPATCHSEQUENCEINFOA pPatchInfo
);

パラメーター

[in] szProductPackagePath

.msi ファイルへの完全パス。 関数は、このパッケージに適用できるパッチと、どのような順序で決定します。

[in] cPatchInfo

配列内のパッチの数。 0 より大きくなければなりません。

[in] pPatchInfo

MSIPATCHSEQUENCEINFO 構造体の配列へのポインター。

戻り値

MsiDetermineApplicablePatches 関数は、次の値を返します。

説明
ERROR_FUNCTION_FAILED
関数は、他のエラー コードで説明されていない方法で失敗しました。
ERROR_INVALID_PARAMETER
引数が無効です。
ERROR_PATCH_NO_SEQUENCE
一連の修正プログラムに有効なシーケンスが見つかりませんでした。
ERROR_SUCCESS
パッチは正常に並べ替えられました。
ERROR_FILE_NOT_FOUND
.msi ファイルが見つかりませんでした。
ERROR_PATH_NOT_FOUND
.msi ファイルへのパスが見つかりませんでした。
ERROR_INVALID_PATCH_XML
XML 修正プログラム データが無効です。
ERROR_INSTALL_PACKAGE_OPEN_FAILED
path によって参照されるインストール パッケージを開くことができません。
ERROR_CALL_NOT_IMPLEMENTED
このエラーは、関数が カスタム アクション から呼び出された場合、または MSXML 3.0 がインストールされていない場合に返される可能性があります。

解説

この関数がカスタム アクションから呼び出されると失敗し、ERROR_CALL_NOT_IMPLEMENTEDを返します。 関数では、XML を処理するために MSXML バージョン 3.0 が必要であり、MSXML 3.0 がインストールされていない場合はERROR_CALL_NOT_IMPLEMENTEDを返します。

MsiDetermineApplicablePatches 関数は、pPatchInfo が指す各 MSIPATCHSEQUENCEINFO 構造体の uStatus メンバーと dwOrder メンバーを設定します。 各構造体には、特定のパッチに関する情報が含まれています。

関数が成功した場合、製品に適用できるすべてのパッチの MSIPATCHSEQUENCEINFO 構造体は、 uStatus が ERROR_SUCCESS で 、dwOrder が 0 以上で返されます。 0 以上の dwOrder の値は、0 から始まるパッチに最適なアプリケーション シーケンスを示します。

関数が成功すると、最適な修正プログラムシーケンスから除外されたパッチは、-1 と等しい dwOrder を持つ MSIPATCHSEQUENCEINFO 構造体を返します。 このような場合、ERROR_SUCCESS の uStatus フィールドは、製品の古い、または置き換えられる修正プログラムを示します。 ERROR_PATCH_TARGET_NOT_FOUNDの uStatus フィールドは、製品に適用できないパッチを示します。

関数が失敗した場合、すべてのパッチの MSIPATCHSEQUENCEINFO 構造体は-1 と等しい dwOrder を返します。 この場合、 uStatus フィールドには、個々のパッチに関する詳細情報を含むエラーが含まれている可能性があります。 たとえば、循環シーケンス情報を含むパッチの場合、ERROR_PATCH_NO_SEQUENCEが返されます。

注意

msi.h ヘッダーは、MSIDetermineApplicablePatches をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント 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 インストーラー 3.0 以降。 Windows インストーラーのバージョンに必要な最小の Windows Service Pack については、Windows インストーラーの実行時の要件に関する記事を参照してください。
対象プラットフォーム Windows
ヘッダー msi.h
Library Msi.lib
[DLL] Msi.dll

関連項目

MsiDeterminePatchSequence

Windows インストーラー 2.0 以前ではサポートされていません

ProductCode