저작권에 대한 공지
이 문서에 포함된 모든 글과 소스 코드는 작자인 저 김성동의 지적 재산이지만 무단으로 배포하거나 책이나 강의 교재등을 위한 복제 등 저작권을 저해하는 행위를 제외하고는 자유롭게 사용할 수 있습니다.
또한 이 페이지에 대한 링크는 자유롭게 할 수 있으나 전문을 전제하는 일은 허용하지 않습니다.


2.6. 패키지

이번 절에서는 앞에서 간단하게 살펴 본 패키지에 대해 좀 더 자세하게 알아보자. 패키지는 델파이로 만든 어플리케이션이나 IDE 또는 양쪽 모두에서 사용될 수 있다. 실행 시간 패키지는 델파이로 만든 어플리케이션들이 공통으로 사용하는 코드를 하나의 파일로 공유할 수 있게 해주기 때문에 실행 파일의 크기를 줄여주고 어플리케이션의 배포와 업그레이드를 편리하게 해 준다. 설계 시간 패키지는 콤포넌트를 IDE에 설치해 주고 프로퍼티 에디터나 콤포넌트 에디터 등 어플리케이션 개발자에게 유용한 부가적인 도구를 제공해 줄 수 있다. 또한 직접 만든 콤포넌트든 상용 제품을 구매한 것이든 사용자 콤포넌트를 손쉽게 배포하고 설치하는 수단을 제공한다. 하나의 패키지가 설계 시간 패키지와 실행 시간 패키지의 특성을 동시에 가질 수 있으며 대부분의 설계 시간 패키지는 실행 시간 패키지를 호출한다.
델파이는 기본적으로 컴파일되어 있는 많은 실행 시간 패키지(VCL50.BPL, VCLX50.BPL, VCLDB50.BPL 등)를 제공하며 또한 이들 콤포넌트들에 대한 설계 시간 패키지(DCLXXX50.BPL 등)도 제공한다.
패키지도 일반 어플리케이션과 유사하게 별도의 패키지 프로젝트를 만들어서 생성하는데 아래 표는 패키지 프로젝트가 사용하는 파일 확장자를 보여 준다.

표 2-6 패키지에서 사용하는 파일의 확장자
확장자설명
.DPK패키지 프로젝트 파일로서 패키지에 포함된 유닛, 폼, 리소스등의 리스트를 가지고 있다.
.BPL컴파일된 패키지 파일로서 이 파일을 배포한다.
.DCP패키지 헤더와 패키지에 포함된 모든 DCU 파일사이의 연관 관계 그리고 컴파일러가 요구하는 심볼 정보들이 들어 있는 바이너리 이미지 파일이다. 실행 시간 패키지를 이용해서 어플리케이션을 컴파일하려면 반드시 이 파일이 있어야 한다.
.DCU각 유닛의 컴파일된 바이너리 이미지 파일


2.6.1. 새 패키지 만들기
새 패키지를 만들기 위해서는 먼저 패키지를 설계 시간 패키지로 만들지 실행 시간 패키지로 만들지 아니면 설계 시간/실행 시간 공통 패키지로 만들지를 결정해야 한다. 실행 시간 패키지를 만들때는 설계와 관련된 코드 즉 프로퍼티 에디터나 콤포넌트 에디터등은 포함하면 안된다. 다음 새로운 패키지에 대한 이름을 정해야 한다. 하찮은 일 같지만 이름을 잘 짓는 것도 아주 중요하다. 패키지를 만드는 사람이 자신외에도 전세계에 수많은 개발자가 있다는 것을 생각하면 쉽게 이해할 것이다. 볼랜드는 관습적으로 패키지 이름을 지을 때 실행 시간 패키지의 경우에는 VCL 이라는 세 글자를 앞에 쓰고 마지막에 버전번호 두자리를 붙여서 사용하고 설계 시간 패키지는 VCL 대신에 DCL이라는 세글자를 앞에 붙여서 사용한다. 예를 들자면 VCLDB50.BPL, DCLSTD50.BPL 처럼 작성한다.
새로운 패키지를 만들려면 델파이의 File|New 메뉴를 선택하면 아래 그림처럼 New Items 대화 상자가 나타나는데 여기서 Package 항목을 선택하고 OK 버튼을 누른다.

