[기술 컬럼] Windows installer XML Toolset - 첫 번째 이야기

이번 칼럼에서 소개 해 드릴 내용은 WIX(Windows installer XML Toolset)입니다.

WIX란 마이크로소프트가 2004년 (딱 지금으로부터 10년 전)에 오픈소스 프로젝트로 유명한 소스포지를 통해 무료로 발표한 오픈소스 라이선스입니다.

이번 기술 칼럼에서는 어려운 내용은 배제하고 두 가지 Part 로 나누어 보려고 합니다.

  - Part 1에서는 WIX란 무엇인지 WIX에 대한 개관과 장점을 살펴보고, 
  - Part 2에서는 간단한 샘플 프로그램을 작성해 봄으로 WIX의 세계에 진입해 보도록 하겠습니다.


Part 1
마이크로소프트의 오픈라이선스??

사견으로 구글 이야기 한번 해보겠습니다.
요즘의 핫한 이슈중의 하나라면 구글이 모바일 플랫폼의 정점에 서 있다는 것이죠. 
안드로이드가 발전해 가면서 구글의 기존의 수익모델인 광고에는 변함이 없지만 오픈된 무료 프로그램을 통해 발전해온 기존의 패러다임을 변경한 것에는 틀림없습니다.

반면, 마이크로소프트는 늘 라이선스를 통해 수익모델을 창조하던 기업입니다.  
그러한 마이크로소프트가 적어도 오피스 혹은 윈도우를 배포하기 위해 내부적으로 WIX를 사용했다는 점과 최초로 오픈소스 라이선스로 WIX를 발표한 것은 패키지 회사들에게는 다행이 아닌가 개인적인 생각이 듭니다.  


What is WIX?
그렇다면 Windows Installer XML Toolset은 무엇일까요?

사용자들이 어떤 프로그램을 사용하기 위해서는 소위 “프로그램을 깐다” 라는 말을 쓰곤 하는데 어떤 exe 형태나 msi 형태의 파일을 이용하여 윈도우에 프로그램을 설치합니다.

실제로 윈도우에 설치가 되면 
여러분이 잘 알다시피 프로그램 추가/삭제에 설치한 프로그램이 등록됩니다. 
실제 이 작업은 윈도우 설치 서비스가 담당을 하고 있습니다. 윈도우 설치 서비스를 통해 프로그램을 설치하게 되면 프로그램 추가/삭제에서 설치 과정 중에 문제가 발생할 경우 시스템을 손상시키지 않고 자동으로 원상복구하는 기능을 제공해준다는 장점이 있습니다. 
실제 이 윈도우 서비스를 사용하기 위해서는 MSI라는 확장자를 가진 파일이 필요합니다. 
WIX는 xml파일을 이용하는 도구들을 사용하여 MSI라는 파일로 변경해주는 역할을 하는 것이지요.  
즉, xml을 이용하여 msi패키지를 만들어내는 개발 툴이라고 볼 수 있습니다.

현재 마이크로소프트에서는 마이크로소프트 오피스와 배포하는 패키지들을 
WIX를 이용하여 만들어 배포하고 있습니다.


왜 WIX인가?
실제로 설치 패키지 작성을 위한 도구는 WIX 만 있는 것은 아닙니다.

여러분이 혹시 아실지 모르지만 InstallShield(installshiedl.com)나 InstallAware(installaware.com) 와 같은 회사에서 인스톨 솔루션 툴을 제공하고 있습니다.


1-1 InstallShield



1-2 InstallAware

이들 도구들은 초보자 뿐 아니라 설치 서비스의 모든 기능을 사용하려는 유저들에게 여러가지 기능을 제공해주며 개발하는데 도움을 줍니다. 하지만 이 도구들에게 단점이 존재합니다.

1. 무료가 아닙니다.
  - 이들 툴을 사용하기 위해서 유료로 구매하여 사용해야합니다.
2. 빌드 프로세스에 적합하지 않습니다.
  - 변경된 파일 이름과 다양한 변경사항에 대해 
    어떤 새로운 것을 포함시키는 작업에 적합하지 않습니다.

그렇다면 반대로 WIX의 장점은 무엇일까요?
장점은  아래와 같습니다.
1. 무료로 사용할 수 있습니다.
2. 빌드 자동화 프로세스에 적합합니다.
3. 포맷이 XML이므로 소스컨트롤에 의한 버전관리가 용이합니다.
4. Visual Studio에 통합되어 프로젝트를 쉽게 생성할 수 있습니다.
위의 네 가지 장점만 보아도 사용해 볼 만한 가치는 있지 않나요?

WIX는 XML 파일을 사용하여 윈도우 설치 패키지의 구조를 정의할 수 있습니다. 
소스 컨트롤로 소스 파일을 관리 할 수 있는 기능들을 사용할 수 있고 명령 도구(commandline)를 사용하므로 빌드 자동화 프로세스에 적합하다고 할 수 있습니다.


여기서 XML이 무엇인지 모르시는 분들을 위해 간략히 설명 들어갑니다.

XML(eXtensible Markup Language) ?

W3C에서 제안하고 XML Working Group에 의해 개발된 구조화된 문서를 효율적으로 처리하도록 설계된 표준화된 데이터 형식으로 데이터를 Description하는 메타 데이터 언어라고 할 수 있습니다.

xml의 장점은 단순성, 개방성 ,확장성 그리고 사람과 기계가 모두 이해할 수 있는 구조이고 내용과 표현의 분리가 가능하여 사용자가 원하는 포맷으로 변환이 가능하다는 것입니다. 또한 유니코드를 지원하기에 여러 국가 언어를 지원할 수 있습니다.

빌드 프로세스에 적합하다는 것도 바로 이러한 유연한 xml 언어가 있기에 가능합니다.

WIX에서는 xml 스크립트를 컴파일하기 위한 candle.exe와 컴파일되어 생성된 파일을 
WIX linker로 .msi 파일 형태로 만드는 light.exe가 존재합니다.

초와 빛이네요. 초를 사용해 컴파일을 하고 빛을 이용하여 촛불을 만든다.
단어 선택을 잘 한 것 같습니다.


Candle Task에 대한 설명은 다음에서 자세히 확인하실 수 있습니다.
http://wixtoolset.org/documentation/manual/v3/msbuild/task_reference/candle.html
Light Task에 대한 설명은 아래에서 확인하실 수 있습니다.
http://wixtoolset.org/documentation/manual/v3/msbuild/task_reference/light.html

다시 한번 정리 하면 WIX는 윈도우 인스톨러 패키지를 만들수 있는 Toolset이며 XML 기반의 소스 레벨의 작업으로 해당 소스를 candle 과 light 를 이용하여 msi 형태의 설치 패키지를 만들 수 있는 도구들의 모음입니다.


이제 WIX에 대해 어느정도 감이 오시는지요?


Part 2 에서는 직접 WIX를 사용해 설치 패키지를 작성해보는 시간을 가지도록 하겠습니다.

PS : Windows Installer XML에 대해 더 많은 정보를 얻고 싶으신 분들은 
       http://wixtoolset.org/ 를 통해 자세한 정보를 얻으실 수 있습니다.































post by