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


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

Функция MsiOpenPackageEx открывает пакет для использования с функциями, которые обращаются к базе данных продукта. Функция MsiCloseHandle должна вызываться с дескриптором, если дескриптор больше не нужен.

Примечание Инициализируйте COM в том же потоке перед вызовом функции MsiOpenPackage, MsiOpenPackageEx или MsiOpenProduct .

 

Синтаксис

UINT MsiOpenPackageExA(
  [in]  LPCSTR    szPackagePath,
  [in]  DWORD     dwOptions,
  [out] MSIHANDLE *hProduct
);

Параметры

[in] szPackagePath

Путь к пакету.

[in] dwOptions

Битовые флаги, указывающие, следует ли игнорировать состояние компьютера. Передайте 0 (ноль), чтобы использовать поведение MsiOpenPackage .

Константа Значение
MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE
1
Игнорируйте состояние компьютера при создании дескриптора продукта.

[out] hProduct

Указатель на переменную, получающую дескриптор продукта.

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

Значение Значение
ERROR_BAD_CONFIGURATION
Сведения о конфигурации повреждены.
ERROR_INSTALL_FAILURE
Не удалось открыть продукт.
ERROR_INSTALL_REMOTE_PROHIBITED
Установщик Windows не разрешает установку из подключения к удаленному рабочему столу.
ERROR_INVALID_PARAMETER
В функцию передается недопустимый параметр.
ERROR_SUCCESS
Функция успешно завершается.
 

Если эта функция завершается сбоем, она может вернуть код системной ошибки. Дополнительные сведения см. в разделе Системные коды ошибок.

Комментарии

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

Обратите внимание, что если параметр dwOptions имеет значение MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE или 1, MsiOpenPackageEx игнорирует текущее состояние компьютера при создании дескриптора продукта. Если значение dwOptions равно 0, MsiOpenPackageEx совпадает с MsiOpenPackage и создает дескриптор продукта, зависящий от того, установлен ли пакет, указанный в szPackagePath , на компьютере.

Ограниченный дескриптор, созданный с помощью MsiOpenPackageEx с MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE, разрешает только выполнение диалогов, подмножества стандартных действий и настраиваемых действий, которые задают свойства ( тип настраиваемого действия 35, тип настраиваемого действия 51 и тип настраиваемого действия 19). Ограниченный дескриптор не позволяет использовать пользовательские действия, запускающие библиотеки динамической компоновки, исполняемые файлы или скрипты.

Вы можете вызвать MsiDoAction для следующих стандартных действий с помощью ограниченного дескриптора. Все остальные действия возвращают ERROR_FUNCTION_NOT_CALLED при вызове с ограниченным дескриптором.

Функция MsiCloseHandle должна вызываться, если дескриптор не требуется.

Примечание

Заголовок msi.h определяет MsiOpenPackageEx в качестве псевдонима, который автоматически выбирает версию 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 в Windows Server 2003 или Windows XP. Сведения о минимальном пакете обновления Windows, необходимом для версии установщика Windows, см. в статье Требования к установщику Windows Run-Time.
Целевая платформа Windows
Header msi.h
Библиотека Msi.lib
DLL Msi.dll