Visual Studio 설치 관리자 배포

Windows Installer 배포를 사용하면 사용자에게 배포할 설치 관리자 패키지를 만들 수 있습니다. 그러면 사용자는 설치 파일을 실행하고 마법사의 단계를 따라 응용 프로그램을 설치할 수 있습니다. 이렇게 하려면 솔루션에 설치 프로젝트를 추가합니다. 빌드가 완료되면 사용자에게 배포할 설치 파일이 만들어집니다. 사용자는 설치 파일을 실행하고 마법사의 단계를 따라 응용 프로그램을 설치할 수 있습니다.

Microsoft Windows Installer는 Windows 운영 체제에 포함되는 데이터 기반 설치 및 구성 서비스입니다. Windows Installer의 경우 파일, 레지스트리 키 및 구성 요소를 포함하여 설치되는 모든 응용 프로그램에 대한 정보 데이터베이스를 유지합니다. 응용 프로그램을 제거하려면 먼저 데이터베이스를 검사하여 다른 응용 프로그램이 파일, 레지스트리 키 또는 구성 요소를 사용하는지를 확인해야 합니다. 이렇게 하면 한 응용 프로그램을 제거해도 다른 모든 응용 프로그램이 정상적으로 작동하도록 할 수 있습니다.

참고

Express Edition에는 Windows Installer 기술이 포함되어 있지 않습니다. Express Edition에서 사용되는 배포 기술에 대한 자세한 내용은 ClickOnce 보안 및 배포를 참조하십시오.

Visual Studio의 배포 도구를 Windows Installer에서 제공하는 기능과 함께 사용하여 응용 프로그램을 배포 및 유지할 수 있습니다.

설치 관리자 패키지 만들기

응용 프로그램 및 필수 구성 요소를 배포하려면 설치 관리자 패키지를 사용해야 합니다. 일반적으로 응용 프로그램은 .NET Framework, SQL Server Express 또는 사용자 지정 EXE나 DLL에 대해 종속성을 가집니다. 그러나 최종 사용자 컴퓨터에 .NET Framework의 특정 버전이 있거나 응용 프로그램이 의존하는 다른 종속 파일이 있는지 여부는 확실치 않습니다. 따라서 응용 프로그램을 최종 사용자 컴퓨터에 복사하는 것은 좋지 않습니다.

설치 위치

최종 사용자는 웹, CD, 네트워크 파일 공유 또는 다른 수단을 통해 응용 프로그램을 설치할 수 있습니다. 설치 위치는 사용 가능한 프로젝트 템플릿에 영향을 줍니다. 예를 들어, 최종 사용자가 웹을 통해 설치하도록 하려면 웹 설치 프로젝트 템플릿을 사용할 수 있습니다. CD 또는 네트워크를 통해 설치하려면 해당 설치 프로젝트 템플릿을 사용합니다. 배포 프로젝트 템플릿에 대한 자세한 내용은 설치 및 배포 프로젝트를 참조하십시오.

파일 및 폴더

파일 시스템 편집기를 사용하면 배포 파일 설치 위치 및 방법을 제어할 수 있습니다. 파일 시스템의 구조는 컴퓨터마다 다를 수 있고 폴더 이름도 서로 다를 수 있습니다. 파일 시스템 편집기에서는 추상 폴더의 개념을 사용하여 원하는 곳에 파일이 설치되도록 합니다. 자세한 내용은 배포 시 파일 설치 관리를 참조하십시오.

가상 폴더는 Windows 시스템 폴더를 나타냅니다. 예를 들어, 바탕 화면 폴더는 시스템 폴더 바탕 화면과 같습니다. Windows에서는 시스템 폴더의 위치를 추적하므로 폴더의 위치 또는 이름에 상관없이 바탕 화면 폴더에 있는 파일은 항상 바탕 화면 시스템 폴더에 있게 됩니다. 자세한 내용은 특수 폴더 및 사용자 지정 폴더를 참조하십시오.

원하는 폴더를 만들어 이것을 시스템 폴더 아래에 둘 수도 있습니다. 예를 들어, 응용 프로그램 폴더 아래에 응용 프로그램 데이터 폴더를 만들면 대상 컴퓨터의 응용 프로그램 폴더 위치에 상관없이 응용 프로그램 데이터 폴더에 있는 파일은 항상 동일한 상대 위치에 설치됩니다. 자세한 내용은 방법: 파일 시스템 편집기에서 폴더 추가 및 제거를 참조하십시오.

