Share via


Windows Vista의 Windows Installer 배포

업데이트: 2007년 11월

Windows Installer 기술을 통해 Windows Vista 운영 체제에 소프트웨어를 설치할 수 있습니다. Windows Vista에 응용 프로그램을 설치하는 최종 사용자에게는 사용자의 컴퓨터를 UAC(사용자 계정 컨트롤)에서 실행하더라도 권한 상승이 필요한 각 구성 요소 설치에 대해서만 메시지가 표시됩니다. UAC 설정 방법에 대한 자세한 내용은 Windows Vista 및 Visual Studio를 참조하십시오.

응용 프로그램 권한 상승

일반적으로 부트스트래퍼라고도 하는 Setup.exe는 상승된 권한으로 실행되지 않고 현재 사용자의 권한 수준에서 실행됩니다. 따라서 최종 응용 프로그램 설치가 시작될 때 권한 상승에 대한 메시지가 표시되지 않습니다. Setup.exe는 메시지를 표시하지 않는 반면 .msi 파일은 대개 사용자에게 메시지를 표시합니다.

부트스트래퍼의 포함된 UAC 매니페스트에서 requestedExecutionLevel 노드는 설치가 현재 사용자(asInvoker) 자격으로 실행됨을 지정합니다.

<requestedExecutionLevel level="asInvoker" />

그러나 필요한 경우 응용 프로그램 설치 권한을 상승시킬 수 있습니다. 예를 들어 웹 설치 프로젝트에서 IIS(인터넷 정보 서비스) 설정을 수정하려면 전역 어셈블리 캐시에 어셈블리를 설치할 때와 같이 관리 권한이 필요합니다. 권한 상승에 대한 메시지는 필수 구성 요소를 설치한 후 응용 프로그램을 설치하기 전에 표시됩니다.

설치 권한을 상승시키려면 프로젝트 파일(.vdproj)을 엽니다. 프로젝트 파일의 MsiBootstrapper 섹션에서 RequiresElevation 속성을 True로 설정합니다. 이 속성은 Visual Studio IDE(통합 개발 환경)를 통해 사용할 수 없습니다. 따라서 프로젝트 파일을 사용해야 합니다. 자세한 내용은 RequiresElevation 속성을 참조하십시오.

관리자 지원 권한 상승

Windows Installer는 Windows Vista에서의 관리자 지원 권한 상승을 지원합니다. 이 경우 사용자에게 관리자 자격 증명을 입력하라는 메시지가 표시되고 관리자는 사용자의 암호를 입력합니다. 컴퓨터가 Windows Vista 이상의 Windows 버전에서 실행되는 경우 이 시나리오를 지원하기 위해 부트스트래퍼에서 AdminUser 속성을 True로 설정합니다.

참고:

UAC를 사용하지 않는 컴퓨터에서 Windows Vista를 실행할 경우 관리자가 아니면 AdminUser는 여전히 True로 설정됩니다. 따라서 SQLExpress32.exe와 같은 .exe 설치 관리자는 적절한 권한을 감지하고 권한이 충분하지 않은 경우 특정 종료 코드를 생성하도록 작성되어야 합니다. 이 종료 코드를 catch하고 관리자가 필요하다는 메시지를 표시하도록 Setup.exe를 작성해야 합니다.

필수 구성 요소 권한 상승

Windows Vista에서는 필요할 경우 필수 구성 요소 설치 권한을 상승시킵니다. 부트스트래퍼 자체에서는 권한 상승이 수행되지 않습니다. Windows Vista가 UAC에서 실행될 경우 권한 상승이 필요한 필수 구성 요소가 설치되어 있지 않으면 해당 필수 구성 요소 각각에 대해 메시지가 나타납니다. 패키지 권한 상승에 실패하면 부트스트래퍼도 실패하고 적절한 오류 메시지가 보내집니다.

사용자 지정 작업 권한 상승

사용자 지정 작업 편집기에서 만든 사용자 지정 작업은 상승된 권한으로 실행됩니다. 사용자 지정 작업은 호출하는 사용자의 계정에서 실행되지 않으므로 사용자 지정 작업에서 레지스트리 또는 파일 시스템과 같이 사용자에 따라 달라지는 데이터에 액세스하지 않아야 합니다.

기본적으로 사용자 지정 작업 편집기에서 NoImpersonate 속성의 기본 설정이 True이므로 사용자 지정 작업은 상승된 권한으로 실행됩니다. NoImpersonate를 False로 변경하면 사용자 지정 작업에서는 권한이 충분하지 않더라도 호출하는 사용자를 가장하게 됩니다.

Visual Studio 버전 간의 차이점

Windows Vista UAC에서 Visual Studio 2005 및 Visual Studio 2008 설치 프로젝트가 실행되는 방식에는 차이점이 있습니다.

UAC에서 실행될 때 Windows Vista 기본 제공 설치 관리자 검색을 통해 사용자 동의에 대한 메시지가 표시됩니다. Visual Studio 2005를 사용하여 빌드한 부트스트래퍼(Setup.exe)는 설치하는 항목에 관계없이 항상 사용자 동의에 대한 메시지를 표시합니다. Setup.exe와 Setup.exe의 모든 프로세스는 Windows Vista에서 관리자 토큰으로 실행되므로 최종 응용 프로그램 설치는 상승된 권한으로 수행됩니다. 관리자 지원 권한 상승을 통해 Setup.exe를 실행하면 관리자의 프로필이 아니라 상승된 사용자 프로필에서 응용 프로그램이 설치됩니다.

Visual Studio 2008에서는 Setup.exe의 동작이 변경되어 시작 시 권한 상승에 대한 메시지가 표시되지 않습니다. 권한 상승 메시지를 표시하지 않기 위해 부트스트래퍼의 포함된 매니페스트는 Setup.exe가 asInvoker의 요청한 실행 수준으로 실행되도록 지정합니다. 이 경우 최종 응용 프로그램 설치가 상승된 권한으로 실행되지 않는다는 장점이 있지만 여전히 필수 구성 요소의 설치 권한을 상승시켜야 할 수 있습니다. 부트스트래퍼는 ShellExecute를 호출하여 필수 구성 요소를 시작합니다. Windows Vista에서는 이 호출을 받아 설치 검색을 수행하고 설치 전에 사용자에게 메시지를 표시합니다.

단점은 이렇게 변경됨으로써 응용 프로그램 자체뿐 아니라 설치해야 할 각 필수 구성 요소에 대해서도 메시지가 표시된다는 것입니다. 그러나 모든 필수 구성 요소가 컴퓨터에 이미 있으면 설치 시 아무런 메시지가 표시되지 않을 수 있습니다. 또한 권한 상승이 필요한 외부 검사가 없어야 합니다. 외부 검사가 작동되기는 하지만 설치 관리자에 대한 메시지 외에 각 외부 검사에 대해서도 여러 개의 권한 상승 메시지가 표시됩니다.

참고 항목

개념

Windows Vista의 Windows Installer 배포

Windows Vista 및 Visual Studio

사용자 권한과 Visual Studio

기타 리소스

Windows Installer 배포 개념