MsiDetermineApplicablePatchesW 函式 (msi.h)
MsiDetermineApplicablePatches 函式會採用一組修補程式檔案、XML 檔案和 XML Blob,並判斷哪些修補程式會套用至指定的 Windows Installer 套件,以及依何種順序套用。 函式可以考慮已取代或過時的修補程式。 此函式不會說明安裝在未在集合中指定的系統上的產品或修補程式。
語法
UINT MsiDetermineApplicablePatchesW(
[in] LPCWSTR szProductPackagePath,
[in] DWORD cPatchInfo,
[in] PMSIPATCHSEQUENCEINFOW pPatchInfo
);
參數
[in] szProductPackagePath
.msi 檔案的完整路徑。 函式會決定適用於此套件和順序的修補程式。
[in] cPatchInfo
數位列中的修補程式數目。 必須大於零。
[in] pPatchInfo
MSIPATCHSEQUENCEINFO 結構的數位指標。
傳回值
MsiDetermineApplicablePatches 函式會傳回下列值。
價值 | 意義 |
---|---|
|
函式失敗的方式未涵蓋於其他錯誤碼中。 |
|
自變數無效。 |
|
找不到一組修補程式的有效序列。 |
|
修補程式已成功排序。 |
|
找不到 .msi 檔案。 |
|
找不到 .msi 檔案的路徑。 |
|
XML 修補程式數據無效。 |
|
路徑所參考的安裝套件無法開啟。 |
|
如果函式是從 自定義動作 呼叫,或未安裝 MSXML 3.0,則可能會傳回此錯誤。 |
言論
如果從自定義動作呼叫此函式,則會失敗並傳回ERROR_CALL_NOT_IMPLEMENTED。 此函式需要 MSXML 3.0 版來處理 XML,並在未安裝 MSXML 3.0 時傳回ERROR_CALL_NOT_IMPLEMENTED。
如果函式成功,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 需求。 |
目標平臺 | 窗戶 |
標頭 | msi.h |
連結庫 | Msi.lib |
DLL | Msi.dll |