꿈소년의 개발 이야기

프로그램 배포하기(Setup 프로그램 만들기) 본문

Software Engineering

프로그램 배포하기(Setup 프로그램 만들기)

꿈소년 2008. 2. 24. 20:11
반응형
Setup 프로그램을 제작하기 위해서 가장 많이 사용하는 Tool이 InstallShield이다. InstallShield는 Visual Studio Enterprise Edition 6.0에서 기본적으로 제공하는 Version이 있고 판매용 버전이 있다. Visual Studio에서 제공하는 버전에 약간의 기능 제한이 있는 것을 제외하면 사용법이 같으므로 Visual Studio 제공버젼으로 설명한다.

  프로그램을 배포할 때 대부분 Debug 정보들이 들어 있지 않는 Release 버전(프로그램 크기가 훨씬 작음)으로 컴파일하여 배포한다. 또한 프로그램이 1개의 실행 파일로 되어 있을 경우에는 컴파일 옵션에서 'Use MFC in a Static Library'를 선택하여 컴파일하고 그 실행 파일만 Setup 프로그램으로 만들면 되나(이 경우 그냥 실행 파일을 그냥 복사해서 쓰는 것이 더 낳을 것이다), 실행 파일이 여러개로 구성된 경우에는 각 실행 파일들을 모두 컴파일 옵션에서 'Use MFC in a Shared DLL'을 선택하여(기본값) 컴파일하고 그 실행 파일 및 필요한 MFC Dll을 포함하여 Setup 프로그램을 만들어 배포한다. MFC Dll을 포함하지 않고 배포하면 Visual Studio가 설치되지 않은 PC에서는 프로그램이 실행되지 않는다.

참고)필요한 MFC DLL

    기본적으로 들어가야 하는 DLL : MFC42.DLL, Msvcrt.dll

    콘솔 프로그램 중 MFC를 지원하는 프로그램으로 제작했을 경우 필요한 DLL : MSVCP60.DLL

    지금까지 프로그램하면서 배포시 필요한 DLL은 위의 3가지였다. 필요한 DLL이 없을 경우 에러 대화 상자에 DLL이름이 나오므로 Visual Studio가 설치되지 않은 컴퓨터에서 실행을 해본 후 Setup 프로그램을 제작하기 바란다. 3가지 DLL은 Visual Studio가 설치된 컴퓨터의 windows system 디젝토리에서 찾으면 되나 여기에서 Link시켜 두겠다.

    참고로 그럴 경우는 거의 없겠지만 Debug 버전을 배포할 경우 필요한 Dll은 Mfc42d.dll, Mfcd42d.dll, Mfcn42d.dll, Mfco42d.dll, Msvcrtd.dll, Msvcp60d.dll 등이 있다.


InstallShield 설치

앞에서도 말했듯이 InstallShield는 Visual Studio에 들어 있다. Visual Studio를 설치할 때 마지막 단계에서 재 부팅을 한다. 재 부팅을 한 후 자동으로 생성되는 대화 상자에서 InstallShield 버튼을 선택하여 설치하거나 Visual Studio CD의 첫 번째장 ISHIELD 디렉토리의 Setup.exe를 실행하면 설치가 된다.


InstallShield 사용법

InstallShield를 실행하면 다음과 같은 화면이 화면에 나타난다.

처음 실행하면 DialogDemo와 KADAC-21S 아이콘은 존재하지 않고 Project Wizard 아이콘만 존재한다. Project Wizard아이콘을 실행하거나 File메뉴의 부메뉴 New를 선택하여 생성된 대화 상자에서 Project Wizard를 선택하고 확인을 하면 다음과 같은 대화 상자가 생성된다.

    Application : 프로그램 이름을 입력한다

    Company Name : 회사 이름을 입력한다.

    Application : 적당한 Application 종류를 선택한다.

    Application Version : 프로그램 Version을 입력한다.


다음을 선택하면 다음과 같이 대화 상자가 바뀐다.

    이 대화 상자는 InstallShield에서 Setup 프로그램을 작성해서 설치할 때 나타나는 대화 상자의 종류를 설정합니다. 읽어 보면 대강 알 것이고 모르겠으면 User Information 체크 버튼만 체크를 해제하고 다음을 누르면 된다.

    User Information 체크 버튼은 사용자 정보와 함께 Serial 번호를 입력받는 대화 상자를 표시한다. Serial 번호인터페이스의 경우 조금 복잡하므로 생략한다.


설정을 한 후 다음을 선택하면 다음과 같이 대화 상자가 바뀐다.

    이 대화 상자는 프로그램이 지원하는 OS을 선택하는 부분이다. 원래 기능은 선택하지 않은 OS에서는 설치가 되지 않을 것 같은데 잘 안되고 그냥 표시만 하는 것 같다.


설정을 한 후 다음을 선택하면 다음과 같이 대화 상자가 바뀐다.

    지원 언어를 선택하는 부분이다. English로 설정해도 한글을 지원하므로 그대로 다음을 선택하면 된다.


설정을 한 후 다음을 선택하면 다음과 같이 대화 상자가 바뀐다.

    Setup Type을 설정하는 부분이다. 선택한 Type에 따라 다른 파일이 Setup되게 구성할 수 있다.


