ClickOnce deployment overview
Visual Studio 는 Windows-based application 을 배포할 때 두 가지 방법을 제공합니다.
하나는 이미 많이 사용되고 있는 Microsoft Installer 이고(확장자는 [Setup Name].msi), 또 다른 하나는 Visual Studio 2005 부터 제공하는 .NET Application 배포에 편리한 ClickOnce 입니다.
Application 배포를 담당하는 Engineer들은 ClickOnce 를 사용하여 배포할 때 이점은 무엇이며, 어느 때 ClickOnce 를 사용해야 하는지 에 대하여 문의를 종종하곤 합니다. 따라서, 이에 대해서 정리해보도록 하겠습니다.
기존의 배포(Microsoft Installer를 사용하여 배포)의 문제점은 다음과 같이 3가지로 말할 수 있습니다.
- Update 의 어려움 : Windows Installer 를 사용하여 배포했을 때, Update 관련 API 를 작성해야 해당 Application Update 를 관리 할 수 있습니다. 또한 Update 진행 시 기존의 Application 을 Reinstall 하는 작업을 진행해야 합니다.
- 사용자 Computer 에 미치는 영향 : Shared Component 를 사용하기 때문에 Versioning 과 관련하여 충돌을 일으킬 수 있습니다.
- 보안 퍼미션 관련 : 대부분의 Application 설치 시 Administrators 그룹의 권한을 필요로 합니다. 따라서, 관리자 권한이 아닌 사용자에게 배포했을 때는 이에 대한 권한 상승을 요구할 수 있습니다.
이에 대한 단점을 보완하기 위해서 ClickOnce 는 개발자 또는 배포 담당 관리자에게 편리한 기능들을 제공합니다.
- Administrator 권한을 필요로 하지 않습니다. 일반 사용자에게 권한 상승을 요구하지 않으므로, 이에 대해서 Application 배포 담당자는 고려하지 않아도 됩니다.
- ClickOnce는 개발자에게 편리한 Program Update 방법을 제공하며(Web, File Share), 이는 배포 담당자 및 사용자에게 아주 유용합니다. 또한, ClickOnce로 업데이트 시 매번 전체 파일을 다운받지 않습니다. Assembly만 변경을 할 뿐입니다. 업데이트 시 매번 Reinstall 하는 것이 아니기 때문에 변경된 Assembly만을 참조하여 업데이트 합니다. 따라서, 업데이트 시 네트워크 부하는 기존의 방법보다 현저히 줄어들게 됩니다.
- 사용자가 임의로 설치 폴더를 변경할 수 없습니다. 다른 의미로 윈도우 사용자 단위로 설치가 됩니다. 이는 각각의 사용자에게 프로그램을 안전하게 실행할 수 있게 하는 방법이 될 수 있습니다. 결국, ClickOnce가 보안 상 다른 프로그램 보다 안전함을 제공합니다.
- On XP : %userprofile%\Local Settings\Apps (e.g. C:\Documents & Settings\kikiwaka\Local Settings\Apps)
- On VISTA: %userprofile%\AppData\Local\Apps (e.g. C:\users\kikiwaka\AppData\Local\Apps)
결론적으로 다음과 같은 상황에서는 ClickOnce는 굉장히 유용한 Tool 이 될 수 있을 것 같습니다.
- .NET Application (WPF, Windows Form, Console Application, and so on)을 사용하여 배포하려고 할 때 유용합니다. (하지만 드라이버와 같은 하드웨어에 종속적인 Application 배포는 MSI 를 사용해야 합니다.)
- 사내망으로 구성된 네트워크에서 사용시 유용합니다. 보통 회사에서 사용하는 Application 배포시 여러가지 이점을 가지고 있습니다. 인트라넷(보통 Public IP 를 사용하지 않고, Private IP를 사용합니다.)을 통해 배포 및 Update 를 관리하기 때문에, 사용자 입장에서 Application 관리가 편리합니다.
- 잦은 Update를 해야 하는 Application 은 네트워크 부하가 줄어들고 관리가 편리하기 때문에 배포 시 유용합니다.
ClickOnce and Windows Installer Comparison Table
Feature |
ClickOnce |
Windows Installer |
Automatic update1 |
Yes |
Yes |
Post-installation rollback2 |
Yes |
No |
Update from Web |
Yes |
No |
Does not affect shared components or other applications |
Yes |
No |
Security permissions granted |
Grants only permissions necessary for the application (more safe) |
Grants Full Trust by default (less safe) |
Security permissions required |
Internet or Intranet Zone (Full Trust for CD-ROM installation) |
Administrator |
Application and deployment manifest signing |
Yes |
No |
Installation-time user interface |
Single prompt |
Multipart Wizard |
Installation of assemblies on demand |
Yes |
No |
Installation of shared files |
No |
Yes |
Installation of drivers |
No |
Yes (with custom actions) |
Installation to Global Assembly Cache |
No |
Yes |
Installation for multiple users |
No |
Yes |
Add application to Start menu |
Yes |
Yes |
Add application to Startup group |
No |
Yes |
Add application to Favorites menu |
No |
Yes |
Register file types |
No |
Yes |
Install time registry access3 |
Limited |
Yes |
Binary file patching |
No |
Yes |
Application installation location |
ClickOnce application cache |
Notes
1. With Windows Installer, you must implement programmatic updates in the application code.
2. With ClickOnce, rollback is available in Add or Remove Programs.
3. ClickOnce deployment can access HKEY_LOCAL_MACHINE (HKLM) only with Full Trust permission.