Izpack 사용법
Izpack은 사용자들이 사용하기에 편리한 GUI(Graphical User Interface)를 만들어주는 도구이다. Java 프로그래밍 언어를 기반으로 작성되었기 때문에 JRE(Java Runtime Environment)가 구성되어 있는 컴퓨터라면 Windows, Linux, Mac과 같은 플랫폼에 상관없이 인스톨러를 사용할 수 있다. 또한 Izpack은 오픈소스 라이선스를 가지고 있어 무료로 사용가능하고 오픈소스 라이선스에 대한 약간의 이해만 있다면 큰 제약 없이 배포가 가능하다.
이번 포스트에서는 Izpack을 이용하여 GUI인스톨러를 만들어 보도록 하겠다. Izpack을 구동한 환경은 Centos7 이다.
1. Izpack 설치
Izpack은 JRE(Java Runtime Environment)에서 작동하기 때문에 JRE를 설치해야 한다. 버전은 1.7버전에서 정상적으로 작동되는 것을 확인하였다. JRE는 www.oracle.com에서 다운로드 받거나 OS별로 제공하는 저장소에서 설치하는데, Centos7 환경에서 다음의 명령어를 통해서 간편하게 설치할 수 있다.
sudo yum install java-1.7.0-openjdk
JRE가 구성이 되었다면 다음의 링크(http://izpack.org/downloads/)에서 Izpack을 다운 받는다. stable버전인 IzPack 4.3.5를 다운받아 설치하도록 하겠다.
Izpack설치는 Izpack으로 만들어진 인스톨러를 통해 진행된다. 다음의 명령을 입력하면 인스톨러가 실행된다. 인스톨러가 실행되면 안내에 따라 설치를 진행하면 된다.
java -jar IzPack-install-4.3.5.jar
Izpack은 pack이라는 단위로 설치할 범위를 지정한다. 각 pack은 미리 선택되게 할 수 있고 트리 구조로 의존성을 부여할 수도 있다. 또한 설명을 달아 pack을 클릭했을 때 설명이 나타나게 할 수도 있다.
2. Izpack 사용하여 인스톨러 생성
2.1 Izpack 컴파일
Izpack으로 인스톨러를 만들기 위해서는 xml 형식의 설치 스크립트가 필요하다. 우선 IzPack 4.3.5 버전에서 제공하는 예제로 인스톨러를 만들어 보도록 하자. 예제 스크립트는 /path/to/IzPack/sample/simple/install.xml에 있다.
해당경로를 이동한 후 다음의 명령을 입력하면 예제 스크립트를 컴파일 할 수 있다.
cd /path/to/IzPack/sample/simple/
../../bin/compile install.xml -b ./ -o test_installer.jar -k standard
위의 명령을 이용하면 install.xml이라는 스크립트를 참고하여 ./ 경로에 있는 리소스와 함께 test_installer.jar라는 이름의 인스톨러를 컴파일한다. 이 인스톨러 파일을 배포하면 사용자는 이것을 java -jar test_installer.jar 명령으로 실행시켜 소프트웨어를 설치할 수 있다.
2.2 Izpack example을 이용하여 인스톨러 만들기
이제 우리의 입맛에 맞게 수정해보자
install.xml 파일의 내용을 수정하여 인스톨러의 내용을 바꾸는데 각각은 xml tag들로 구성되어 있다. 최상위 태그로 <installation> 태그가 있고 그 하위에 주요 태그들이 있다. 설정해야할 것이 많지만 예제의 내용들을 사용하고 <info>태그와 <packs> 태그만 바꿔 커스터마이징 해보자
2.2.1 <info> 태그
<info> 태그는 인스톨러의 간략한 정보를 보여주는 창(그림2.)의 내용을 수정할 수 있다. 예제의 내용을 다음과 같이 수정해보자
<info>
<appname>My First Installer</appname>
<appversion>V1.0.0</appversion>
<authors>
<author name="myname" email="my@email.com"/>
</authors>
<url>http://www.myhomepage/</url>
</info>
2.2.2 <resources> 태그
<resources> 태그는 인스톨러가 사용하는 리소스를 정하는 곳인데 인스톨러의 상세한 설명이나 라이선스를 보여줄 문서를 등록할 수 있고 인스톨러에서 보일 이미지나 사용자로부터 입력을 받을 수 있는 userInputSpec.xml 등을 등록할 수 있다.
<resources> 태그의 형태는 다음과 같다.
<resources>
<res id="LicencePanel.licence" src="Licence.txt"/>
<res id="InfoPanel.info" src="Readme.txt"/>
</resources>
예제에서는 Licence.txt와 Readme.txt를 사용하고 있다 이 파일의 내용을 수정해 보자.
echo "간편하고 강력한 GUI인스톨러 툴 Izpack" > Readme.txt
echo "이 예제는 무단으로 도용될 수 없습니다" > Licence.txt
2.2.3 <packs> 태그
앞서 말한바와 같이 Izpack은 pack이라는 단위를 이용하여 파일들을 묶는다. 최상위에는 <packs>태그가 있고 그 아래에 실제 하나의 pack이 되는 <pack>태그와 속성을 지정해 줄 하위 태그들로 구성되어 있다.
pack에 들어갈 파일은 <file>태그나 <fileset>태그를 이용하여 담는데 <file>태그의 경우 src=/path/to/file의 형태로, <fileset>태그의 경우 dir=/path/to/directory의 형태로 속성을 정의하여 사용하면 된다.
마지막으로 <packs> 태그를 수정하여 우리가 배포하기 원하는 파일을 인스톨러에 담아보자. pack에는 다양한 속성이 있지만 간단하게 파일을 추가하는 것만 보이도록 하겠다.
먼저 인스톨러에 담을 파일들을 준비해 보자.
mkdir my_pack
echo "this is my pack" > my_pack/a.txt
echo "bitnine" > my_pack/b.txt
install.xml의 <packs>태그에 다음 내용들을 추가한다
<packs>
<pack name="Base" required="yes">
<description>The base files</description>
<file src="Readme.txt" targetdir="$INSTALL_PATH"/>
<file src="Licence.txt" targetdir="$INSTALL_PATH"/>
<file src="script.bat" targetdir="$INSTALL_PATH"/>
<parsable targetfile="$INSTALL_PATH/script.bat"/>
<!-- The file will be parsed -->
</pack>
<pack name="Docs" required="no">
<description>The documentation</description>
<file src="doc" targetdir="$INSTALL_PATH"/>
<!-- Reccursive adding -->
</pack>
<pack name="Sources" required="no">
<description>The sources</description>
<file src="src" targetdir="$INSTALL_PATH"/>
</pack>
<pack name="My pack" required="yes">
<description>This is my pack</description>
<fileset dir="my_pack" targetdir="$INSTALL_PATH"/>
</pack>
</packs>
이 포스트에는 많은 내용을 담을수 없었지만 Izpack은 인스톨러를 실행할 때에 .sh나 .bat파일이 실행하는 기능, 사용자로부터 입력을 받아 특정 파일에 파싱하는 기능, 인스톨러에 보여지는 모든 문구를 수정하는 기능 등의 다양한 기능을 제공하고 있다. 자세한 내용은 Izpack wiki(https://izpack.atlassian.net/wiki/display/IZPACK/IzPack+Home)문서를 참고하기 바란다.
Posted by Bitnine(비트나인)
'ARCHIVES' 카테고리의 다른 글
아젠스 솔루션(Agens Solution)의 구성 (0) | 2015.09.23 |
---|---|
그래프 데이터(Graph Data)란? (0) | 2015.09.23 |
유용한 Nodejs용 프레임워크 (0) | 2015.09.22 |
Proxy (0) | 2015.09.22 |
pg_statsinfo 소개 (0) | 2015.09.22 |