파일 시스템 편집기의 폴더에는 파일, 프로젝트 출력 및 어셈블리가 포함될 수 있습니다. 프로젝트 출력은 솔루션 내의 다른 프로젝트에 포함된 항목을 나타내며, 기본 빌드된 출력(예: 실행 파일), 지역화된 리소스, 기호화된 디버그 정보, 콘텐츠 파일(예: HTML 페이지) 및 프로젝트 소스 파일을 포함할 수 있습니다. 이러한 각 출력은 프로젝트 출력 그룹으로 참조되고, 프로젝트 출력 그룹에는 기본 출력(주 출력이라고도 함) 및 모든 추가 출력과 종속성이 포함됩니다. 자세한 내용은 방법: 파일 시스템 편집기에서 프로젝트 출력 추가 및 제거방법: 배포 프로젝트에 항목 추가를 참조하십시오.

또한, Condition 속성을 사용하여 모든 파일 또는 폴더에 조건을 지정할 수 있습니다. 이렇게 하면 설치하는 동안 대상 컴퓨터의 조건에 따라 파일 설치를 사용자 지정할 수 있습니다. 예를 들어, 대상 컴퓨터의 운영 체제 버전에 따라 서로 다른 파일을 설치할 수 있습니다. 자세한 내용은 Condition 속성을 참조하십시오.

파일 시스템 편집기에서는 바로 가기 만들기도 지원하므로 한 폴더에 파일을 두고 바탕 화면 또는 다른 폴더의 바로 가기에서 이러한 파일을 가리킬 수 있습니다. 자세한 내용은 방법: 파일 시스템 편집기에서 바로 가기 추가 및 제거를 참조하십시오.

파일 연결

응용 프로그램을 배포할 때 특정 파일 형식을 해당 응용 프로그램과 연결하려는 경우가 자주 있습니다. 예를 들어, 응용 프로그램이 .myfile 확장명을 가진 파일을 만들어 사용할 경우 응용 프로그램이 .myfile 파일 형식과 연결되도록 하여, 사용자가 .myfile 파일을 두 번 눌렀을 때 해당 응용 프로그램에서 열리도록 할 수 있습니다.

Visual Studio의 배포 도구에는 문서 형식을 지정하고 이 형식을 파일 확장명에 연결할 수 있는 파일 형식 편집기가 포함됩니다. 또한, 각 문서 형식에 대해 명령 또는 작업을 지정하고 브라우저에서 사용되는 문서 형식에 대해 MIME 형식을 지정할 수 있습니다. 자세한 내용은 배포 시 파일 형식 관리를 참조하십시오.

설치하는 동안 파일 형식 편집기에서 지정된 설정은 대상 컴퓨터에서 업데이트됩니다.

레지스트리

종종 응용 프로그램의 배포에 있어 가장 중요한 부분은 레지스트리 액세스, 레지스트리 값 설정 또는 레지스트리 키 생성입니다. Visual Studio의 배포 도구는 이 기능을 제공합니다.

Visual Studio의 레지스트리 편집기는 대상 컴퓨터의 레지스트리를 계층적으로 표시한다는 점에서 Windows 레지스트리 편집기와 유사합니다. 이 계층 구조에서는 표준 레지스트리 루트가 표현됩니다. 기존 키의 값을 변경하거나, 새 키의 값을 추가하거나, 기본 키를 지정할 수 있습니다. 자세한 내용은 배포 시 레지스트리 설정 관리를 참조하십시오.

설치하는 동안 레지스트리 편집기에서 지정한 키와 값은 대상 컴퓨터의 레지스트리에 기록됩니다.

또한, Condition 속성을 사용하여 모든 레지스트리 키 또는 값에 조건을 지정할 수 있습니다. 이렇게 하면 설치 중에 대상 컴퓨터의 조건에 따라 레지스트리를 사용자 지정할 수 있습니다. 예를 들어, 대상 컴퓨터의 운영 체제 버전에 따라 서로 다른 레지스트리 값을 입력할 수 있습니다.

Authenticode 서명

응용 프로그램이나 구성 요소를 게시한 사람이 누구이고 안전한지 여부를 확인하기 위해 응용 프로그램이나 구성 요소를 서명하려는 경우가 자주 있습니다. 이 경우 웹 브라우저를 통해 다운로드되는 Cab 파일 및 설치 관리자에 서명하는 것이 좋습니다.

Visual Studio 배포 도구를 사용하면 Microsoft Authenticode 기술을 사용하여 설치 관리자, 병합 모듈 또는 CAB 파일에 서명할 수 있습니다. 응용 프로그램 또는 구성 요소에 서명하려면 먼저 디지털 인증서를 구해야 합니다.