그림 2-15 새 패키지


새 패키지를 만들면 아래 그림처럼 패키지 에디터가 나타나는데 메뉴나 키보드를(Ctrl+S) 이용해서 적당한 이름으로 저장한다. 패키지 에디터는 두개의 트리뷰 노드를 가지고있는데 Contains 노드는 패키지에 포함될 콤포넌트 리스트를 나타낸다. 좀 더 자세하게 말하면 콤포넌트가 선언된 유닛 파일과 콤포넌트가 사용하는 리소스 파일, 그리고 프로퍼티 에디터나 콤포넌트 에디터가 선언된 유닛 파일등에 대한 리스트를 가지고 있게 된다. Requires 노드는 이 패키지가 정상적으로 동작하려면 필요로 하는 다른 패키지에 대한 리스트를 나타낸다. 대부분의 패키지는 VCL50 패키지를 기본적으로 포함하며 DB를 사용한다면 VCLDB50 패키지도 포함될 것이다. Requires 노드는 Contains 노드에 콤포넌트를 추가할 때 자동으로 필요한 패키지를 찾아서 추가해 주므로 크게 신경 쓸 필요는 없다.
패키지에 포함될 콤포넌트를 모두 추가하고 난 다음 Options 버튼을 눌러서 패키지에 대한 여러가지 옵션을 설정한다. 패키지에 대한 간단한 설명을 입력하고 패키지를 설계 시간 패키지로 만들지 실행 시간 패키지로 만들지 아니면 설계 시간/실행 시간 공통 패키지로 만들지를 설정해 주고 기타 컴파일러 옵션이나 버전 정보들을 필요에 따라 입력해 준다.


그림 2-16 패키지 프로젝트 에디터




그림 2-17 패키지 프로젝트 옵션


다음 Compile 버튼을 눌러서 패키지를 컴파일하고 설계 시간 패키지라면 Install 버튼을 눌러서 패키지를 IDE에 설치한다.
2.6.2. 패키지 배포 및 패키지 콜렉션
어플리케이션 사용자에게 프로그램을 배포 한다면 BPL 파일 만으로 충분하지만 패키지를 다른 델파이 개발자에게 배포하려면 BPL 파일이외에 DCP 파일도 같이 배포해야 한다. 패키지를 배포할 때 델파이에 포함된 InstallSheild Express나 다른 설치 프로그램을 이용해서 배포판을 만들 수도 있지만 델파이는 좀 더 쉽게 패키지를 배포할 수 있도록 패키지 콜렉션 에디터라는 도구를 만들어 놓았다. 패키지 콜렉션 은 하나 또는 그 이상의 패키지와 배포하고자하는 다른 여러 파일들을 포함할 수 있으며 각 패키지가 어디에 어떻게 설치되는지를 설정할 수 있다. 패키지 콜렉션은 DPC 파일 확장자를 가지는 파일에 압축된 형태로 저장된다. 델파이의 Component|Install Packages 메뉴를 선택해서 패키지 콜렉션 파일을 선택하면 델파이는 패키지와 관련된 파일을 추출하고 설치하는 것을 자동으로 해 준다.
패키지 콜렉션을 만들기 위해서는 별도 프로그램으로 제공되는 패키지 콜렉션 에디터를 사용하는데 Tools 메뉴에서 Package Collection Editor 를 선택하거나 BIN 디렉토리에서 PCE.EXE를 실행시키면 된다.
패키지 콜렉션 에디터가 아래 그림과 같이 동작되면 배포할 패키지의 제작자나 회사 이름을 입력하고 필요하다면 배포할 패키지의 디렉토리 구성을 작성한다.

그림 2-18 패키지 콜렉션 에디터


