다음을 통해 공유


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
이 기능은 원본, CD 또는 네트워크에서 실행됩니다.
INSTALLSTATE_ADVERTISED
이 기능은 보급됩니다.

반환 값

MsiSetFeatureState 함수는 다음 값을 반환합니다.

설명

MsiSetFeatureState 함수는 기능 테이블 및 해당 자식에서 기능의 선택 상태 변경을 요청합니다. 또한 변경된 기능 레코드에 연결된 모든 구성 요소의 작업 상태도 새 기능 선택 상태에 따라 적절하게 업데이트됩니다.

MsiSetFeatureState를 호출하기 전에 MsiSetInstallLevel 함수를 호출해야 합니다.

MsiSetFeatureState가 호출되면 설치 관리자는 지정된 기능에 연결된 각 구성 요소의 작업 상태를 지정된 상태로 설정하려고 시도합니다. 그러나 요청을 완전히 구현할 수 없는 일반적인 상황이 있습니다. 예를 들어 FeatureComponents 테이블을 통해 구성 요소 A와 구성 요소 B라는 두 구성 요소에 기능이 연결되어 있고 구성 요소 A에 msidbComponentAttributesLocalOnly 특성이 있고 구성 요소 B에는 msidbComponentAttributesSourceOnly 특성이 있습니다. 이 경우 MsiSetFeatureState 가 요청된 상태인 INSTALLSTATE_LOCAL 또는 INSTALLSTATE_SOURCE 호출되는 경우 두 구성 요소 모두에 대해 요청을 완전히 구현할 수 없습니다. 이 경우 구성 요소 A가 로컬로 설정되고 구성 요소 B가 원본으로 설정된 상태에서 두 구성 요소가 모두 켜집니다.

두 개 이상의 기능이 단일 구성 요소(일반적인 시나리오)에 연결된 경우 해당 구성 요소의 최종 작업 상태는 다음과 같이 결정됩니다.

  • 하나 이상의 기능이 구성 요소를 로컬로 설치해야 하는 경우 이 기능은 로컬 상태로 설치됩니다.
  • 하나 이상의 기능이 원본에서 구성 요소를 실행해야 하는 경우 이 기능은 원본 상태와 함께 설치됩니다.
  • 하나 이상의 기능이 구성 요소를 제거해야 하는 경우 작업 상태가 없습니다.
프로그램에서 데이터베이스 함수 호출을 참조하세요.

함수가 실패하면 MsiGetLastErrorRecord를 사용하여 확장된 오류 정보를 얻을 수 있습니다.

참고

msiquery.h 헤더는 MSiSetFeatureState를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Server 2012, Windows 8, Windows Server 2008 R2 또는 Windows 7의 Windows Installer 5.0. Windows Server 2008 또는 Windows Vista의 Windows Installer 4.0 또는 Windows Installer 4.5. Windows Server 2003 또는 Windows XP의 Windows Installer
대상 플랫폼 Windows
헤더 msiquery.h
라이브러리 Msi.lib
DLL Msi.dll

추가 정보

설치 관리자 선택 함수