Функция MsiSetFeatureStateW (msiquery.h)
Функция MsiSetFeatureState устанавливает для компонента указанное состояние.
Синтаксис
UINT MsiSetFeatureStateW(
[in] MSIHANDLE hInstall,
[in] LPCWSTR szFeature,
[in] INSTALLSTATE iState
);
Параметры
[in] hInstall
Дескриптор установки, предоставленной пользовательскому действию DLL или полученной через MsiOpenPackage, MsiOpenPackageEx или MsiOpenProduct.
[in] szFeature
Указывает имя компонента.
[in] iState
Указывает задающееся состояние. Этот параметр может принимать одно из указанных ниже значений.
Возвращаемое значение
Функция MsiSetFeatureState возвращает следующие значения:
Комментарии
Функция MsiSetFeatureState запрашивает изменение состояния выбора компонента в таблице Feature и ее дочерних элементах. В свою очередь, состояние действий всех компонентов, связанных с измененными записями функций, также обновляется соответствующим образом в зависимости от состояния выбора нового компонента.
Перед вызовом MsiSetFeatureState необходимо вызвать функцию MsiSetInstallLevel.
При вызове MsiSetFeatureState установщик пытается установить состояние действия каждого компонента, привязанного к указанному компоненту, в указанное состояние. Однако бывают распространенные ситуации, когда запрос не может быть полностью реализован. Например, если компонент связан с двумя компонентами, компонентом A и компонентом B, то через таблицу FeatureComponents и компонент A имеет атрибут msidbComponentAttributesLocalOnly , а компонент B — атрибут msidbComponentAttributesSourceOnly . В этом случае, если msiSetFeatureState вызывается с запрошенным состоянием INSTALLSTATE_LOCAL или INSTALLSTATE_SOURCE, запрос не может быть полностью реализован для обоих компонентов. В этом случае оба компонента включены: для компонента A задано значение Локальный, а для компонента B — значение Источник.
Если с одним компонентом связано несколько функций (общий сценарий), окончательное состояние действия этого компонента определяется следующим образом:
- Если хотя бы один компонент требует локальной установки компонента, он устанавливается с состоянием local.
- Если хотя бы один компонент требует запуска компонента из источника, компонент устанавливается с состоянием источника.
- Если хотя бы один компонент требует удаления компонента, состояние действия отсутствует.
В случае сбоя функции можно получить расширенные сведения об ошибке с помощью MsiGetLastErrorRecord.
Примечание
Заголовок msiquery.h определяет MsiSetFeatureState в качестве псевдонима, который автоматически выбирает версию 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 |
Header | msiquery.h |
Библиотека | Msi.lib |
DLL | Msi.dll |