msiDetermineApplicablePatchesA 函式 (msi.h)

MsiDetermineApplicablePatches 函式會採用一組修補程式檔案、XML 檔案和 XML Blob,並判斷哪些修補程式會套用至指定的 Windows Installer 套件,以及順序為何。 函式可以考慮已取代或過時的修補程式。 此函式不會考慮安裝在未在集合中指定的系統上的產品或修補程式。

語法

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

參數

[in] szProductPackagePath

.msi 檔案的完整路徑。 函式會決定適用于此套件和順序的修補程式。

[in] cPatchInfo

陣列中的修補程式數目。 必須大於零。

[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
無法開啟路徑所參考的安裝套件。
ERROR_CALL_NOT_IMPLEMENTED
如果函式是從 自訂動作 呼叫,或未安裝 MSXML 3.0,則可以傳回此錯誤。

備註

如果從自訂動作呼叫此函式,它會失敗並傳回ERROR_CALL_NOT_IMPLEMENTED。 此函式需要 MSXML 3.0 版來處理 XML,並在未安裝 MSXML 3.0 時傳回ERROR_CALL_NOT_IMPLEMENTED。

MsiDetermineApplicablePatches函式會設定pPatchInfo所指向之每個MSIPATCHSEQUENCEINFO結構的uStatusdwOrder成員。 每個結構都包含特定修補程式的相關資訊。

如果函式成功,則每個可套用至產品之 修補程式的 MSIPATCHSEQUENCEINFO 結構都會傳回 uStatus 為 ERROR_SUCCESS,且 dwOrder 大於或等於零。 dwOrder的值大於或等於零表示從零開始之修補程式的最佳應用程式順序。

如果函式成功,從最佳修補序列中排除的修補程式會傳回 MSIPATCHSEQUENCEINFO 結構, 且 dwOrder 等於 -1。 在這些情況下,ERROR_SUCCESS的 uStatus 欄位表示已過時或已取代產品的修補程式。 ERROR_PATCH_TARGET_NOT_FOUND的 uStatus 欄位表示無法套用至產品的修補程式。

如果函式失敗,則每個修補程式的 MSIPATCHSEQUENCEINFO 結構都會傳回等於 -1 的 dwOrder 。 在此情況下, uStatus 欄位可以包含含有個別修補程式詳細資訊的錯誤。 例如,針對具有迴圈排序資訊的修補程式,會傳回ERROR_PATCH_NO_SEQUENCE。

注意

msi.h 標頭會根據 UNICODE 預處理器常數的定義,將 MsiDetermineApplicablePatches 定義為別名,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

需求

   
最低支援的用戶端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer 3.0 或更新版本。 如需 Windows Installer 版本所需的最低 Windows Service Pack 相關資訊,請參閱 Windows Installer Run-Time 需求。
目標平台 Windows
標頭 msi.h
程式庫 Msi.lib
Dll Msi.dll

另請參閱

MsiDeterminePatchSequence

Windows Installer 2.0 和更早版本中不支援

ProductCode