Функция 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.

Десятичное значение Значение
2
INSTALLSTATE_ADVERTISED
Эту функцию можно объявить.
4
INSTALLSTATE_ABSENT
Функция может отсутствовать.
8
INSTALLSTATE_LOCAL
Компонент можно установить на локальный диск.
16
INSTALLSTATE_SOURCE
Эту функцию можно настроить для запуска из источника, компакт-диска или сети.
32
INSTALLSTATE_DEFAULT
Эту функцию можно настроить для использования расположения по умолчанию: локального или исходного.

Возвращаемое значение

Функция 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 можно использовать условный оператор для проверки допустимых состояний установки компонента. Например, следующий вызов MsiGetFeatureValidStates получает состояние установки Feature1.
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