ClickOnce 보안 및 배포
ClickOnce는 설치 및 실행이 가능하고 자동 업데이트 기능을 갖춘 Windows 기반 애플리케이션을 최소한의 사용자 작업 만으로 만들 수 있게 해주는 배포 기술입니다. Visual Studio에서는 Visual Basic과 Visual C#을 사용하여 프로젝트를 개발한 경우 ClickOnce 기술을 사용하여 배포된 애플리케이션을 게시 및 업데이트할 수 있도록 지원합니다. Visual C++ 애플리케이션 배포에 대한 자세한 내용은 Visual C++ 애플리케이션의 ClickOnce 배포를 참조하세요.
ClickOnce 배포는 배포 관련 세 가지 주요 문제를 해결합니다.
애플리케이션 업데이트의 어려움. Microsoft Windows Installer 배포를 사용하면 애플리케이션이 업데이트 될 때마다 사용자가 업데이트와 msp 파일을 설치하여 설치된 제품에 적용할 수 있습니다. ClickOnce 배포를 사용하면 업데이트를 자동으로 제공할 수 있습니다. 애플리케이션에서 변경된 부분만 다운로드한 다음 업데이트된 전체 애플리케이션이 새 병렬 폴더에서 다시 설치됩니다.
사용자의 컴퓨터에 영향을 줍니다. Windows Installer 배포를 사용하면 애플리케이션은 대부분 공유 구성 요소를 이용하며, 버전 관리 충돌이 발생할 수 있습니다. ClickOnce 배포를 사용하면 각 애플리케이션은 자체 포함형이며 다른 애플리케이션을 간섭할 수 없습니다.
보안 권한 Windows Installer 배포는 관리 권한을 요구하며 제한된 사용자 설치만 허용합니다. ClickOnce 배포는 관리자가 아닌 사용자가 설치하고 애플리케이션에 필요한 코드 액세스 보안 권한만 부여할 수 있게 합니다.
과거에는 이러한 문제 때문에 개발자가 Windows 기반 애플리케이션 대신 웹 애플리케이션을 만들었고, 그래서 풍부한 사용자 인터페이스를 이용해 쉽게 설치할 수가 없었습니다. ClickOnce로 배포한 애플리케이션을 사용하면 두 기술의 장점을 모두 누릴 수 있습니다.
ClickOnce 애플리케이션이란?
ClickOnce 애플리케이션은 ClickOnce 기술을 이용해 게시된 모든 Windows Presentation Foundation(.xbap), Windows Forms(.exe), 콘솔 애플리케이션(.exe) 또는 Office 솔루션(.dll)입니다. ClickOnce 애플리케이션은 웹 페이지, 네트워크 파일 공유, CD-ROM 등의 레거시 미디어라는 세 가지 방법으로 게시할 수 있습니다. ClickOnce 애플리케이션은 최종 사용자의 컴퓨터에 설치할 수 있으며 컴퓨터가 오프라인일 때도 로컬로 실행할 수 있습니다. 또한 최종 사용자 컴퓨터에 아무것도 영구적으로 설치하지 않고도 온라인 전용 모드에서 실행할 수 있습니다. 자세한 내용은 ClickOnce 배포 전략 선택을 참조하세요.
ClickOnce 애플리케이션은 자동으로 업데이트할 수 있습니다. 이 애플리케이션은 사용 가능한 신규 버전을 확인하고 업데이트 된 파일을 자동으로 변경합니다. 개발자는 업데이트 동작을 지정할 수 있으며, 네트워크 관리자는 강제 업데이트 지정과 같은 업데이트 전략을 제어할 수 있습니다. 최종 사용자나 관리자는 업데이트를 이전 버전으로 롤백할 수 있습니다. 자세한 내용은 ClickOnce 업데이트 전략 선택을 참조하세요.
ClickOnce 애플리케이션은 격리되기 때문에 ClickOnce 애플리케이션을 설치하거나 실행해도 기존 애플리케이션이 중단되지 않습니다. ClickOnce 애플리케이션은 자체 포함형입니다. 각 ClickOnce 애플리케이션은 안전한 사용자별, 애플리케이션별 캐시에 설치되고 이 캐시에서 실행됩니다. ClickOnce 애플리케이션은 인터넷 또는 인트라넷 보안 영역에서 실행됩니다. 필요한 경우 애플리케이션이 승격된 보안 권한을 요청할 수 있습니다. 자세한 내용은 ClickOnce 애플리케이션 보안을 참조하세요.
ClickOnce 보안 작동 방식
핵심 ClickOnce 보안은 인증서, 코드 액세스 보안 정책 및 ClickOnce 신뢰 프롬프트를 기반으로 합니다.
인증서
Authenticode 인증서는 애플리케이션 게시자의 신뢰성을 확인하는 데 사용합니다. ClickOnce는 애플리케이션 배포에 Authenticode를 사용하여, 유해한 프로그램이 신뢰할 수 있는 설정된 원본에서 온 합법적인 프로그램으로 위장하지 못하게 합니다. 필요하다면 인증서를 사용해 애플리케이션과 배포 매니페스트에 서명하여 파일이 훼손되지 않았음을 증명할 수도 있습니다. 자세한 내용은 ClickOnce 및 Authenticode를 참조하세요. 또한 인증서를 사용하여 클라이언트 컴퓨터가 신뢰할 수 있는 게시자 목록을 보유하도록 구성할 수도 있습니다. 신뢰할 수 있는 게시자에서 가져온 애플리케이션은 사용자 개입 없이도 설치할 수 있습니다. 자세한 내용은 신뢰할 수 있는 애플리케이션 배포 개요를 참조하세요.
코드 액세스 보안
코드 액세스 보안은 보호된 리소스에 대한 코드의 액세스를 제한하는 데 도움이 됩니다. 대부분의 경우 인터넷 또는 로컬 인트라넷 영역을 선택하여 사용 권한을 제한할 수 있습니다. 프로젝트 디자이너의 보안 페이지를 사용하여 애플리케이션에 적합한 영역을 요청합니다. 제한된 권한으로 애플리케이션을 디버그하여 최종 사용자 환경을 에뮬레이트할 수도 있습니다. 자세한 내용은 ClickOnce 애플리케이션의 코드 액세스 보안을 참조하세요.
참고 항목
.NET Core 및 .NET 5 이상용 ClickOnce에서는 이 기능이 지원되지 않습니다. 자세한 내용은 .NET용 ClickOnce를 참조하세요.
ClickOnce 신뢰 프롬프트
애플리케이션이 영역에서 허용하는 것보다 많은 권한을 요청한다면, 신뢰 결정을 하라는 메시지를 최종 사용자에게 표시할 수 있습니다. 최종 사용자는 Windows Forms 애플리케이션, Windows Presentation Foundation 애플리케이션, 콘솔 애플리케이션, XAML 브라우저 애플리케이션과 Office 솔루션 같은 ClickOnce 애플리케이션을 실행해도 되는지를 결정할 수 있습니다. 자세한 내용은 방법: ClickOnce 신뢰 프롬프트 동작 구성을 참조하세요.
ClickOnce 배포 작동 방식
핵심 ClickOnce 배포 아키텍처는 애플리케이션 매니페스트와 배포 매니페스트라는 두 가지 XML 매니페스트 파일을 기반으로 합니다. 파일은 ClickOnce 애플리케이션을 설치하는 위치, 업데이트하는 방법 및 업데이트된 시기를 설명하는데 사용합니다.
ClickOnce 애플리케이션 게시
애플리케이션 매니페스트는 애플리케이션 자체를 설명합니다. 여기에는 어셈블리, 애플리케이션을 구성하는 종속성과 파일, 필요한 권한과 업데이트를 사용할 수 있는 위치가 포함됩니다. 애플리케이션 개발자는 Visual Studio의 게시 마법사(.NET Core 및 .NET 5 이상용 게시 도구) 또는 Windows SDK(소프트웨어 개발 키트)의 매니페스트 생성 및 편집 도구(Mage.exe)를 사용하여 애플리케이션 매니페스트를 작성합니다. 자세한 내용은 다음을 참조하세요.
배포 매니페스트는 애플리케이션이 배포되는 방법을 기술합니다. 여기에는 애플리케이션 매니페스트의 위치와 클라이언트에서 실행해야 하는 애플리케이션의 버전이 포함됩니다.
참고 항목
.NET Core 3.1 및 .NET 5 이상용 ClickOnce에서는 Mage.exe 대신에 dotnet-mage.exe를 사용합니다. 자세한 내용은 .NET용 ClickOnce를 참조하세요.
ClickOnce 애플리케이션 배포
작성된 배포 매니페스트는 배포 위치에 복사됩니다. 이러한 위치는 웹 서버, 네트워크 파일 공유 또는 CD와 같은 레거시 미디어일 수 있습니다. 애플리케이션 매니페스트와 모든 애플리케이션 파일은 배포 매니페스트에 지정된 배포 위치에도 복사됩니다. 이 위치는 배포 위치와 동일하거나 다른 위치일 수 있습니다. Visual Studio에서 게시 마법사를 사용하면 복사 작업이 자동으로 수행됩니다.
ClickOnce 애플리케이션 설치
배포 위치로 복사한 다음에는 최종 사용자가 웹 페이지 또는 폴더에 있는 배포 매니페스트 파일의 아이콘을 클릭하여 애플리케이션을 다운로드하고 설치할 수 있습니다. 대부분의 경우 최종 사용자에게 설치 확인 여부를 묻는 간단한 대화 상자가 표시됩니다. 설치를 확인하면 설치가 진행되고 추가 개입 없이도 애플리케이션이 시작됩니다. 애플리케이션에 상승된 권한이 필요하거나 애플리케이션이 신뢰할 수 있는 인증서로 서명되지 않은 경우, 설치를 계속하기 전에 사용자에게 권한 부여 여부를 묻는 대화 상자가 표시되기도 합니다. ClickOnce 설치는 사용자별로 수행되지만, 관리자 권한이 필요한 사전 요구 사항이 있다면 권한 상승이 필요할 수도 있습니다. 상승된 권한에 대한 자세한 내용은 ClickOnce 애플리케이션 보안을 참조 하세요.
인증서는 컴퓨터 또는 엔터프라이즈 수준에서 신뢰할 수 있으므로 신뢰할 수 있는 인증서로 서명된 ClickOnce 애플리케이션은 자동으로 설치할 수 있습니다. 신뢰할 수 있는 인증서에 대한 자세한 내용은 신뢰할 수 있는 애플리케이션 배포 개요를 참조하세요.
애플리케이션은 사용자의 시작 메뉴와, 제어판의 프로그램 추가/제거 그룹에 추가할 수 있습니다. 다른 배포 기술과 달리 프로그램 파일 폴더나 레지스트리에는 아무것도 추가되지 않으며, 관리 권한 없이도 설치할 수 있습니다.
참고 항목
애플리케이션이 시작 메뉴와 프로그램 추가/제거 그룹에 추가되지 않게 하여 웹 애플리케이션처럼 동작하게 할 수도 있습니다. 자세한 내용은 ClickOnce 배포 전략 선택을 참조하세요.
ClickOnce 애플리케이션 업데이트
애플리케이션의 업데이트된 버전을 만들 때, 애플리케이션 개발자는 새 애플리케이션 매니페스트를 만들고 파일을 배포 위치에 복사합니다. 일반적으로 원래 애플리케이션 배포 폴더의 형제 폴더에 복사합니다. 관리자는 애플리케이션의 새 버전 위치를 가리키도록 배포 매니페스트를 업데이트합니다.
참고
Visual Studio의 게시 마법사를 사용하여 이러한 단계를 수행할 수 있습니다. .NET Core 및 .NET 5 이상의 경우 게시 도구는 다음 단계를 제공합니다.
배포 위치 외에도 배포 매니페스트에는 애플리케이션이 업데이트된 버전을 확인할 수 있는 업데이트 위치(웹 페이지 또는 네트워크 파일 공유)가 포함됩니다. ClickOnce 게시 속성은 애플리케이션이 업데이트를 확인해야 하는 시기와 빈도를 지정하는 데 사용합니다. 업데이트 동작은 배포 매니페스트에 지정하거나 ClickOnce API를 통해 애플리케이션의 사용자 인터페이스에서 사용자 선택 항목으로 표시될 수 있습니다. 또한 게시 속성을 사용하여 업데이트를 강제로 수행하거나 이전 버전으로 롤백하도록 지정할 수도 있습니다. 자세한 내용은 ClickOnce 업데이트 전략 선택을 참조하세요.
타사 설치 관리자
타사 구성 요소를 애플리케이션과 함께 설치하도록 ClickOnce 설치 관리자를 사용자 지정할 수 있습니다. 재배포 가능 패키지(.exe 또는 .msi 파일)가 있어야 하고 언어 중립적인 제품 매니페스트와 언어별 패키지 매니페스트가 포함된 패키지를 설명해야 합니다. 자세한 내용은 부트스트래퍼 패키지 만들기를 참조하세요.
ClickOnce 도구
다음 표에서는 애플리케이션 및 배포 매니페스트를 생성, 편집, 서명 및 다시 서명하는 데 사용하는 도구를 확인할 수 있습니다. .NET Core 및 .NET 5 이상의 경우 MSBuild 특성과 유사한 옵션은 게시 프로필을 사용하여 설정됩니다.
도구 | Description |
---|---|
프로젝트 디자이너, 보안 페이지 | 애플리케이션 및 배포 매니페스트에 서명합니다. .NET Core 및 .NET 5 이상의 경우 이러한 설정은 게시 프로필에 있습니다. |
프로젝트 디자이너, 게시 페이지 | 애플리케이션과 Visual Basic 및 Visual C# 애플리케이션용 배포 매니페스트를 생성하고 편집합니다. .NET Core 및 .NET 5 이상의 경우 이러한 설정은 게시 프로필에 있습니다. |
Mage.exe(매니페스트 생성 및 편집 도구) | 애플리케이션과 Visual Basic, Visual C#, Visual C++ 애플리케이션용 배포 매니페스트를 생성합니다. 애플리케이션 및 배포 매니페스트에 서명 및 다시 서명합니다. 일괄 처리 스크립트 및 명령 프롬프트에서 실행할 수 있습니다. |
dotnetmage.exe(매니페스트 생성 및 편집 도구) | .NET 5+ C# 및 Visual Basic 애플리케이션용 배포 매니페스트를 생성합니다. 사용법은 Mage.exe와 동일합니다. 애플리케이션 및 배포 매니페스트에 서명 및 다시 서명합니다. 일괄 처리 스크립트 및 명령 프롬프트에서 실행할 수 있습니다. |
MageUI.exe(매니페스트 생성 및 편집 도구, 그래픽 클라이언트) | 애플리케이션 및 배포 매니페스트를 생성하고 편집합니다. 애플리케이션 및 배포 매니페스트에 서명 및 다시 서명합니다. |
GenerateApplicationManifest 작업 | 애플리케이션 매니페스트를 생성합니다. MSBuild에서 실행할 수 있습니다. 자세한 내용은 MSBuild 참조를 참조하세요. |
GenerateDeploymentManifest 작업 | 배포 매니페스트를 생성합니다. MSBuild에서 실행할 수 있습니다. 자세한 내용은 MSBuild 참조를 참조하세요. |
SignFile 작업 | 애플리케이션 및 배포 매니페스트에 서명합니다. MSBuild에서 실행할 수 있습니다. 자세한 내용은 MSBuild 참조를 참조하세요. |
Microsoft.Build.Tasks.Deployment.ManifestUtilities | 자체 애플리케이션을 개발하여 애플리케이션 및 배포 매니페스트를 생성하세요. |
다음 표에서는 이러한 브라우저에서 ClickOnce 애플리케이션을 지원하는 데 필요한 .NET Framework 버전을 확인할 수 있습니다.
브라우저 | .NET Framework 버전 |
---|---|
Firefox | 2.0 SP1, 3.5 SP1, 4 |
Chrome | 3.5 |
Microsoft Edge | 3.5 |