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


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

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

Синтаксис

UINT MsiProvideComponentA(
  [in]      LPCSTR  szProduct,
  [in]      LPCSTR  szFeature,
  [in]      LPCSTR  szComponent,
  [in]      DWORD   dwInstallMode,
  [out]     LPSTR   lpPathBuf,
  [in, out] LPDWORD pcchPathBuf
);

Параметры

[in] szProduct

Указывает код продукта для продукта, содержащего функцию с необходимым компонентом.

[in] szFeature

Указывает идентификатор компонента с необходимым компонентом.

[in] szComponent

Задает код компонента необходимого компонента.

[in] dwInstallMode

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

Ценность Значение
INSTALLMODE_DEFAULT
Предоставьте компонент и выполните любую установку, необходимую для предоставления компонента. Если файл ключа компонента в запрошенной функции или родитель компонента отсутствует, переустановите функцию с помощью MsiReinstallFeature со следующими битами флагов: REINSTALLMODE_FILEMISSING, REINSTALLMODE_FILEOLDERVERSION, REINSTALLMODE_FILEVERIFY, REINSTALLMODE_MACHINEDATA, REINSTALLMODE_USERDATA и REINSTALLMODE_SHORTCUT.
INSTALLMODE_EXISTING
Укажите компонент только в том случае, если эта функция существует. В противном случае возвращается ERROR_FILE_NOT_FOUND.

Этот режим проверяет, существует ли файл ключа компонента.

INSTALLMODE_NODETECTION
Укажите компонент только в том случае, если эта функция существует. В противном случае возвращается ERROR_FILE_NOT_FOUND.

Этот режим проверяет, зарегистрирован ли компонент и не проверяет, существует ли файл ключа компонента.

сочетания флагов REINSTALLMODE
Вызовите MsiReinstallFeature, чтобы переустановить функцию, используя этот параметр для параметра dwReinstallMode, а затем укажите компонент.
INSTALLMODE_NOSOURCERESOLUTION
Укажите компонент, только если состояние установки компонента INSTALLSTATE_LOCAL. Если состояние установки компонента INSTALLSTATE_SOURCE, вернитесь ERROR_INSTALL_SOURCE_ABSENT. В противном случае возвращается ERROR_FILE_NOT_FOUND. Этот режим проверяет, зарегистрирован ли компонент и не проверяет наличие файла ключа.

[out] lpPathBuf

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

[in, out] pcchPathBuf

Указатель на переменную, указывающую размер буфера в символах, на который указывает параметр lpPathBuf. В входных данных это полный размер буфера, включая пробел для конца символа NULL. Если буфер, переданный слишком маленьким, возвращаемое число не включает завершающий символ NULL.

Если lpPathBuf имеет значение NULL, pcchBuf может иметь значение NULL.

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

Ценность Значение
ERROR_BAD_CONFIGURATION
Данные конфигурации повреждены.
ERROR_FILE_NOT_FOUND
Функция отсутствует или нарушена. Эта ошибка возвращается для dwInstallMode = INSTALLMODE_EXISTING.
ERROR_INSTALL_FAILURE
Сбой установки.
ERROR_INSTALL_NOTUSED
Запрошенный компонент отключен на компьютере.
ERROR_INVALID_PARAMETER
Недопустимый параметр был передан функции.
ERROR_SUCCESS
Функция успешно завершена.
ERROR_UNKNOWN_FEATURE
Идентификатор компонента не определяет известную функцию.
ERROR_UNKNOWN_PRODUCT
Код продукта не определяет известный продукт.
INSTALLSTATE_UNKNOWN
Нераспознанный продукт или имя функции было передано функции.
ERROR_MORE_DATA
Возвращается переполнение буфера.
ERROR_INSTALL_SOURCE_ABSENT
Не удалось обнаружить источник.
 

Дополнительные сведения см. в разделе Отображаемые сообщения об ошибках.

Замечания

После успешного выполнения функции msiProvideComponent параметр pcchPathBuf содержит длину строки в lpPathBuf.

Функция MsiProvideComponent объединяет функциональные возможности MsiUseFeature, MsiConfigureFeatureи MsiGetComponentPath. Для упрощения последовательности вызовов можно использовать функцию MsiProvideComponent. Однако, так как эта функция увеличивает количество использования, используйте ее с осторожностью, чтобы предотвратить неточное количество использования. Функция MsiProvideComponent также обеспечивает меньшую гибкость, чем ряд отдельных вызовов.

Если приложение восстанавливается после непредвиденной ситуации, приложение, вероятно, уже вызвало MsiUseFeature и увеличило количество использования. В этом случае приложение должно вызывать MsiConfigureFeature вместо MsiProvideComponent, чтобы избежать увеличения числа снова.

Параметр INSTALLMODE_EXISTING нельзя использовать в сочетании с флагом REINSTALLMODE.

Компоненты с компонентами, содержащими поврежденный файл или неправильную версию файла, должны быть явно переустановены пользователем или вызовом приложения MsiReinstallFeature.

Заметка

Заголовок msi.h определяет MsiProvideComponent как псевдоним, который автоматически выбирает версию 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

См. также

функций Component-Specific

Multiple-Package установки