본문 바로가기

IT 살이/04. 기술 - 프로그래밍

[연재 01] What is ClickOnce

1. What is ClickOnce?


ClickOnce!  최초 한번만 클릭하는 수고를 해 주면 모든 것을 알아서 해 주겠다는 말인데, 이제 그 속 사정을 알아보도록 하자.

ClickOnce나 NTD(No-Touch Deployment)는 배포 기술이다. 개발에 의해 제작된 실제 애플리케이션은 Windows Forms애플리케이션과 동일하다고 보면 된다. 즉  Windows Forms 애플리케이션을 어떻게 클라이언트로 배포할것인가에 대한 솔루션인 것이다.

클라이언트로의 배포는 항상 말도 많고 탈도 많은 여러모로 비용이 많이 드는 프로세스이다. 모든 클라이언트 PC에 초기 배포/설치뿐 아니라 애플리케이션이 수정되면 다시 모든 클라이언트 PC에 업데이트 버전이 설치되도록 해야 한다. 어떻게 해서든지 최종적인 목표는 클라이언트 PC의 애플리케이션 버전이 항상 최신 버전으로 설치되어 있어야 한다는 것이다. 문제는 얼마나 쉽게 얼마나 부작용(소위 DLL Hell)이 없이 클라이언트 PC의 애플리케이션의 버전과 최신 버전의 싱크가 이뤄지는가이다.

ClickOnce는 이런 문제를 해결하기 위해 나온 배포 기술의 진화 과정 선상에 있는 기술중의 하나이다. 그 기술이 내세우는 특징적인 내용은 다음과 같은 것이 있을 수 있다.

■ 초기  설치 자동화

ClickOnce 배포는 웹 기반의 배포 방식이다. 애플리케이션에 필요한 모든 파일을 중앙의 서버에 모아두고 사용자들은 애플리케이션에 대한 URL을 통지받는다. 그런 다음 사용자들은 주소창을 통해서 주어진 URL로 직접 서버에 접근할 수 있다. URL로 접근하면 해당 애플리케이션이 클라이언트로 자동 다운되어 설치된다.
또한 Visual Studio.NET 2005에는 애플리케이션을 서버로 게시할 수 있는 기능이 있는데, 이것을 사용해서 서버로 게시를 하면 기본적으로 애플리케이션 URL을 갖는 링크 버튼이 있는 다음과 같은 페이지를 제공해준다. 사용자들은 이 버튼을 클릭해서 애플리케이션 배포를 서버에 요청할 수도 있다.
1167089881 

애플리케이션 배포용 기본 페이지
"실행(Install)" 버튼을 클릭하면 애플리케이션이 활성화되기 전에 그림과 같은 진행바가 출력된다. 이 그림이 출력되기 전에 상황에따라서는 게시자를 알 수 없다는 보안 경고창이 뜨기도 한다.
애플리케이션이 실행되기 위해서는 미리 설치되어 있어야할 필수 프로그램들이 있을 수 있다. 예를 들면 기본적으로 .NET V2.0은 설치되어 있어야 한다. ClickOnce 배포 방식을 이용하면 이런 필수 프로그램들을 체크하고 설치되어 있지 않으면 자동설치도 대신해주는 프로그램이 있다. 이런 프로그램을 부트스트래퍼(BootStrapper)라 한다. 이 부트스트래퍼를 잘 이용하면 초기 설정을 손 쉽게 수행할 수 있다.

■ 자동 업데이트
ClicOnce 애플리케이션(앞으로 ClickOnce로 배포된 애플리케이션을 줄여서 이렇게 부른다)은 업데이트 또한 쉽게 수행된다. 새로운 버전의 애플케이션을 서버로 게시만 해주면 클라이언트 PC 업데이트는 자동 업데이트를 수행한다.

■ 강력한 보안 모델
ClickOnce 애플리케이션에서는 애플리케이션 차원의 보안 개념을 새롭게 도입했다. ClickOnce 애플리케이션은 보안 샌드 박스(Security sand box)라는 제한된 영역에서 실행된다. 만약 그 영역을 벗어나는 일을 하려면 즉 애플리케이션에 주어진 권한 밖의 일을 하려고 하면 애플리케이션의 신뢰도를 승급시킬지 여부에 대한 사용자의 결정을 요청하게 된다.

■ .NET v2.0의 설치 조건
ClickOnce 배포 방식과 관련 장점들을 사용하기 위해서는 클라이언트 PC에 .NET v2.0이 설치되어 있어야 한다.

2. ClickOnce 배포 vs. 기존의 MSI 인스톨러

개발자들이 이해해야 하는 것이 있는데, ClickOnce 배포 방식은 기존의 MSI인스톨러에 의한 배포 방식을 대체하는 기술이 아니라 보완의 기술이라는 것이다. 마이크로소프트는 계속해서 MSI의 업그레이드된 버전을 출시하고 있다. ClickOnce 배포 방식도 그렇지만 NTD 방식 또한 마찬가지다. .NET과 함께 나온 이런 배포 기술들은 기존의 배포 방식을 대체할 수 있는 성격이 아니다. 서로 다른 적절한 쓰임새가 있는 상호 보완적이다.

언제 ClickOnce 배포가 적절한지 MSI 인스톨러가 적절한지에 대한 정해진 기준이나 간단한 규칙은 없다. 다만 결정을 하는데 도움이 될 수 있는 일반적인 가이드 라인이 있을 수 있다.

▶ 인스톨시 사용자의 입력이 필요한가?

▶애플리케이션이 Active Directory(AD) COM+ 환경을 필요로 하는가?

▶인스톨 후, 파일을 생성하거나 레지스트리에 값을 쓸 필요가 있는가?

▶ 애플리케이션이 COM 컴포넌트를 인스톨시켜야 하는가?

▶ 애플리케이션이 COM-Interop용 컴포넌트를 등록할 필요가 있는가?

▶ 애플리케이션이 어떤 서비스 프로그램을 설치할 필요가 있는가?

▶ 애플리케이션을 특별한 위치에 인스톨하거나 또는 어셈블리를 GAC에 등록할 필요가 있는가?

▶ 애플리케이션이 OS나 또는 런타임 환경에 따라 조건적으로 설치될 필요가 있는가?

대강 이런 문제들에 대한 답이 그렇다로 나온다면 MSI 인스톨러가 배포 방식으로 적절한 선택이 될 것이다.

배포 방식을 어떻게 선택하느냐를 결정하기 위해서는 각 배포 방식에 대한 이해가 충분히 있어야 할 것이다. 이 연재에서는 ClickOnce에 대한 개요에서부터 심도있는 인터널 얘기까지 해 볼 생각이다. 그럼 Let’s go!



참조 문서

ClickOnce Deployment Technology - Peter Bromberg
http://www.wise.com/Library/ClickOnce.pdf
ClickOnce : Bringing Ease and Reliability to SmartClient Deployment
http://www.code-magazine.com/article.aspx?quickid=0601041&page=1
msdn
Deploying applications
http://msdn2.microsoft.com/en-us/library/6hbb4k3e(VS.80).aspx