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


Функция MsiSetFeatureStateW (msiquery.h)

Функция MsiSetFeatureState устанавливает для компонента указанное состояние.

Синтаксис

UINT MsiSetFeatureStateW(
  [in] MSIHANDLE    hInstall,
  [in] LPCWSTR      szFeature,
  [in] INSTALLSTATE iState
);

Параметры

[in] hInstall

Дескриптор установки, предоставленной пользовательскому действию DLL или полученной через MsiOpenPackage, MsiOpenPackageEx или MsiOpenProduct.

[in] szFeature

Указывает имя компонента.

[in] iState

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

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

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

Функция MsiSetFeatureState возвращает следующие значения:

Комментарии

Функция MsiSetFeatureState запрашивает изменение состояния выбора компонента в таблице Feature и ее дочерних элементах. В свою очередь, состояние действий всех компонентов, связанных с измененными записями функций, также обновляется соответствующим образом в зависимости от состояния выбора нового компонента.

Перед вызовом MsiSetFeatureState необходимо вызвать функцию MsiSetInstallLevel.

При вызове MsiSetFeatureState установщик пытается установить состояние действия каждого компонента, привязанного к указанному компоненту, в указанное состояние. Однако бывают распространенные ситуации, когда запрос не может быть полностью реализован. Например, если компонент связан с двумя компонентами, компонентом A и компонентом B, то через таблицу FeatureComponents и компонент A имеет атрибут msidbComponentAttributesLocalOnly , а компонент B — атрибут msidbComponentAttributesSourceOnly . В этом случае, если msiSetFeatureState вызывается с запрошенным состоянием INSTALLSTATE_LOCAL или INSTALLSTATE_SOURCE, запрос не может быть полностью реализован для обоих компонентов. В этом случае оба компонента включены: для компонента A задано значение Локальный, а для компонента B — значение Источник.

Если с одним компонентом связано несколько функций (общий сценарий), окончательное состояние действия этого компонента определяется следующим образом:

  • Если хотя бы один компонент требует локальной установки компонента, он устанавливается с состоянием local.
  • Если хотя бы один компонент требует запуска компонента из источника, компонент устанавливается с состоянием источника.
  • Если хотя бы один компонент требует удаления компонента, состояние действия отсутствует.
См. статью Вызов функций базы данных из программ.

В случае сбоя функции можно получить расширенные сведения об ошибке с помощью 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
Целевая платформа Windows
Header msiquery.h
Библиотека Msi.lib
DLL Msi.dll

См. также раздел

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