Authenticode 서명을 사용하려면 배포 프로젝트에서 서명된 ClickOnce 매니페스트를 사용하도록 설정해야 합니다. 자세한 내용은 프로젝트 디자이너, 서명 페이지를 참조하십시오.

전역 어셈블리 캐시

전역 어셈블리 캐시는 컴퓨터의 여러 응용 프로그램이 공유하는 어셈블리를 저장하는 데 사용되며 .NET Framework에서 제공하는 코드 캐시입니다. 어셈블리가 전역 어셈블리 캐시에 설치되려면 다른 소프트웨어가 응용 프로그램 또는 구성 요소를 식별하고 명시적으로 참조하는 데 사용 가능한 고유한 ID를 부여하는 강력한 이름이 해당 어셈블리에 지정되어야 합니다. 자세한 내용은 방법: 어셈블리 서명(Visual Studio)을 참조하십시오.

어셈블리를 전역 어셈블리 캐시에 설치하려면 어셈블리 또는 어셈블리의 프로젝트 출력 그룹을 파일 시스템 편집기에 있는 전역 어셈블리 캐시 폴더에 추가합니다. 이 편집기를 열려면 메뉴에서 편집기를 가리키고 파일 시스템 편집기를 클릭합니다.

전역 어셈블리 캐시 폴더는 파일 시스템 편집기의 다른 폴더와 다릅니다. 이 폴더에는 설정 가능한 속성이 없으며, 폴더나 폴더 내의 어셈블리에 대해 바로 가기를 만들 수 없습니다.

필수 구성 요소 선택

응용 프로그램을 성공적으로 배포하려면 응용 프로그램에서 참조하는 모든 구성 요소를 함께 배포해야 합니다. 예를 들어 Visual Studio를 사용하여 만든 대부분의 응용 프로그램은 .NET Framework에 종속되어 있습니다. 응용 프로그램을 설치하기 전에 대상 컴퓨터에 필요한 버전의 공용 언어 런타임이 있어야 합니다. Visual Studio의 배포 도구를 통해 .NET Framework 및 기타 구성 요소도 함께 설치할 수 있습니다. 필수 구성 요소를 설치하는 과정을 부트스트래핑이라고도 합니다.

자세한 내용은 방법: Windows Installer 배포에서 필수 구성 요소 설치를 참조하십시오.

관리자 권한으로 설치

Microsoft Windows Installer의 관리 설치를 사용하면 응용 프로그램의 원본 이미지를 네트워크 공유 지점에 설치할 수 있습니다. 그러면 이 네트워크에 액세스할 수 있는 작업 그룹의 사용자는 원본 이미지에서 응용 프로그램을 설치할 수 있습니다.

사용자 인터페이스 편집기를 사용하면 다른 설치 대화 상자 집합을 지정할 수 있습니다. 이 대화 상자는 관리자가 /a 명령줄 옵션을 사용하는 명령줄(msiexec /aInstallerName)을 통해 응용 프로그램을 네트워크 공유에 설치할 때 표시됩니다. 자세한 내용은 배포 시 사용자 인터페이스 관리를 참조하십시오.

참고

관리 설치를 통해 응용 프로그램을 설치하는 경우에는 부트스트래퍼 속성이 Windows Installer 부트스트래퍼로 설정되어 있더라도 부트스트래핑 응용 프로그램 파일(필요한 경우 Windows Installer를 설치하는 파일)이 서버에 복사되지 않습니다. 설치 시에 부트스트랩 응용 프로그램 파일이 필요한 경우, Instmsia.msi, Instmsiw.msi, Setup.exe 및 Setup.ini 파일을 서버에 수동으로 복사할 수 있습니다. 이들 파일은 응용 프로그램의 .msi 파일과 동일한 디렉터리에 있습니다.

자세한 내용은 관리 설치(Windows Installer)에서 Windows Installer SDK 설명서를 참조하십시오.

Windows 및 권한 상승

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

응용 프로그램 권한 상승

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

참고

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

필수 구성 요소 권한 상승

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

사용자 지정 작업 권한 상승

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

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

Visual Studio 버전 간의 차이점

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

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

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

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

참고 항목

작업

설치 및 배포 프로젝트 문제 해결

참조

배포 오류 및 지원

개념

설치 및 배포 프로젝트

기타 리소스

응용 프로그램 및 구성 요소 배포

배포 편집기

배포 작업 및 연습

배포 대화 상자

배포 샘플 및 연습