보통 실행 시간 패키지는 윈도 시스템 디렉토리에 설치하고 설계 시간 패키지는 위의 예와 같이 별도 디렉토리를 만든 다음 그 디렉토리 밑에 Bin 디렉토리를 만들어서 설치하며 패키지를 구성하는 DCU 파일과 DCP 파일은 Lib 디렉토리에 도움말 파일은 Help 디렉토리에 콤포넌트 소스 파일은 Source 디렉토리에 설치하도록 디렉토리를 구성한다.
다음 Edit|Add Packages 메뉴를 선택해서 배포할 패키지를 추가해 준다. 패키지가 추가되면 패키지 콜렉션 에디터는 패키지가 사용하는 실행 시간 패키지와 라이브러리 파일들을 자동으로 추가해 준다. 실행 시간 패키지가 설치될 디렉토리, 설계 시간 패키지가 설치될 디렉토리와 DCP 파일이 설치될 디렉토리를 아래 그림과 같이 설정한다.

그림 2-19 DPB.BPL 패키지가 추가된 패키지 콜렉션 에디터


이 상태에서는 패키지 파일과 DCP 파일만이 설치된다. 도움말이나 DCU 파일 또는 소스 파일도 같이 배포하기 위해서 Edit|Add File Group 메뉴를 선택하면 그룹 아이템이 추가되고 아래 그림과 같이 그룹에 속하는 파일 리스트를 추가할 수 있도록 해주며 또한 이 파일들이 설치될 디렉토리를 설정할 수 있는 화면이 나타난다. 여기서 Auto 버튼을 누르면 패키지 프로젝트 파일을 분석해서 필요한 파일을 자동으로 추가해 준다.
모든 파일을 추가했으면 이제 Edit|Compile Collection 메뉴를 선택해서 컴파일을 하면 된다. 컴파일이 성공하면 DPC 파일 확장자를 가지는 하나의 파일이 만들어 진다. 이 파일이 패키지 콜렉션이고 이 파일만 배포하면 된다.
패키지 콜렉션 파일을 설치하려면 델파이에서 Component|Install Packages 를 선택하고 설치할 패키지 콜렉션 파일을 선택하면 아래 그림과 같이 패키지 콜렉션 설치 화면이 나타나고 Finish 버튼이 눌려지면 자동으로 필요한 파일과 패키지 파일을 패키지 콜렉션 파일에서 추출해 지정한 디렉토리에 복사하고 IDE에 설치 한다.

그림 2-20 파일 그룹이 추가된 화면




그림 2-21 패키지 콜렉션 설치 화면


2.7. 요약

지금까지 몇가지 콤포넌트를 실제로 개발해 보았다. 많은 콤포넌트는 아니지만 어떤 식으로 콤포넌트가 개발되는 지는 알 수 있을 것이다. 처음 콤포넌트를 개발하는 사람들은 보통 어디서부터 시작해야 될지를 몰라 막막해 하는 경우가 많다. 이럴 때 도움이 되는 것이 바로 델파이와 함께 제공되는 VCL의 소스이다. 볼랜드의 개발자들이 심혈을 기울여 쳬계적으로 개발한 이들 콤포넌트들이 어떻게 구성되어 있고 어떤 식으로 개발했는지를 찬찬히 살펴 보면 다양한 기술과 테크닉들이 숨어 있는 것을 알 수 있다. 필자의 경우도 마찬가지지만 독자들도 콤포넌트를 개발할 때 뿐만 아니라 어플리케이션을 개발할 때도 자주 VCL 소스 파일들을 살펴 보기 바란다.
다음 장에서는 지금까지 개발한 콤포넌트를 좀 더 강력하고 프로페셔널하게 만드는데 필요한 프로퍼티 에디터와 콤포넌트 에디터에 대해서 알아 보겠다.


저작권에 대한 공지
이 문서에 포함된 모든 글과 소스 코드는 작자인 저 김성동의 지적 재산이지만 무단으로 배포하거나 책이나 강의 교재등을 위한 복제 등 저작권을 저해하는 행위를 제외하고는 자유롭게 사용할 수 있습니다.
또한 이 페이지에 대한 링크는 자유롭게 할 수 있으나 전문을 전제하는 일은 허용하지 않습니다.