사용자 지정 작업 내에서 현재 설치 관리자 세션에 액세스
동적 링크 라이브러리 또는 스크립트를 호출하는 지연되지 않은 사용자 지정 작업은 실행 중인 설치에 액세스하여 현재 설치 세션의 특성을 쿼리하거나 수정할 수 있습니다. 각 프로세스에 대해 하나의 세션 개체만 존재할 수 있으며 사용자 지정 작업 스크립트는 다른 세션을 만들려고 시도해서는 안 됩니다.
사용자 지정 작업은 데이터베이스에서 임시 행, 열 또는 테이블을 추가, 수정 또는 제거할 수 있습니다. 사용자 지정 작업은 데이터베이스의 영구 데이터(예: 디스크에 저장된 데이터베이스의 일부인 데이터)를 수정할 수 없습니다.
실행 중인 설치에 액세스하기 위해 DLL(동적 연결 라이브러리)을 호출하는 사용자 지정 작업은 현재 세션에 대한 MSIHANDLE 형식의 핸들을 CustomAction 테이블의 대상 열에 명명된 DLL 진입점에 대한 유일한 인수로 전달합니다. 설치 관리자가 이 핸들을 제공하므로 사용자 지정 작업이 이를 닫지 않아야 합니다. 예를 들어 설치 관리자에서 핸들 hInstall을 수신하려면 사용자 지정 작업 함수를 다음과 같이 선언합니다.
UINT __stdcall CustomAction(MSIHANDLE hInstall)
현재 데이터베이스에 대한 읽기 전용 액세스의 경우 MsiGetActiveDatabase를 호출하여 데이터베이스 핸들을 가져옵니다. 자세한 내용은 데이터베이스 핸들 가져오기를 참조하세요.
VBScript 또는 JScript로 작성된 사용자 지정 작업은 세션 개체를 사용하여 현재 설치 세션에 액세스할 수 있습니다. 설치 관리자는 현재 설치를 참조하는 “세션”이라는 세션 개체를 만듭니다. 현재 데이터베이스에 대한 읽기 전용 액세스의 경우 세션 개체의 데이터베이스 속성을 사용합니다.
스크립트는 세션 개체의 컨텍스트에서 실행되므로 속성과 메서드를 정규화할 필요가 없습니다. 다음 예제에서 VBScript를 사용하는 경우 Me 참조는 세션 개체를 대체할 수 있습니다. 예를 들어 다음 세 줄은 동일합니다.
Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1
사용자 지정 작업 유형 2 및 사용자 지정 작업 유형 18과 같이 명령줄로 실행되는 실행 파일을 호출하는 사용자 지정 작업에서는 현재 설치 관리자 세션에 액세스할 수 없습니다.
지연된 실행 사용자 지정 작업에서 현재 설치 관리자 세션 또는 모든 속성 데이터에 액세스할 수 없습니다. 자세한 내용은 지연된 실행 사용자 지정 작업에 대한 컨텍스트 정보 가져오기를 참조하세요.
관련 항목