Функция 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, если local является допустимым состоянием для этой функции.
( ( 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 |
Целевая платформа | Windows |
Header | msiquery.h |
Библиотека | Msi.lib |
DLL | Msi.dll |
См. также раздел
Передача null в качестве аргумента функций установщика Windows
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по