Функция 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 задано значение Local и component B, для которых задано значение Source.
Если несколько функций связаны с одним компонентом (общим сценарием), окончательное состояние действия этого компонента определяется следующим образом:
- Если хотя бы одна функция требует, чтобы компонент был установлен локально, компонент устанавливается с состоянием локального.
- Если хотя бы одна функция требует запуска компонента из источника, компонент устанавливается с состоянием источника.
- Если для удаления компонента требуется по крайней мере одна функция, состояние действия отсутствует.
Если функция завершается ошибкой, можно получить расширенные сведения об ошибке с помощью 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 |
целевая платформа | Виндоус |
заголовка | msiquery.h |
библиотеки |
Msi.lib |
DLL | Msi.dll |
См. также
Функции выбора установщика