Поделиться через


Функция 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, если локальный является допустимым состоянием для этой функции.

( 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