본문으로 바로가기

ClickOnce 정보

category Development/C# 2012. 1. 31. 14:07

■ 어플리케이션 manifest

ClickOnce 배포의 핵심 아키텍쳐는 XML manifest 파일에 기반을 두고 있다. 어플리케이션 manifest 와 배포 manifest. 어플리케이션 manifest는 어플리케이션 자체에 대한 설명을 한다. 이는 어셈블리, 참조 어셈블리, 어플리케이션을 구성하는 파일들, 요구되는 권한, 업데이트의 위치 정보 등을 포함한다.어플리케이션 개발자는 어플리케이션 manifest를 Visual Studio 2005의 게시 마법사를 또는.NET Framework SDK에 포함된 manifest 생성 툴(Mage.exe)를 이용해 생성할 수 있다.

■ 제약(?) : not supported area by ClickOnce

ClickOnce가 모든 배포 환경과 조건에 부합되는 최상의 선책이라고는 할 수 없다. 아래의 표 처럼 특수 환경에서는 ClickOnce를 이용할 수 없으면, 대신 Windows Installer 등을 이용해 배포 프로그램을 별도로 생성해야 하는 경우도 있다.

Feature ClickOnce Windows Installer
자동 업데이트 Yes Yes
기존 설치 취소(Rollback) Yes No
웹을 통한 업데이트 Yes No
공용 컴포넌트나 다른 어플리케이션에 영향을 미치지 않음 : Does not affect shared components or other applications Yes No
허용되는 보안 Permission 어플리케이션에 필요한 권한만 허용 (more safe) 기본적으로 Full 권한 허용
(less safe)
요구되는 보안 Permission 인터넷 또는 인트라넷 Zone
(Full Trust for CD-ROM installation)
관리자
어플리케이션, 배포 manifest 서명
: Application and deployment manifest signing
Yes No
설치 과정의 사용자 인터페이스 Single prompt(사용자 입력이 필요한 화면 한번 있음) Multipart Wizard(마법사 화면으로 여러 사용자 입력 필요)
어셈블리에 대한 on deman 설치 Yes No
공용 파일 설치
Installation of shared files
No (공용 파일 설치 불가) Yes
Installation of drivers No Yes (with custom actions)
Installation to Global Assembly Cache No(GAC 설치 불가) 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
(설치 폴더는 정해진 어플리케이션 캐시 폴더만 가능)
Program Files folder

위 표에서 처럼 공용 파일의 설치(regsvr32를 통해 COM 을 등록해야 하는 경우)나, GAC으로의 설치, 시작프로그램에 등록, Program Files 폴더에 복사 또는 설치 등은 ClickOnce를 통해 구현할 수 없다.(현재까지는,)

위의 요구중 하나가 배포의 조건에 포함된다면, Windows Installer를 이용한 배포 프로그램(setup.exe)을 고려해야 할 것이다.(또는 Visual Studio 2005의 셋업 프로젝트를 이용하는 것이 손쉬운 방법이 될것이다.)

■ ClickOnce 의 캐시 저장공간(클라이언트 컴퓨터 상)

ClickOnce로 통해 온라인 배포되는 어플리케이션을 위한 클라이언트 컴퓨터 상의 캐시 저장공간은 250MB로 제한된다.
아래의 registry key로 확인이 가능하다.
HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment\OnlineAppQuotaInKB

로컬 컴퓨터에 설치된 모든 ClickOnce 어플리케이션은 data 디렉토리를 가진다. 이는 사용자의 Documents and Settings 폴더에 저장되는 되며, 이 data 폴더에는 ClickOnce 어플리케이션에 포함된 "data" 파일 형태로 표시된 모든 파일이 ClickOnce 가 설치되는 동안 저장된다.

ClickOnce 어플리케이션이 설치제거될때, Data 폴더 역시 제거된다. 이 폴더에 임의의 사용자 데이터를 임의로 저장해서는 안된다.


■ 업데이트를 위한 File Patching

어플리케이션이 업데이트 될때, ClickOnce 는 새로운 버전의 어플리케이션에 포함된 모든 파일을 다운로드하지 않는다. 변경된 파일만을 다운로드 한다.
ClickOnce는 현재 버전의 어플리케이션 manifest에 명시된 파일의 해시 서명을 새로운 버전의 그것과 비교하게 된다.
File Patching은 data 폴더에 저장된 "data"로 명시된 파일들에 대해서는 작동하지 않는다. 이들은 파일의 해시 서명 정보에 상관없이 항상 다운로드 되어진다.

■ IIS MIME 등록

ClickOnce 는 모든 어플리케이션 파일을 .deploy 파일 확장자로 변경하여 게시한다.
그러므로, 관리자는 웹 서버(IIS)가 아래의 세 파일 확장자를 블럭킹하지 않도록 구성해야 할 것이다.:
□ .application
□.manifest
□.deploy

이를 위해 IIS 구성 상에서, MIME 타입 등록을 아래의 테이블 내용에 맞게 추가해주도록 한다.

File name extension Content type
.application application/x-ms-application
.manifest application/x-ms-manifest
.deploy application/octet-stream

■ Client side Issue

ClickOnce 설치는 배포 manifest 파일에 대한 URL이 IE를 통해 열리는 경우에만 진행된다.(현재까지 그렇다.)
Browser Scripting을 통해 ClickOnce 어플리케이션이 활성화 되기 위해서, 아래의 IE 옵션이 활성화(enabled)되어야 한다.

그리고 ClickOnce 설치 시 오류가 발생하는 문제의 대부분은 재설치 유도를 통해 해결 가능하다.
재설치 유도? 이건 로컬에 설치된 ClickOnce 어플리케니션을 위한 캐시 저장공간을 지원버리면 다음 전 실행시 ClickOnce 어플리케이션을 새로이 설치하게 된다.

ClickOnce 어플리케이션이 설치되는 클라이언트 상의 위치(캐시 저장공간)는 아래이다. 이 폴더 하위의 모든 내용을 지워버리면 다음번 실행 시에 새로 설치한다.

C:\Documents and Settings\USERID\Local Settings\Apps\2.0

■ Server side Issues

□ Anonymous Access

익명 접근이 허용되지 않는 원격 서버에 게시(publish)를 하는 경우, 아래의 에러 메시지가 표시된다. 즉 게시 위치의 IIS 가상디렉토리는 익명접근을 풀도록 한다.

"The files could not be downloaded from http://<remoteserver>/<myapplication>/. The remote server returned an error: (401) Unauthorized."

□ FrontPage 2002 Server Extensions

웹 서버에는 FrontPage 2002 Server Extensions 을 설치해야 Visual Studio로 게시하는 것이 가능하다.

□ Special Characters in manifest file

Manifest 파일 내에 정의된, 어플리케이션 이름에 특수문자(' 또는 ")가 포함되면 여러 문제를 야기할 수 있다.


MSDN : http://msdn2.microsoft.com/en-us/library/wh45kb66(VS.80).aspx

'Development > C#' 카테고리의 다른 글

Image Source 변경  (0) 2012.02.07
Icon in Add/Remove Programs for ClickOnce Application  (0) 2012.01.31
DataGrid 바인딩  (0) 2011.09.27
DataGridView 한글깨짐  (0) 2010.07.21
중복 실행 방지  (0) 2010.07.21