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


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

Указывает состояние, которое нужно задать. Этот параметр может быть одним из следующих значений.

Ценность Значение
INSTALLSTATE_ABSENT
Компонент не установлен.
INSTALLSTATE_LOCAL
Эта функция устанавливается на локальном диске.
INSTALLSTATE_SOURCE
Эта функция выполняется из источника, компакт-диска или сети.
INSTALLSTATE_ADVERTISED
Функция объявлена.

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

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

См. также

Функции выбора установщика