ClickOnce 배포 및 보안
ClickOnce는 최소한의 사용자 조작으로 설치하고 실행할 수 있는 자체 업데이트 Windows 기반 애플리케이션을 만들 수 있는 배포 기술입니다. Visual Studio는 Visual Basic 및 Visual C#을 사용하여 프로젝트를 개발한 경우 ClickOnce 기술로 배포된 애플리케이션을 게시하고 업데이트하기 위한 모든 지원을 제공합니다. Visual C++ 애플리케이션 배포에 대한 자세한 내용은 ClickOnce 배포 방법Visual C++ 애플리케이션을 참조하세요.
ClickOnce 배포는 배포의 세 가지 주요 문제를 해결합니다.
애플리케이션을 업데이트하는 데 어려움이 있습니다. Microsoft Windows Installer 배포를 사용하면 애플리케이션이 업데이트될 때마다 사용자는 업데이트, msp 파일을 설치하고 설치된 제품에 적용할 수 있습니다. ClickOnce 배포를 사용하면 업데이트를 자동으로 제공할 수 있습니다. 변경된 애플리케이션의 해당 부분만 다운로드한 다음 업데이트된 전체 애플리케이션이 새 side-by-side 폴더에서 다시 설치됩니다.
사용자의 컴퓨터에 미치는 영향. Windows Installer 배포를 사용하면 애플리케이션은 종종 공유 구성 요소를 사용하며 버전 관리 충돌이 발생할 수 있습니다. ClickOnce 배포를 사용하면 각 애플리케이션이 자체 포함되며 다른 애플리케이션을 방해할 수 없습니다.
보안 권한. Windows Installer 배포에는 관리 권한이 필요하며 제한된 사용자 설치만 허용합니다. ClickOnce 배포를 사용하면 관리자가 아닌 사용자가 설치할 수 있으며 애플리케이션에 필요한 코드 액세스 보안 권한만 부여합니다.
과거에는 이러한 문제로 인해 개발자가 Windows 기반 애플리케이션 대신 웹 애플리케이션을 만들기로 결정하여 쉽게 설치할 수 있도록 풍부한 사용자 인터페이스를 희생하기도 했습니다. ClickOnce를 사용하여 배포된 애플리케이션을 사용하면 두 가지 기술을 모두 사용할 수 있습니다.
ClickOnce 애플리케이션이란?
ClickOnce 애플리케이션은 ClickOnce 기술을 사용하여 게시된 Windows Presentation Foundation(.xbap), Windows Forms(.exe), 콘솔 애플리케이션(.exe) 또는 Office 솔루션(.dll)입니다. 웹 페이지, 네트워크 파일 공유 또는 CD-ROM과 같은 레거시 미디어에서 세 가지 방법으로 ClickOnce 애플리케이션을 게시할 수 있습니다. 최종 사용자의 컴퓨터에 ClickOnce 애플리케이션을 설치하고 컴퓨터가 오프라인인 경우에도 로컬로 실행하거나 최종 사용자의 컴퓨터에 아무 것도 영구적으로 설치하지 않고 온라인 전용 모드로 실행할 수 있습니다. 자세한 내용은 ClickOnce 배포 전략을 참조하십시오.
ClickOnce 애플리케이션은 자체 업데이트될 수 있습니다. 사용할 수 있게 되면 최신 버전을 확인하고 업데이트된 파일을 자동으로 바꿀 수 있습니다. 개발자는 업데이트 동작을 지정할 수 있습니다. 네트워크 관리자는 업데이트를 필수로 표시하는 등의 업데이트 전략을 제어할 수도 있습니다. 업데이트는 최종 사용자 또는 관리자가 이전 버전으로 롤백할 수도 있습니다. 자세한 내용은 ClickOnce 업데이트 전략을 참조하십시오.
ClickOnce 애플리케이션은 격리되어 있으므로 ClickOnce 애플리케이션을 설치하거나 실행하면 기존 애플리케이션이 중단될 수 없습니다. ClickOnce 애플리케이션은 자체 포함됩니다. 각 ClickOnce 애플리케이션은 애플리케이션별 보안 사용자별 캐시에 설치되고 실행됩니다. ClickOnce 애플리케이션은 인터넷 또는 인트라넷 보안 영역에서 실행됩니다. 필요한 경우 애플리케이션은 상승된 보안 권한을 요청할 수 있습니다. 자세한 내용은 Secure ClickOnce 애플리케이션참조하세요.
ClickOnce 보안 작동 방식
핵심 ClickOnce 보안은 인증서, 코드 액세스 보안 정책 및 ClickOnce 신뢰 프롬프트를 기반으로 합니다.
인증서
Authenticode 인증서는 애플리케이션 게시자의 신뢰성을 확인하는 데 사용됩니다. 애플리케이션 배포에 Authenticode를 사용하여 ClickOnce는 유해한 프로그램이 확립되고 신뢰할 수 있는 출처에서 오는 합법적인 프로그램으로 자신을 묘사하지 못하도록 방지합니다. 필요에 따라 인증서를 사용하여 애플리케이션 및 배포 매니페스트에 서명하여 파일이 변조되지 않았음을 증명할 수도 있습니다. 자세한 내용은 ClickOnce 및 Authenticode 참조하세요. 인증서를 사용하여 신뢰할 수 있는 게시자 목록을 포함하도록 클라이언트 컴퓨터를 구성할 수도 있습니다. 애플리케이션이 신뢰할 수 있는 게시자에서 가져온 경우 사용자 상호 작용 없이 설치할 수 있습니다. 자세한 내용은 신뢰할 수 있는 애플리케이션 배포 개요참조하세요.
코드 액세스 보안
코드 액세스 보안은 코드가 보호된 리소스에 대한 액세스를 제한하는 데 도움이 됩니다. 대부분의 경우 인터넷 또는 로컬 인트라넷 영역을 선택하여 권한을 제한할 수 있습니다. 프로젝트 디자이너보안 페이지를 사용하여 애플리케이션에 적합한 영역을 요청합니다. 최종 사용자 환경을 에뮬레이트할 수 있는 권한이 제한된 애플리케이션을 디버그할 수도 있습니다. 자세한 내용은 ClickOnce 애플리케이션에 대한Code 액세스 보안을 참조하세요.
메모
.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 애플리케이션이 자동으로 설치될 수 있도록 컴퓨터 또는 엔터프라이즈 수준에서 인증서를 신뢰할 수 있습니다. 신뢰할 수 있는 인증서에 대한 자세한 내용은 신뢰할 수 있는 애플리케이션 배포 개요참조하세요.
애플리케이션은 사용자의 시작 메뉴 및 제어판프로그램 추가 또는 제거 그룹에 추가할 수 있습니다. 다른 배포 기술과 달리 Program Files 폴더 또는 레지스트리에 아무것도 추가되지 않으며 설치에 관리 권한이 필요하지 않습니다.
메모
애플리케이션이 시작 메뉴 및 프로그램 추가 또는 제거 그룹에 추가되지 않도록 방지하여 실제로 웹 애플리케이션처럼 동작할 수 있습니다. 자세한 내용은 ClickOnce 배포 전략을 참조하십시오.
ClickOnce 애플리케이션 업데이트
애플리케이션 개발자는 업데이트된 버전의 애플리케이션을 만들 때 새 애플리케이션 매니페스트를 생성하고 파일을 배포 위치(일반적으로 원래 애플리케이션 배포 폴더에 형제 폴더)로 복사합니다. 관리자는 새 버전의 애플리케이션 위치를 가리키도록 배포 매니페스트를 업데이트합니다.
메모
Visual Studio의 게시 마법사 사용하여 이러한 단계를 수행할 수 있습니다. .NET Core 및 .NET 5 이상의 경우 게시 도구는 이러한 단계를 제공합니다.
배포 위치 외에도 배포 매니페스트에는 애플리케이션이 업데이트된 버전을 확인하는 업데이트 위치(웹 페이지 또는 네트워크 파일 공유)도 포함됩니다. ClickOnce 게시 속성은 애플리케이션에서 업데이트를 확인해야 하는 시기와 빈도를 지정하는 데 사용됩니다. 업데이트 동작은 배포 매니페스트에서 지정하거나 ClickOnce API를 통해 애플리케이션의 사용자 인터페이스에서 사용자 선택 항목으로 표시될 수 있습니다. 또한 게시 속성을 사용하여 업데이트를 필수로 만들거나 이전 버전으로 롤백할 수 있습니다. 자세한 내용은 ClickOnce 업데이트 전략 선택참조하세요.
타사 설치 프로그램
ClickOnce 설치 관리자를 사용자 지정하여 애플리케이션과 함께 타사 구성 요소를 설치할 수 있습니다. 재배포 가능 패키지(.exe 또는 .msi 파일)가 있어야 하며 언어 중립적인 제품 매니페스트 및 언어별 패키지 매니페스트를 사용하여 패키지를 설명해야 합니다. 자세한 내용은 부트스트래퍼 패키지 만들기를 참조하세요.
ClickOnce 도구
다음 표에서는 애플리케이션 및 배포 매니페스트를 생성, 편집, 서명 및 다시 서명하는 데 사용할 수 있는 도구를 보여 줍니다. .NET Core 및 .NET 5 이상의 경우 MSBuild 특성과 유사한 옵션은 게시 프로필을 사용하여 설정됩니다.
도구 | 설명 |
---|---|
보안 페이지, 프로젝트 디자이너 | 애플리케이션 및 배포 매니페스트에 서명합니다. .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 |
크롬 | 3.5 |
Microsoft Edge | 3.5 |
관련 콘텐츠
- ClickOnce 애플리케이션 게시
- 보안 ClickOnce 애플리케이션
- ClickOnce 사용하여 COM 구성 요소 배포
- 명령줄 ClickOnce 애플리케이션 빌드
- System.Deployment.Application 사용하는 ClickOnce 애플리케이션 디버그
- 이전 버전의 Windows ClickOnce 배포