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

Функция MsiDetermineApplicablePatches принимает набор файлов исправлений, XML-файлов и BLOB-объектов 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 или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Установщик 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.
Целевая платформа Windows
Header msi.h
Библиотека Msi.lib
DLL Msi.dll

См. также раздел

MsiDeterminePatchSequence

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

ProductCode