Функция MsiSetFeatureStateA (msiquery.h)

Функция MsiSetFeatureState задает для компонента указанное состояние.

Синтаксис

UINT MsiSetFeatureStateA(
  [in] MSIHANDLE    hInstall,
  [in] LPCSTR       szFeature,
  [in] INSTALLSTATE iState
);

Параметры

[in] hInstall

Обработка установки, предоставленной пользовательскому действию DLL или полученная с помощью MsiOpenPackage, MsiOpenPackageEx или MsiOpenProduct.

[in] szFeature

Указывает имя компонента.

[in] iState

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

Значение Значение
INSTALLSTATE_ABSENT
Компонент не установлен.
INSTALLSTATE_LOCAL
Компонент устанавливается на локальный диск.
INSTALLSTATE_SOURCE
Функция запускается из источника, компакт-диска или из сети.
INSTALLSTATE_ADVERTISED
Функция объявляется.

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

Функция MsiSetFeatureState возвращает следующие значения:

Комментарии

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

Перед вызовом MsiSetFeatureState необходимо вызвать функцию MsiSetInstallLevel.

При вызове MsiSetFeatureState установщик пытается задать состояние действия каждого компонента, привязанного к указанному компоненту, в указанное состояние. Однако бывают распространенные ситуации, когда запрос не может быть полностью реализован. Например, если компонент связан с двумя компонентами, компонентом A и компонентом B, через таблицу FeatureComponents и компонент A имеет атрибут msidbComponentAttributesLocalOnly , а компонент B — атрибут msidbComponentAttributesSourceOnly . В этом случае, если MsiSetFeatureState вызывается с запрошенным состоянием INSTALLSTATE_LOCAL или INSTALLSTATE_SOURCE, запрос не может быть полностью реализован для обоих компонентов. В этом случае оба компонента включены, при этом для компонента A задано значение Локальный, а для компонента B — значение Источник.

Если с одним компонентом связано несколько функций (общий сценарий), окончательное состояние действия этого компонента определяется следующим образом:

  • Если хотя бы один компонент требует локальной установки компонента, компонент устанавливается с состоянием local.
  • Если хотя бы один компонент требует запуска компонента из источника, компонент устанавливается с состоянием источника.
  • Если хотя бы один компонент требует удаления компонента, состояние действия отсутствует.
См . раздел Вызов функций базы данных из программ.

В случае сбоя функции можно получить расширенные сведения об ошибке с помощью MsiGetLastErrorRecord.

Примечание

Заголовок msiquery.h определяет MsiSetFeatureState в качестве псевдонима, который автоматически выбирает версию 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
Header msiquery.h
Библиотека Msi.lib
DLL Msi.dll

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

Функции выбора установщика