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


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

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

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

 

Синтаксис

UINT MsiOpenPackageExW(
  [in]  LPCWSTR   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). Ограниченный дескриптор запрещает использование пользовательских действий, которые выполняют библиотеки Dynamic-Link, исполняемых файлов или скриптов.

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

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

Заметка

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