본문 바로가기

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

MAGE를 이용한 ClickOnce 어플리케이션 게시

MAGE(Manifest Generating and Editing tool)를 이용한 게시

ClickOnce 어플리케이션을 게시할때 흔히 Visual Studio 2005를 사용한다. 그러나 이것의 단점이 있다. 어플리케이션 업데이트 버전을 Visual Studio로 게시하면 변경된 파일만 다운받는 것이 아니라 전체를 다운받게 된다. 이것은 ClickOnce가 지원을 못하는 것이 아니라 Visual studio가 게시를 하기 전에 빌드를 하게 되는데 이로 인해 모든 파일이 변경된 것으로 되어 버리기때문이다. 그리고 서버 작업을 하는 관리자에게는 Visual Studio가 적절한 툴은 아닐 수도 있다는 것이다. 서버에 Visual Studio를 설치해야 하는 것부터 부담이 될 수 있고 그리고 실행 프로젝트를 구성해야 하는 등 관리자가 개발툴을 다뤄야 하는 것도 그렇게 바람직한 것은 아닐 것이다.

이런 경우 .NET SDK와 함께 배포되는 MAGE 툴은 실행 프로젝트를 구성하지 않아도 되기 때문에 관리자에게는 적절한 대안이 될 수 있다. MAGE는 UI 툴뿐만 아니리 커맨드 툴로도 제공된다. 편한 것을 사용하면 될것이다. MAGE 툴은 그러나 어플리케이션 수정 후 업데이트하는데 필요한 작업 단계가 Visual Studio를 사용하는 경우보다 복잡해진다는 단점이 있다.  MAGE UI 툴을 실행시키려면 SDK 명령 프롬프트 창에서 다음 명령을 실행하면 된다.

mageui.exe( mage.exe를 실행시켜도 된다 )

이 명령을 실행하면 다음처럼 메뉴와 툴바만 있는 윈도우 프로그램이 실행된다.

1012495995

그림 MAGE 실행 모습

MAGE 툴은 클라이언트로 배포될 파일들을 대상으로 해서 두 개의 매니페스트 파일(.exe.manifest, .application)을 생성해주는 일을 한다. MAGE 툴의 File->New를 선택해보면 생성 항목으로 “Application Manifest”와 “Deployment Manifest” 밖에 없는 것을 알 수 있다. MAGE가 빌드를 해 주지는 않는다.

