Функция 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
Указывает состояние, которое необходимо задать. Этот параметр может принимать одно из указанных ниже значений.
Возвращаемое значение
Функция 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 |