Функция MsiGetFeatureValidStatesA (msiquery.h)
Функция MsiGetFeatureValidStates возвращает допустимое состояние установки.
Синтаксис
UINT MsiGetFeatureValidStatesA(
[in] MSIHANDLE hInstall,
[in] LPCSTR szFeature,
[out] LPDWORD lpInstallStates
);
Параметры
[in] hInstall
Дескриптор установки, предоставленного пользовательскому действию DLL или полученному через MsiOpenPackage, MsiOpenPackageExили MsiOpenProduct.
[in] szFeature
Указывает имя функции.
[out] lpInstallStates
Получает расположение для хранения допустимых состояний установки. Для каждого допустимого состояния установки установщик задает pInstallState сочетание следующих значений. Этот параметр не должен иметь значение NULL.
Возвращаемое значение
Функция MsiGetFeatureValidStates возвращает следующие значения:
Замечания
См. вызов функций базы данных из программ.
Функция MsiGetFeatureValidStates определяет допустимость состояния путем запроса всех компонентов, связанных с указанной функцией, без учета текущего установленного состояния любого компонента.
Возможные допустимые состояния функции определяются следующим образом:
- Если компонент не содержит компонентов, оба INSTALLSTATE_LOCAL и INSTALLSTATE_SOURCE являются допустимыми состояниями для функции.
- Если хотя бы один компонент компонента компонента имеет атрибут msidbComponentAttributesLocalOnly или msidbComponentAttributesOptional, INSTALLSTATE_LOCAL является допустимым состоянием для функции.
- Если хотя бы один компонент функции имеет атрибут msidbComponentAttributesSourceOnly или msidbComponentAttributesOptional, INSTALLSTATE_SOURCE является допустимым состоянием для функции.
- Если файл компонента, принадлежащий компоненту, исправлен или из сжатого источника, INSTALLSTATE_SOURCE не включен в качестве допустимого состояния для функции.
- INSTALLSTATE_ADVERTISE не является допустимым состоянием, если функция запрещает объявление (msidbFeatureAttributesDisallowAdvertise) или функция требует поддержки платформы для рекламы (msidbFeatureAttributesNoUnsupportedAdvertise) и платформа не поддерживает ее.
- INSTALLSTATE_ABSENT является допустимым состоянием для функции, если его атрибуты не включают msidbFeatureAttributesUIDisallowAbsent.
- Допустимые состояния дочерних функций, помеченные для выполнения родительской функции (msidbFeatureAttributesFollowParent), основаны на действии родительской функции или состоянии установки.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);
Если Feature1 имеет атрибуты значения 0 (благоприятствоть локальному), а Компонент1 имеет один компонент с атрибутами значения 0 (только локально), значение dwValidStates после вызова равно 14. Это означает, что INSTALLSTATE_LOCAL, INSTALLSTATE_ABSENT и INSTALLSTATE_ADVERTISED являются допустимыми состояниями для feature1. Следующая условная инструкция оценивает значение True, если локальный является допустимым состоянием для этой функции.
( dwValidStates & ( 1 << INSTALLSTATE_LOCAL ) ) == ( 1 << INSTALLSTATE_LOCAL ) )
Если функция завершается ошибкой, можно получить расширенные сведения об ошибке с помощью MsiGetLastErrorRecord.
Заметка
Заголовок msiquery.h определяет MsiGetFeatureValidStates в качестве псевдонима, который автоматически выбирает версию 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 |
См. также
Функции выбора установщика
передачи null в качестве аргумента функций установщика Windows