Поделиться через


Функция MsiDetermineApplicablePatchesA (msi.h)

Функция MsiDetermineApplicablePatches принимает набор файлов исправлений, XML-файлов и БОЛЬШИХ двоичных объектов XML и определяет, какие исправления применяются к указанному пакету установщика Windows и в какой последовательности. Функция может учитывать заменяемые или устаревшие исправления. Эта функция не учитывает продукты или исправления, установленные в системе, которые не указаны в наборе.

Синтаксис

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 и возвращал ERROR_CALL_NOT_IMPLEMENTED, если MSXML 3.0 не установлен.

Функция MsiDetermineApplicablePatches задает uStatus и членов dwOrder каждого структуры MSIPATCHSEQUENCEINFO, на которую указывает pPatchInfo. Каждая структура содержит сведения о определенном исправлении.

Если функция завершается успешно, MSIPATCHSEQUENCEINFO структуру каждого исправления, которое можно применить к продукту, возвращается с uStatus ERROR_SUCCESS и dwOrder больше или равно нулю. Значения dwOrder больше или равно нулю указывают лучшую последовательность приложений для исправлений, начиная с нуля.

Если функция выполнена успешно, исправления, исключенные из лучшей последовательности исправлений, возвращают структуру MSIPATCHSEQUENCEINFO с dwOrder равно -1. В этих случаях поле uStatus ERROR_SUCCESS указывает на исправление, устаревшее или замененное для продукта. Поле uStatus ERROR_PATCH_TARGET_NOT_FOUND указывает на исправление, которое неприменимо к продукту.

Если функция завершается ошибкой, структура MSIPATCHSEQUENCEINFO для каждого исправления возвращает dwOrder равно -1. В этом случае поля uStatus могут содержать ошибки с дополнительными сведениями об отдельных исправлениях. Например, ERROR_PATCH_NO_SEQUENCE возвращается для исправлений, имеющих сведения о циклической последовательности.

Заметка

Заголовок msi.h определяет MsiDetermineApplicablePatches как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.0 или установщик Windows 4.5 в Windows Server 2008 или Windows Vista. Установщик Windows 3.0 или более поздней версии в Windows Server 2003 или Windows XP. Сведения о минимальном пакете обновления Windows, требуемом версией установщика Windows, см. в разделе "Требования к установщику Windows Run-Time".
целевая платформа Виндоус
заголовка msi.h
библиотеки Msi.lib
DLL Msi.dll

См. также

MsiDeterminePatchSequence

не поддерживается в установщике Windows 2.0 и более ранних

ProductCode