다음을 통해 공유


사용자 지정 작업 디버깅

Windows용 디버깅 도구를 사용하여 동적 연결 라이브러리를 기반으로 하는 사용자 지정 작업을 디버그할 수 있습니다. 실행 파일 또는 스크립트를 기반으로 하는 사용자 지정 작업에서는 동적 디버깅을 사용할 수 없습니다.

이 섹션에 설명된 기술은 Windows Installer 사용자 지정 작업을 디버그하는 데 도움이 될 수 있습니다. Windows용 디버깅 도구에 대한 자세한 내용은 WDK(Windows 드라이버 키트)의 드라이버 개발 도구 섹션을 참조하세요.

Windows Installer는 MsiBreak 환경 변수를 사용하여 디버그할 사용자 지정 작업을 결정합니다. 사용자 지정 작업의 소스 코드에 액세스할 수 있는 경우 MsiBreak 없이 디버깅을 사용할 수 있습니다. MsiBreak 없이 디버깅을 시작하려면 작업 코드의 시작 부분에 임시 메시지 상자를 배치합니다. 설치하는 동안 메시지 상자가 나타나면 메시지 상자를 소유하는 프로세스에 디버거를 연결합니다. 그런 다음, 필요한 중단점을 설정하고 메시지 상자를 닫아 실행을 다시 시작할 수 있습니다. 이 메서드를 통해 사용자 지정 작업의 이전 부분을 디버그할 수 없습니다.

MsiBreak 환경 변수를 이용하여 사용자 지정 작업을 디버그하려면 MsiBreak를 CustomAction 테이블의 사용자 지정 작업 이름으로 설정합니다. MsiBreak는 시스템 또는 사용자 환경 변수일 수 있습니다. 변수가 시스템 변수로 설정된 경우 새 값을 검색하기 위해 값이 변경될 때 시스템을 다시 시작해야 할 수 있습니다.

MsiBreak 환경 변수를 이용하여 포함된 사용자 인터페이스를 디버그하려면 MsiBreak 값을 MsiEmbeddedUI로 설정합니다.

Windows Installer는 사용자가 관리자인 경우에만 MsiBreak 환경 변수를 확인합니다. 사용자가 관리자가 아닌 경우 관리되는 애플리케이션인 경우에도 설치 관리자는 MsiBreak 값을 무시합니다.

실행 시퀀스에서 상승된(시스템) 권한으로 실행되는 사용자 지정 작업을 디버깅하는 경우, 디버거를 Windows Installer 서비스에 연결합니다. 실행 시퀀스에서 가장된 권한으로 실행되는 사용자 지정 작업을 디버깅할 때 시스템에서 디버그해야 하는 프로세스를 나타내는 대화 상자가 표시됩니다. 디버그할 프로세스를 나타내는 대화 상자가 사용자에게 표시됩니다. 상승된 사용자 지정 작업에 대한 자세한 내용은 사용자 지정 작업 보안을 참조하세요.

디버거가 올바른 프로세스에 연결되면 설치 관리자는 DLL의 진입점을 호출하기 직전에 디버거 중단점을 트리거합니다. 중단점에서 DLL이 프로세스에 이미 로드되고 진입점 주소가 결정됩니다. 사용자 지정 작업 DLL을 로드할 수 없거나 사용자 지정 작업 진입점이 없는 경우 중단점이 트리거되지 않습니다. 중단점은 DLL 함수를 호출하기 전에 트리거되므로 중단점이 트리거되면 사용자 지정 작업 진입점이 호출될 때까지 디버거를 사용하여 진행해야 합니다. 또는 사용자 지정 작업의 어떤 단계에서나 중단점을 설정하고 정상적인 실행을 다시 시작할 수 있습니다.

Windows Installer는 DLL 위치에서 직접 Binary 테이블에 저장되지 않은 DLL을 실행합니다. 설치 관리자는 Binary 테이블에 저장된 DLL의 원래 이름을 알지 못하며 임시 파일 이름으로 DLL 사용자 지정 작업을 실행합니다. 임시 파일 이름의 형식은 MSI?????.TMP입니다. Windows XP에서 이 임시 파일은 보안 위치(일반적으로 <WindowFolder>\Installer)에 저장됩니다.

디버깅을 위해 생성된 많은 DLL에는 DLL 자체의 일부로 해당 PDB 파일의 이름과 경로가 포함되어 있습니다. DLL에 저장된 위치에서 PDB를 찾을 수 있는 시스템에 이 유형의 DLL을 디버깅할 때 디버거 도구에서 기호를 자동으로 로드할 수 있습니다. 저장된 위치에서 PDB를 찾을 수 없거나, 디버거가 저장된 위치에서 기호 로드를 지원하지 않거나, 디버깅 정보로 DLL을 빌드하지 않은 경우 임시 DLL 파일이 있는 폴더에 기호 파일을 배치해야 할 수 있습니다.

설치 관리자는 사용자 지정 작업 스크립트에 대한 디버깅 정보를 설치 로그 파일에 추가합니다.

There is a problem with this Windows Installer package. A script 
required for this install to complete could not be run. Contact your 
support personnel or package vendor.  {Custom action [2] script error 
[3], [4]: [5] Line [6], Column [7], [8] }