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