본문 바로가기

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

NTD 애플리케이션의 초기설정

NTD 애플리케이션의 초기설정

애플리케이션이 구동되기 위해서 미리 설치되어 있어야 하는 필수 프로그램들이 있다. 아직까지 NTD나 ClickOnce는 배포만을 다루는 기술이다. 스마트클라이언트 애플리케이션이 실행되기 위한 초기설정을 위해서는 배포와는 다른 작업으로 생각해야 한다.
초기설정단계에서 해야 할 일중의 하나는 스마트클라이언트 애플리케이션이 구동되기 전에 필요한 필수 프로그램이 미리 설치되어 있어야 한다. ClickOnce에서는 부트스트래퍼(BootStrapper) 기술을 이용해서 애플리케이션이 시작되기 전에 필수 프로그램을 설치할 수 있다. 그러나 NTD 애플리케이션에서는 필수 프로그램을 설치하는 프로그램을 직접 코딩해야 할 것이다.
또한 NTD 애플리케이션의 경우는 또한 필요한 CAS 권한 설정도 이 단계에서 해야 하는 경우도 있을 것이다. 여기서는 IE기반의 NTD 애플리케이션을 위한 초기설정에 대해서 알아본다.

NTD용 애플리케이션의 클라이언트 PC의 초기 설정 내용을 보면 보통 다음과 같다.

1) .NET Framework 설치
2) 기타 다른 프로그램 설치 예) 리포트 뷰어 설치
3) 필요한 전역 어셈블리 GAC에 등록 예) COM interop용 dll 등록
4) 클라이언트 보안 설정(Code Access Security)

이런 초기 설정 작업은 여러 방식으로 할 수 있을 것이다. 다음 그림은 그런 시나리오중의 하나를 보여주고 있다.

NTD 애플리케이션용 클라이언트 PC 초기설정 

그림을 보면 초기 설정용 “셋업 서버”와 스마트클라이언트 어셈블리 배포용 “배포 서버”가 분리되어 있다. 물론 그림은 개념적인 내용이고 실제로는 같은 서버를 사용할 수도 있다.

■ .NET 프레임워크 설치 여부 판단

사용자는 먼저 클라이언트 PC의 초기 설정 작업을 수행하기 위해서 CheckClient.aspx를 호출한다. 이 페이지에서는 클라이언트 PC에 .NET 프레임워크가 설치되었는지를 확인하게 된다. 이 작업이 가능한 이유는 클라이언트가 HTTP 요청을 보낼 때 요청의 헤더부분에 .NET 프레임워크의 설치 여부를 알리는 정보를 UserAgent 문자열과 함께 보낸다.

HTTP요청의 헤더 

그림을 보면 클라이언트 PC에 설치된 .NET 프레임워크의 모든 버전들이 UserAgent 헤더값에 표시되어 있다. 이것을 CheckClient.aspx에서 캐치해서 판단하게 되는 것이다.
ASP.NET에서는 이것을 해석해서 알려주는 속성을 정의하고 있다. HttpBrowserapabilities 클래스의 ClrVersion 속성이 그 일을 해 준다.

string clrVersion = Request.Browser.ClrVersion;

ClrVersion 속성은 System.Version 타입의 값을 반환하는데, 이 타입은 버전 번호에 해당하는 Major, Minor, Build, Revision속성을 통해서 클라이언트에 설치되어 있는 CLR 버전을 알려준다. 만약 CLR이 설치되어 있지 않으면 버전번호 0, 0,-1,-1로 반환한다. 만약 CLR의 버전이 다른 것이 하나 이상 설치되어 있다면 최신 버전 번호를 리턴한다. 클라이언트에 .NET이 설치되었는지는 이 정보들을 통해서 얻을 수 있을 것이다.

■ 수동 설치

만약 .NET 프레임워크가 설치되어 있지 않다면 우선 .NET 프레임워크를 설치해야 할 것이다. 그리고 이 버전에서는 필요하다면 CAS 설정도 한다. CAS 설정을 MSI로 배포하는 방법은 아래 포스트를 참고한다. 

2006/04/23 - [02. 관리 - 보안 관리] - [연재] 7. 보안 정책 배포

그리고 전역 어셈블리를 GAC에 등록하는 작업 또는 클라이언트 PC의 브라우저 세팅이 필요하다면 이곳에 할 수 있을 것이다. 설치 프로그램을 작성하면 될 것이다.

클라이언트측에 .NET 프레임워크가 설치되어 있다면 기타 필요한 다른 프로그램을 선택할 수 있는 뷰를 보여주면 될 것이다. 각각의 셋업 프로그램을 선택하도록 할 것인지 전체를 한번에 설치하도록 할 것인지는 상황에 따라 적절하게 선택하면 될 것이다.

■ NTD용 부트스트래퍼 제작

NTD용 부트스트래퍼 

직접 NTD 애플리케이션용 부트스트래퍼 역할을 하는 프로그램 제작할 수도 있을 것이다. 일단 부트스트래퍼가 제작되면 이 프로그램을 모든 사용자들이 한번은 자신들의 PC에 설치한다.  그리고 이 프로그램은 PC가 부팅될 때 자동 실행되도록 시작 프로그램으로 등록한다. 이 프로그램에서는 그림처럼 필요한 체크를 한 후 만약 설정이 되지 않은 부분이 있다면 서버에 요청을 해서 자동으로 세팅하도록 할 수 있다. 

■ 다른 방법?

기타 다른 방법도 있을 것이다.

'IT 살이 > 04. 기술 - 프로그래밍' 카테고리의 다른 글

MIME타입이란?  (0) 2009.04.23
C# 2.0 iterators  (0) 2009.04.23
애플리케이션 도메인 FAQ  (0) 2009.04.23