Функция MsiProvideComponentW (msi.h)
Функция MsiProvideComponent возвращает полный путь к компоненту, выполняя любую необходимую установку. При необходимости эта функция запрашивает источник и увеличивает количество использования для функции.
Синтаксис
UINT MsiProvideComponentW(
[in] LPCWSTR szProduct,
[in] LPCWSTR szFeature,
[in] LPCWSTR szComponent,
[in] DWORD dwInstallMode,
[out] LPWSTR lpPathBuf,
[in, out] LPDWORD pcchPathBuf
);
Параметры
[in] szProduct
Указывает код продукта, содержащего компонент с необходимым компонентом.
[in] szFeature
Указывает идентификатор компонента с необходимым компонентом.
[in] szComponent
Указывает код компонента необходимого компонента.
[in] dwInstallMode
Определяет режим установки. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Укажите компонент и выполните установку, необходимую для предоставления компонента. Если файл ключа компонента в запрошенном компоненте или родительском компоненте отсутствует, переустановите компонент с помощью MsiReinstallFeature со следующими битами флагов: REINSTALLMODE_FILEMISSING, REINSTALLMODE_FILEOLDERVERSION, REINSTALLMODE_FILEVERIFY, REINSTALLMODE_MACHINEDATA, REINSTALLMODE_USERDATA и REINSTALLMODE_SHORTCUT. |
|
Укажите компонент только в том случае, если функция существует. В противном случае верните ERROR_FILE_NOT_FOUND.
Этот режим проверяет, существует ли файл ключа компонента. |
|
Укажите компонент только в том случае, если функция существует. В противном случае верните ERROR_FILE_NOT_FOUND.
Этот режим только проверяет, зарегистрирован ли компонент, и не проверяет, существует ли файл ключа компонента. |
|
Вызовите MsiReinstallFeature , чтобы переустановить функцию, используя этот параметр для параметра dwReinstallMode , а затем укажите компонент. |
|
Укажите компонент, только если состояние установки компонента INSTALLSTATE_LOCAL. Если состояние установки компонента INSTALLSTATE_SOURCE, верните ERROR_INSTALL_SOURCE_ABSENT. В противном случае верните ERROR_FILE_NOT_FOUND. Этот режим только проверяет, зарегистрирован ли компонент, и не проверяет, существует ли файл ключа. |
[out] lpPathBuf
Указатель на переменную, которая получает путь к компоненту. Этот параметр может быть нулевым.
[in, out] pcchPathBuf
Указатель на переменную, указывающую размер буфера в символах, на который указывает параметр lpPathBuf . На входных данных это полный размер буфера, включая пробел для завершающего символа NULL. Если переданный буфер слишком мал, возвращаемое число не включает завершающий символ NULL.
Если lpPathBuf имеет значение NULL, pcchBuf может иметь значение NULL.
Возвращаемое значение
Значение | Значение |
---|---|
|
Данные конфигурации повреждены. |
|
Функция отсутствует или не работает. Эта ошибка возвращается для dwInstallMode = INSTALLMODE_EXISTING. |
|
Сбой установки. |
|
Запрашиваемый компонент отключен на компьютере. |
|
В функцию передан недопустимый параметр. |
|
Функция успешно завершена. |
|
Идентификатор компонента не идентифицирует известный компонент. |
|
Код продукта не идентифицирует известный продукт. |
|
В функцию передано нераспознанное имя продукта или функции. |
|
Возвращается переполнение буфера. |
|
Не удалось обнаружить источник. |
Дополнительные сведения см. в разделе Отображаемые сообщения об ошибках.
Комментарии
При успешном выполнении функции 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. |
Целевая платформа | Windows |
Header | msi.h |
Библиотека | Msi.lib |
DLL | Msi.dll |