이제 이 툴을 사용해서 어플리케이션을 배포하는 작업 절차에 대해서 정리해 본다. 이 내용은 MSDN 도움말(http://msdn2.microsoft.com/en-us/library/xc3tc5xx(VS.80).aspx )을 보면 자세히 나와 있다.

MAGE 작업 전

1. 우선 게시할 파일들이 준비되어 있어야 한다.

MAGE 툴은 어플리케이션 빌드 툴이 아니기에 빌드는 하지 않는다. 따라서 어플리케이션을 구성 하는 어셈블리들은 모두 Visual Studio 등을 통해서 미리 빌드되어 있어야 한다. 그리고 어셈블리들뿐만 아니라 데이터 파일들, 리소스 파일등 클라이언트로 내려가야 하는 모든 파일들도 준비되어 있어야 한다.

이때 어플리케이션 파일들을 모아 두는 폴더가 반드시 배포 서버의 게시 위치일 필요는 없다. 오히려 MAGE 작업은 게시 폴더와는 다른 별도의 폴더에서 수행하는 것이 바람직한 구조이다. 

2. MAGE 작업이 수행될 폴더를 만든다. 여기서는 폴더명을 “MAGE작업”으로 하겠다.

3. MAGE 작업 폴더에 현재 버전의 파일을 모아둘 디렉토리를 생성한다. 처음 배포되는 경우 “1_0_0_0” 이름의 폴더가 될 것이다.( 이 버전은 어플리케이션 버전과 같을 필요는 없다).

4. 버전 폴더로 MAGE 작업 전에 준비해둔 어플리케이션 파일들을 복사한다.

지금까지의 작업 결과를 윈도우 탐색기에서 보면 다음과 같다. 

1049172577

[그림] 작업 디렉토리 구성

MAGE 작업

MAGE 작업이란 준비된 배포 파일들을 대상으로 해서 두 매니페스트 파일들(.exe.manifest, .application)을 생성하는 작업이다. 앞에서 MAGE 작업 폴더가 생성되었고 이GUI 방식의 MAGE 툴을 사용해서 이 두 파일을 생성하는 전체적인 절차를 알아보도록 하겠습니다.

각 항목에 대한 설명은 Brian Noyes 책의 설명을 참조한다.

▶ 어플리케이션 매니페스트(.exe.manifest) 만들기

1. SDK 커맨드 프롬프트에서 mageui.exe(mage.exe도 가능)로 툴을 실행시킨다.

2. 메뉴에서 File->New->Application Manifest을 선택한다.

1069269709
3. Name 탭에서 배포 이름과 버전을 입력한다. 배포 이름은 임의로 입력해도 좋지만 되도록이면 어플리케이션 이름을 입력하도록 한다.

배포 이름 : MyWebPageViewer

버전 번호 : 1.0.0.0

4. Files…탭을 선택한다.

5. 텍스트박스 Application Directory 옆에 있는 검색 버튼(…)을 클릭한다.

6. 어플리케이션 파일들을 가지고 있는 버전 폴더 “1_0_0_0”를 선택한다.

7. 파일들에 확장자 “.deploy”를 덧붙이겠다는 체크 박스를 선택한다.

8. Populate 버튼을 클릭해서 배포할 파일 목록을 추가한다. 실행 파일(exe)이 하나인 경우 MAGE 툴은 자동으로 File Type을 Entry Point로 선택해 준다. 만약 2개 이상인 경우는 시작 어플리케이션으로 어떤 것을 사용할지를 게시자가 선택해야 한다. 다른 파일들의 File Type도 적절히 선택한다. “.deploy”를 붙이도록 선택했다면 이때 물리적인 파일명이 변경된다.

9. Permissions Requeired 탭을 선택해서 어플리케이션에서 필요로 하는 권한 설정 작업을 해 준다. Full Trust가 기본 권한으로 되어 있는데 대부분의 어플리케이션은 이것을 선택할 수 있다. 보안이 좀더 강화된 어플리케이션을 제작할 필요가 있는 경우는 다른 항목을 선택하거나 Custom을 선택해서 필요한 권한을 직접 코딩할 수 있다. 여기서는 Full Trust를 선택하도록 하겠다.

10. File->Save를 선택해서 어플리케이션 매니페스트 파일을 저장한다. 이때 어플리케이션 매니페스트에 전자 서명을 추가하라는 창이 뜨게 된다.

1098682408
11. 인증서를 파일 시스템에 파일로 가지고 있다면 Sign as certificate file을 선택하면 된다. 또는 인증서 저장소에 등록된 인증서들이 있다면 Sign with stored certificate option을 선택해서 등록된 인증서중에서 선택하면 됩니다. 인증서가 아직 준비되지 않은 경우는 New 버튼을 사용해서 임시 인증서를 생성해서 사용한다. 임시 인증서는 다음 업데이트때도 사용해야 하므로 MAGE 작업 폴더에 저장해 두도록 한다.

12. 어플리케이션 매니페스트 파일 이름을 입력하고 저장한다. 매니페스트 파일명으로는 어플리케이션명을 입력하도록 한다.

▶ 배포 매니페스트(.application) 만들기

1. File->New->Deployment Manifest를 선택한다.

1359171900

2. Name 탭에서 어플케이션 명과 어플리케이션 버전 번호를 입력한다.

어플리케이션 이름 : MyWebPageViewer

어플리케이션 버전 번호 : 1.0.0.0

3.Publisher 탭을 선택해서 Publisher와 Product 값을 입력한. 게시 옵션을 설명하면서 언급했듯이 만약 어플리케이션이 클라이언트에 인스톨 모드로 설치된다면 Publisher에 입력한 값은 바로가기 메뉴의 디렉토리명이 되고, Product에 입력한 값이 바로가기 메뉴의 이름이 된다.

4. Deployment Options 탭을 선택한다. Start Location값으로 사용자가 .application 파일에 접근할 수 있는 URL 주소를 입력한다. 어플리케이션 매니페스트 파일 작성시, 파일들에 확장자 “.deploy”를 덧붙였으므로 “Use .deploy file name extension"을 선택한다. 다른 옵션은 필요한대로 입력한다. 옵션들의 의미가 필요하다면 앞에서 ClickOnce 게시 옵션을 설명한 부분을 참조하시기 바란다.

4. Update탭을 선택해서 어플리케이션의 업데이트 정책을 설정한다.

5. Application Reference 탭을 선택한다. Select Manifest 버튼을 이용해서 앞에서 만들어둔 어플리케이션 매니페스트 파일을 선택하면 이 탭의 비어있는 텍스트 박스가 자동으로 채워지게 된다.

6. File->Save를 선택해서 배포 매니페스트 파일을 저장한다. 이때 배포 매니페스트에 전자 서명을 추가하라는 창이 뜨게 된다.

7. 어플리케이션 매니페스트 경우처럼, 인증서를 파일 시스템에 파일로 가지고 있다면 Sign as certificate file을 선택하고 인증서 저장소에 등록된 인증서들이 있다면 Sign with stored certificate option을 선택해서 등록된 인증서중에서 선택하면 된다.

8. 배포 매니페스트 파일명으로 어플리케이션 이름을 입력하고 저장한다. 배포 메니페스트 파일의 저장 위치는 “1_0_0_0” 폴더의 상위에 저장하도록 하는 것이 좋다. 이렇게 하면 나중에 업데이트 버전을 게시해야 하는 경우 배포 매니페스트를 업데이트 버전의 하위 폴더에 있는 어플리케이션 매니페스트를 참조하도록만 편집하면 된다.

매니페스트 파일을 생성해서 사용자에게 배포할 폴더 구성을 완성했다. 다음은 게시할 최초 버전 폴더를 생성한 최종 모습이다.

1027833587

그림 게시 구성 폴더 최종 모습

MAGE 작업 후

1. 버전 폴더 1_0_0_0과 배포 매니페스트 파일(.application)을 웹 서버, 파일 공유 또는 CD로 복사하면 된다.

2. 그러고 나서 사용자에게는 배포 매니페스트 파일(.application)에 접근할 수 있는 URL, UNC 경로 또는 CD를 제공하면 된다.

3. 사용자는 제공된 배포 매니페스트 파일을 호출한다. 웹 서버로 노출되는 페이지에 대한 링크를 클릭하거나 CD로 웹 서버로 노출되는 경우는 배포 매니스트파일의 링크를 클릭하면되고, CD로 배포하면 윈도우 탐색기에서 해당 파일을 더해서 ClickOnce로 배포되는 로컬 머신에 설치한다.

MAGE 업데이트

이제 MAGE를 이용해서 업데이트를 하는 절차에 대해서 생각해 보겠다.

1. 변경된 파일을 준비하고 확장자 “.deploy”를 덧붙인다.

2. 새로운 버전의 디렉토리 1_0_0_1을 생성한다.

3. 이전 버전 폴더 1_0_0_0에 있던 파일들을 새로운 버전의 폴더로 복사한다.

4. “.deploy”를 붙인 변경된 파일을 새로운 버전 폴더로 복사한다. 만약 기존에 해당 파일이 존재하면 덮어쓰도록 한다.

5. 이제 MAGE 툴을 시작하고, 1_0_0_1 폴더에 있는 기존의 1_0_0_0 버전의 어플리케이션 매니페스트 파일(.exe.manifest)을 불러온다.

6. Name 탭의 버전을 새로운 값 1.0.0.1로 변경한다.

7. Files 탭의 “Populate” 버튼을 클릭해서 새로운 버전의 파일들을 불러온다.

8. 변경된 어플리케이션 매니페스트 파일의 내용을 새로운 버전 폴더에 저장한다. 이때 서명을 다시 요구하는 창이 뜨면 앞에서와 같은 방법으로 서명 작업을 하며 된다.

9. 이제 배포 매니페스트(.application)을 다시 업데이트한다. MAGE 툴에서 기존의 배포 매니페스트 파일을 불러온다.

10. Name 탭 페이지에서 버전을 1.0.0.1로 변경한다.

11. Application Reference 탭의 Select Manifest 버튼을 선택해서 새로 업데이트한 어플리케이션 매니페스트 파일(.exe.manifest)을 선택한다.

12. 서명을 다시 하고 저장 하면 된다.

13. 마지막으로 새로 만들어진 버전 폴더와 배포 매니페스트 파일을 배포 서버로 복사한다.

이제 사용자가 클라이언트에서 어플리케이션을 실행하면 서버측의 새로운 버전의 배포 매니페스트 파일을 확인하고 업데이트를 수행한다.

MAGE 작업 정리

이제 MAGE를 사용해서 게시를 하는 프로세스를 정리하고 MAGE를 사용하는 방법에 대해서는 마무리짓겠다.

1155783192

[그림] MAGE 작업 정리

빌드된 어플리케이션 파일들을 준비한 후 게시자는 MAGE 툴을 사용해서 매니페스트 구성 작업을 버전별로 수행한다. 최종 완성된 버전 폴더와 배포 매니페스트를 배포 서버 또는 CD로 복사하면 된다.