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


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

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

Синтаксис

UINT MsiProvideAssemblyW(
  [in]      LPCWSTR szAssemblyName,
  [in]      LPCWSTR szAppContext,
  [in]      DWORD   dwInstallMode,
  [in]      DWORD   dwAssemblyInfo,
  [out]     LPWSTR  lpPathBuf,
  [in, out] LPDWORD pcchPathBuf
);

Параметры

[in] szAssemblyName

Имя сборки в виде строки.

[in] szAppContext

Для глобальных сборок задайте значение NULL. Для частных сборок задайте для szAppContext полный путь к файлу конфигурации приложения или полный путь к исполняемому файлу приложения, для которого сборка была закрыта.

[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.

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

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

[in] dwAssemblyInfo

Сведения о сборке и тип сборки. Задайте одно из следующих значений.

Значение Значение
MSIASSEMBLYINFO_NETASSEMBLY
0
Сборка .NET
MSIASSEMBLYINFO_WIN32ASSEMBLY
1
Сборка Win32

[out] lpPathBuf

Указатель на переменную, которая получает путь к компоненту. Этот параметр может быть нулевым.

[in, out] pcchPathBuf

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

Если lpPathBuf имеет значение NULL, pcchPathBuf может иметь значение 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_COMPONENT
Идентификатор компонента не указывает известный компонент.
ERROR_UNKNOWN_PRODUCT
Код продукта не идентифицирует известный продукт.
INSTALLSTATE_UNKNOWN
В функцию передано нераспознанное имя продукта или функции.
ERROR_MORE_DATA
Возвращается переполнение буфера.
ERROR_NOT_ENOUGH_MEMORY
В системе недостаточно памяти для выполнения операции. Доступно в Windows Server 2003.
ERROR_INSTALL_SOURCE_ABSENT
Не удалось обнаружить источник.
 

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

Комментарии

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

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

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

Примечание

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

См. также раздел

Функции, зависящие от компонентов

Установка с несколькими пакетами