설정을 한 후 다음을 선택하면 다음과 같이 대화 상자가 바뀐다.

    Component 명칭 및 갯수를 설정하는 부분이다. Component는 InstallShield에서 파일 관리를 편하게 하기 위해서 파일들을 Group으로 설정하고 그 그룹들을 다시 Component로 설정하고 Component별로 파일을 다루도록 되어있다. 즉 Component는 File Group의 Group이다. Visual Studio에서 제공하는 InstallShield는 이 Component 갯수가 5개 이하로 제한되어 있다.


설정을 한 후 다음을 선택하면 다음과 같이 대화 상자가 바뀐다.

    File Group명칭 및 갯수를 설정하는 부분이다.


설정을 한 후 다음을 선택하면 다음과 같이 대화 상자가 바뀐다.

    지금까지 설정한 내용을 화면에 표시하는 대화 상자이다.


마침을 선택하면 Step #1의 Application부분에 설정한 프로그램 이름 대로 Setup 프로젝트가 생성되고 InstallShield 화면은 다음과 같이 된다.


지금까지 설정한 내용이 Setup.rul에 스크립트로 저장되어 있다. 스크립트는 대강 읽어 보면 어떤 내용이구나 하고 알 수 있을 것이나 몰라도 된다. 남은 작업을 정리해 보면 다음과 같다.

1. File들을 그룹별로 File Group에 설정한다.

2. 그룹들을 기능 별로 Component에 설정하고 설치될 디렉토리등을 설정한다. 설치될 디렉토리는 Component별로 설정하게 되어있다.

3. Setup Type에 따라 설치될 Component를 설정한다.

4. 시작 메뉴 및 바탕 화면에 추가될 Icon을 설정한다(옵션).

5. 레지스트리 등록이 필요한 경우 등록해 준다(설명하지 않음).

6. 컴파일을 수행한다.

7. Setup 파일을 생성한다.


  먼저 File Groups Tab Icon()을 선택한 후 각 File Group의 하위 Tree Links를 선택하면 화면이 다음과 같이 변한다.

    Insert 메뉴의 부메뉴 Links into File Groups을 선택하여 나타난 파일 선택 대화 상자에서 파일들을 선택하면 파일들이 추가된다. 또한 탐색기를 띄워 파일들을 선택한 후 InstallShield로 Drag&Drop하면 파일들이 추가된다. 디렉토리 전체를 추가할 경우 이 두 번째 기능을 사용하는 것이 가장 쉽다.


  Components Tab Icon()을 선택하면 화면이 다음과 같이 변한다.

    Destination을 더블 클릭하면 Component에 들어 있는 파일들이 복사될 위치를 설정할 수 있으나 그대로 사용하는 것이 좋다. HDD의 용량이 작을 때 윈도우의 정책은 HDD를 절약 위하여 여러 프로그램에서 사용하는 dll파일은 windows system 디렉토리에 넣어 공용으로 사용하도록 권장했으나 현재는 버전 충돌 등 여러 가지 때문에 이방식을 권장하지 않는 것으로 알고 있다.

    Include File Groups을 더블클릭 하면 다음과 같은 대화 상자가 생성된다.

    Add를 선택하여 나타난 File Group 선택 대화 상자에서 File Group을 추가한다. 여러번 Add를 실행하여 여러개의 File Group을 한 Component에 설정할 수 있다.

    InstallShield는 설치하고자 하는 파일들을 File Group로 만들고 그 File Group을 Component로 연결하여 Component에 설치할 디렉토리 정보 등을 설정함에 의해 Component에 의해 설치하도록 구성한다. 여기에서 File Group과 Component를 연결하는 설정을 한다.


  Setup Types Tab Icon()을 선택하면 화면이 다음과 같이 변한다.

    각 Setup Type마다 설치할 Component를 설정한다.


    Programs(시작 메뉴에 등록) 또는 Desktop(바탕화면에 등록)를 선택하고 마우스 오른쪽 버튼을 눌러 생기는 팝업 메뉴에서 New의 부메뉴 Folder을 선택하면 폴더가 생성되어 이름을 수정하도록 한다. 다시 그 폴더에 파일 Icon을 넣으려면 팝업 메뉴 New의 부메뉴 ShortCut을 선택하면 파일 Icon이 성성되어 이름을 수정하도록한다. 다음 그림은 Programs에서 폴더 Test를 추가하고 다시 그 폴더에서 TestIcon을 추가한 후의 모양이다.

    Target을 마우스로 더블클릭하면 다음과 같은 대화 상자가 생성된다.

    Target에  <TARGETDIR>\실행파일명.exe 라고 입력한후 확인을 선택한다.

    이런 방식으로 추가하고자 하는 모든 파일 Icon을 설정할 수 있다.


Build 메뉴의 부메뉴 Build(Ctrl+F7)를 선택하면 컴파일이 수행된다.


Build 메뉴의 부메뉴 Media Build Wizard를 선택하여 생성된 대화 상자에서 순차적으로 철차를 따라가면 Setup 파일을 생성할 수 있다.


Setup파일은 C:\My Installations\프로젝트명\Media\Default\DiskImages\Disk1 디렉토리에 생성된다.


참고로 C:\My Installations\프로젝트명\Setup Files\Uncompressed Files\Language Independent\OS Independent\Setup.bmp를 그래픽 편집기에서 수정하여 Setup파일 작성을 새로하면 초기 로고 화면이 바뀐다.