msiDeterminePatchSequenceA 函式 (msi.h)
MsiDeterminePatchSequence函式會採用一組修補程式檔案、XML 檔案和 XML Blob,並決定修補程式到指定已安裝產品的最佳應用程式順序。 此函式適用于已套用至產品的修補程式,以及已淘汰和取代修補程式的帳戶。
語法
UINT MsiDeterminePatchSequenceA(
[in] LPCSTR szProductCode,
[in, optional] LPCSTR szUserSid,
[in] MSIINSTALLCONTEXT dwContext,
[in] DWORD cPatchInfo,
[in] PMSIPATCHSEQUENCEINFOA pPatchInfo
);
參數
[in] szProductCode
一組修補程式的目標產品。 此值必須是產品的 ProductCode GUID。
[in, optional] szUserSid
以 Null 終止的字串,指定使用者 (SID) 的安全性識別碼。 此參數會限制此使用者帳戶的列舉內容。 此參數不能是特殊 SID 字串 「S-1-1-0」 (所有人) 或 「S-1-5-18」 (本機系統) 。 針對電腦內容 dwCoNtext 設定為 MSIINSTALLCONTEXT_MACHINE , 而 szUserSid 必須是 Null。 對於目前的使用者內容 szUserSid 可以是 null, 而 dwCoNtext 可以設定為 MSIINSTALLCONTEXT_USERMANAGED 或 MSIINSTALLCONTEXT_USERUNMANAGED。
[in] dwContext
將列舉限制為個別使用者-Unmanaged、每一使用者管理或每部電腦內容。 此參數可以是下列任何一個值。
[in] cPatchInfo
陣列中的修補程式數目。
[in] pPatchInfo
MSIPATCHSEQUENCEINFO結構的陣列指標。
傳回值
MsiDeterminePatchSequence函式會傳回下列值。
值 | 意義 |
---|---|
|
函式因其他錯誤碼未涵蓋的方式失敗。 |
|
引數無效。 |
|
找不到一組修補程式的有效序列。 |
|
無法開啟路徑所參考的安裝套件。 |
|
修補程式已成功排序。 |
|
找不到 .msi 檔案。 |
|
找不到 .msi 檔案的路徑。 |
|
XML 修補程式資料無效。 |
|
安裝套件無效。 |
|
不是系統管理員的使用者嘗試以不同使用者的內容呼叫函式。 |
|
已註冊修補程式或產品的組態資料無效。 |
|
未註冊指定的 ProductCode GUID。 |
|
需要 Windows Installer 3.0 版,才能判斷最佳的修補順序。 函式是使用 szProductCode 呼叫,尚未隨 Windows Installer 3.0 版一起安裝。 |
|
如果函式是從 自訂動作 呼叫,或未安裝 MSXML 3.0,則可以傳回此錯誤。 |
|
指定的修補程式未知。 |
備註
沒有系統管理員許可權的使用者只能在自己的或電腦內容中呼叫此函式。 系統管理員的使用者可以針對其他使用者呼叫它。
如果從自訂動作呼叫此函式,則會失敗並傳回 ERROR_CALL_NOT_IMPLEMENTED。 此函式需要 MSXML 3.0 版來處理 XML,並在未安裝 MSXML 3.0 時傳回 ERROR_CALL_NOT_IMPLEMENTED 。
MsiDeterminePatchSequence函式會設定pPatchInfo所指向之每個MSIPATCHSEQUENCEINFO結構的uStatus和dwOrder成員。 每個結構都包含特定修補程式的相關資訊。
如果函式成功,則每個修補程式的 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 預處理器常數的定義,將 MsiDeterminePatchSequence 定義為別名,自動選取此函式的 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 Installer 版本所需的最低 Windows Service Pack 相關資訊,請參閱 Windows Installer Run-Time 需求。 |
目標平台 | Windows |
標頭 | msi.h |
程式庫 | Msi.lib |
Dll | Msi.dll |