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


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

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

Синтаксис

UINT MsiDeterminePatchSequenceA(
  [in]           LPCSTR                 szProductCode,
  [in, optional] LPCSTR                 szUserSid,
  [in]           MSIINSTALLCONTEXT      dwContext,
  [in]           DWORD                  cPatchInfo,
  [in]           PMSIPATCHSEQUENCEINFOA pPatchInfo
);

Параметры

[in] szProductCode

Продукт, предназначенный для набора исправлений. Значение должно быть идентификатором GUID ProductCode для продукта.

[in, optional] szUserSid

Строка, завершающаяся значением NULL, указывающая идентификатор безопасности пользователя. Этот параметр ограничивает контекст перечисления для этой учетной записи пользователя. Этот параметр не может быть специальными строками безопасности "S-1-1-0" (все) или "S-1-5-18" (локальная система). Для контекста компьютера dwContext задано значение MSIINSTALLCONTEXT_MACHINE и szUserSid должно быть NULL. Для текущего контекста пользователя szUserSid может иметь значение NULL и dwContext можно задать значение MSIINSTALLCONTEXT_USERMANAGED или MSIINSTALLCONTEXT_USERUNMANAGED.

[in] dwContext

Ограничивает перечисление неуправляемой, управляемой пользователем или контекстом на компьютере. Этот параметр может быть одним из следующих значений.

Тип контекста Значение
MSIINSTALLCONTEXT_USERMANAGED
Исправления рассматриваются для всех управляемых пользователем установок продукта, указанного szUserSid. Значение NULL szUserSid с этим контекстом означает текущего пользователя.
MSIINSTALLCONTEXT_USERUNMANAGED
Исправления считаются для всех неуправляемых пользователем установок для пользователя, указанного szUserSid. Значение NULL szUserSid с этим контекстом означает текущего пользователя.
MSIINSTALLCONTEXT_MACHINE
Исправления считаются для установки на компьютер. Если для параметра dwContext dwContext задано значение NULL, MSIINSTALLCONTEXT_MACHINE параметр szUserSid должен иметь значение NULL.

[in] cPatchInfo

Количество исправлений в массиве.

[in] pPatchInfo

Указатель на массив структур MSIPATCHSEQUENCEINFO.

Возвращаемое значение

Функция msiDeterminePatchSequence возвращает следующие значения.

Ценность Значение
ERROR_FUNCTION_FAILED
Функция завершилась ошибкой таким образом, чтобы она не охватывалась другими кодами ошибок.
ERROR_INVALID_PARAMETER
Недопустимый аргумент.
ERROR_PATCH_NO_SEQUENCE
Для набора исправлений не найдена допустимая последовательность.
ERROR_INSTALL_PACKAGE_OPEN_FAILED
Не удается открыть пакет установки, на который ссылается путь.
ERROR_SUCCESS
Исправления были успешно отсортированы.
ERROR_FILE_NOT_FOUND
Файл .msi не найден.
ERROR_PATH_NOT_FOUND
Путь к файлу .msi не найден.
ERROR_INVALID_PATCH_XML
Недопустимые данные исправления XML.
ERROR_INSTALL_PACKAGE_INVALID
Пакет установки недопустим.
ERROR_ACCESS_DENIED
Пользователь, который не является администратором, пытается вызвать функцию с контекстом другого пользователя.
ERROR_BAD_CONFIGURATION
Недопустимые данные конфигурации для зарегистрированного исправления или продукта.
ERROR_UNKNOWN_PRODUCT
Указанный guid ProductCode не зарегистрирован.
ERROR_FUNCTION_NOT_CALLED
Установщик Windows версии 3.0 необходим для определения оптимальной последовательности исправлений. Функция была вызвана szProductCode еще не установлена с установщиком Windows версии 3.0.
ERROR_CALL_NOT_IMPLEMENTED
Эта ошибка может быть возвращена, если функция была вызвана из пользовательского действия или если MSXML 3.0 не установлен.
ERROR_UNKNOWN_PATCH
Указанное исправление неизвестно.

Замечания

Пользователи, у которых нет прав администратора, могут вызывать эту функцию только в собственном или машинном контексте. Пользователи, которые являются администраторами, могут вызывать его для других пользователей.

Если эта функция вызывается из пользовательского действия, она завершается ошибкой и возвращает ERROR_CALL_NOT_IMPLEMENTED. Функция требует, чтобы MSXML версии 3.0 обрабатывала XML и возвращала ERROR_CALL_NOT_IMPLEMENTED если MSXML 3.0 не установлен.

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

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

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

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

Заметка

Заголовок msi.h определяет MsiDeterminePatchSequence в качестве псевдонима, который автоматически выбирает версию 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, требуемом версией установщика Windows, см. в разделе "Требования к установщику Windows Run-Time".
целевая платформа Виндоус
заголовка msi.h
библиотеки Msi.lib
DLL Msi.dll

См. также

MSIPATCHSEQUENCEINFO

MsiDetermineApplicablePatches

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

ProductCode