2010년 2월 9일 화요일

인스톨 쉴드 강좌

InstallShield 인스톨쉴드 강좌 계획

 

개인적으로 Devpia 에서 인스톨 쉴드 섹션의 시삽을 맡고 있는데.

 

처음이어서 그런지 무턱대고 시작하시다가 좌충우돌 하는것을 많이 봅니다.

 

예전부터 강좌를 해야겠다 마음만 먹고 있었는데.

 

차근차근 시간나는대로 올려볼까 합니다.

 

일단은 계획부터 올려봅니다.  (내부적으로 저의 회사 직원들에게 교육도 해야 하는지라 교육자료겸  겸사겸사 올려보려고 합니다.)

 

1. 당부의 말씀 : 누가 셋업을 논하는가?

2. 설치프로그램의 구조 : 그것을 알려주마

3. 일단 만들어보자 : 위져드 사용법

4. 마법사가 할 수 없는일 : 스크립트 사용법

5. 기본지원으로 안되는것들 : 커스텀 다이얼로그

6. 예제로 따라하는 셋업만들기

7. 이제 모르는것은 스스로 찾아보자

 

 

 

본강좌의 저작권은 본인에게 있습니다.

질문사항이 혹시나 있으시면 데브피아 인스톨쉴드 섹션에 해주시기 바랍니다.

 

 

 

ps.  사용할 InstallShield 의 버전은 10.5 입니다. InstallScripte방식으로 진행할것이구요.

 DevStudio 9.0, X, 10.5, 11 버전 모두 크게 다르지 않습니다.

 

학습용이라면 어둠의 경로도 뭐..어쩔수 없다 치지만.

 

업무용이라면 꼭 구매합시다!!

자세한 컨설팅은 http://www.rexsoft.co.kr/ 에 문의 하시기 바랍니다.

 

 

ps. 그림 캡쳐 해 넣었는데 잘 안보이는군요. 해서 보시면 제대로 잘 보일껍니다.

 

 

1. 당부의 말씀 : 누가 셋업을 논하는가?

 

데브피아에서 인스톨쉴드 시삽을 맡고부터 올라오는 글들을 보면서 느낀점입니다.

 

전에도 한번 썻던것인데 다시 한번 알고 계셨으면 해서 올립니다. (이전글)

 

●셋업의 작성은 도데체 누가 해야 하는게 옳은가?

   - 고객의 입장에서 셋업 프로그램은 그 프로그램의 신뢰성을 갖게 하는 첫인상입니다.

      설치할때 에러가 나는 프로그램의 신뢰도는 얼마정도가 될까요?

  

  물론 여러 시스템에서 OS마다 기본적인 설치 테스트를 하실것입니다.

  그런데 개발자가 아닌분들이 셋업을 맡게 되는경우가 너무 나도 많습니다.

  (저역시 셋업만들고 테스트 하는거 귀찮습니다. ㅡ.ㅡ;;)

 

  그런데 테스트할때 개발자와 개발자가 아닌사람중 누가더 빨리 에러사항을 고쳐낼 수 있을까요?

  개발자가 아닌분들은 당연히 삽질로 허다한 밤을 샐 수 밖에 없는것이죠.

 

  제가 생각하는 셋업 개발의 적격자는 프로젝트 매니져 입니다.

 

 

●왜 프로젝트 매니져 급에서 셋업을 맡아야 하는가?

 

  - 보통 일반적으로 프로젝트 진행시 개발자는 각각 자기의 모듈만 책임을 지는 경향이 많습니다.

    그러다보니 각각의 모듈이 모여서 최종적인 설치본을 모두 알고 있는 사람은

    몇명 없습니다.

    

    셋업을 만들어서 실행하는데 dll이 하나 빠져 있다던지 이런경우가 허다합니다.

    왜냐면 개발과 관계가 없는 사람이 어떤 파일이 빠졌는지 알 방법이 없기 때문입니다.

    (이것은 버전관리와도 연관이 있습니다.)

 

    전체적인 프로젝트에 필요한 파일들에 대해서 잘 알고 있는 사람이 모듈관리, 버전관리를 해야한다생각합니다. (회사마다 정책상 조금 다를수도 있을것입니다.)

 

 

 

●프로그램을 몰라도 셋업을 만들수 있다???

 

 - 맞는말이기도 하지만 틀린말이기도 합니다.

    실행파일과 필요한 dll몇개만 복사하면 실행하는데 문제가 없는 프로그램의 경우

    인스톨쉴드를 실행시키고 마법사모드에서 몇번만 하면 셋업이 생성됩니다.

 

    그러나 규모가 큰 상업 프로젝트의 경우 레지스트리에대한 옵션, 시리얼체크, 커스트마이징된 설치본의 요구등등 여러가지 사항이 발생합니다.

 

    이런때 개발이 가능한 사람이 셋업을 맡게되면 좀더 효율적으로 셋업작성이 가능해집니다.

 

 

●그러나 현실은 그렇지 않다.

 

  - 네 그렇습니다. 현실은 그렇지 않습니다.

     인터넷에서 검색해서 이글을 찾으신분들은 아마도 처음 셋업을 만들라고 지시를 받은

     초보개발자 이신분들이 다수 일것입니다.

    

     아니면 기술지원팀이라던지.(보통 기술지원팀에서 맡는 경우가 많더라구요)

     아는게 하나도 없는데.

     한글로된 설명서는 하나도 없고.

 

     어디서 부터 어떻게 해야 하는걸까?????

 

●인스톨쉴드는 마법사기능이 있지만 마법사는 아니다.

 

   -처음 인스톨쉴드를 사용하시는분들이 쓰기 편하도록 위저드 기능이 있지만

    인스톨쉴드가 만능은 아닙니다.

 

   버튼 몇번 으로 설치본이 생성되기도 하지만 입맛에 맞는 설치본을 만들기위해선

   키보드를 두드려야 하는것이죠

 

    자..이제 인스톨쉴드를 쓰기위해서 꼭 기억하셔야 하는 전제 조건이 있습니다.

 

 

인스톨쉴드는 자동적으로 프로그램이 실행되기 위한 환경을 만들어주는 프로그램이다.

 

즉. 수작업으로 설정해야 할일을 자동적으로 배치 작업을 해주는 툴일 뿐이다.

 

 

꼭 기억하셔야 합니다.

 

셋업에 어떠한 기능을 추가하고자 할때는

 

수작업으로 가능한 일인지 일단 생각하셔야 합니다.

 

그리고 그것이 정리된 이후에 셋업 작업을 진행하시면됩니다.

(이게 무슨뜻인지는 나중에 알게 되실것입니다. ^^;)

 

자..이제 실제 셋업으로 넘어가보도록 하겠습니다

 

 

본 강좌에 대한 저작권은 본인에게 있습니다.

 

 

2. 설치프로그램의 구조 : 그것을 알려주마

 

자..프로그램설치를 위해서 어디선가 MyProgramSetup.exe 혹은  Program.zip등을 다운받습니다.

 

exe파일일경우 실행이 진행되면 다음다음다음 을 누르면 프로그램 설치가 완료됩니다.

 

자주 마주치게 되는 실행파일 setup.exe

 

 

도데체 어떤 작업이 시스템상에서 진행되는것일까요?

 

한번 알아보겠습니다.

 

 

1. 파일의 설치

 

   셋업안에 포함될 실제 실행 프로그램들을 사용자가 지정하는 혹은

   셋업안에서 지정된 특정 폴더에 파일을 복사합니다.

 

   보통은 C:\Program Files 에 설치된다는걸 다들 아실것입니다.

 

2.제어판 - 프로그램 추가/삭제

 

   설치된 프로그램은 삭제가 되어야 합니다.

   이러한 정보를 특정 위치에 기록합니다.

 

   제어판에서 보이는 목록들은 레지스트리에 저장되어 있습니다.

   시작->실행->regedit

 

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

 

  여기의 하위 키들이 설치된 프로그램의 리스트 입니다.

  이상한 숫자와영문조합된 키,

  흔히보던 프로그램의 이름 등으로 이루어져 있습니다.

 

  많이 쓰시는 MSN의 키를 한번 볼까요?

  {ABEB838C-A1A7-4C5D-B7E1-8B4314600137} 라는 키를 찾으시면 아래와 같은  내용들이 보일것입니다.

 

 

  여러가지 내용이 많지만 꼭 알아두셔야 할것은 두가지뿐입니다.

  DisplayName   : 추가/삭제 제어판에서 보이는 이름입니다.

  UninstallString : 실제 프로그램이 삭제될때 실행될 파일의 경로입니다.

 

  그이외의 내용은 셋업을 만들수 있는 설치 프로그램의 종류 에 따라 다릅니다.

 

 

3. 삭제시 필요한 프로그램의 저장

   인스톨쉴드의 삭제시 필요한 프로그램의 위치는

   C:\Program Files\InstallShield Installation Information

   하부에 설치된 폴더안에 프로그램 별로 각각 존재합니다.

   어떤프로그램이 어디에 있는 파일을 실행시켜서 삭제가 되는지는 위에서 본

   UninstallString에서 알 수 있습니다.

 

4. 프로그램이 실행되기 위한 환경설정

 

  ocx나 COM DLL의경우 regsvr32.exe로 시스템에 등록되어야 사용가능합니다.

 

  VB로 작성된 프로그램의 실행을 위해서 필요한 Runtime 모듈설치가 선행되어야 하고

 

  크리스탈 리포트를 위해선 필요한 파일들이 있어야 하지요

 

  MFC 런타임도 필요하구요

 

  이렇게 필요한 것들은 프로그램을 어떻게 만들었냐에 따라 다르겠죠

  이러한 환경설정을 해줘야 제작한 프로그램이 동작하게됩니다.

 

 

 

5. 인스톨쉴드가 사용하는 프로그램의 구분 방법

 

  PC에 프로그램이 설치되었는지의 여부의 판단을 어떻게 할까요?

  현재는 언인스톨 레지스트리의 키 값으로 판단을 합니다.

 

  이러한 키값이

  다른 설치 프로그램은 사용자가 입력한 이름으로 레지스트리키를 이용하거나

  기타 다른 방법을 이용합니다.  인스톨쉴드 프로패셔널 5.* 버전 과 몇몇 종류의

  설치본에서는  프로그램 이름으로 설치된 프로그램을 구분했습니다.

 

  그런데 내가 MyProgram 이란 설치본을 만들었는데

  어디선가 다른 사람이 MyProgram이라고 만들지 말란법이 없게됩니다.

 

  이러한 두가지 프로그램이 한 시스템에 설치될경우 당연히 문제가 발생합니다.

 

  그래서 인스톨쉴드 프로패셔널 6.* 버전부터는 GUID로 설치프로그램을 구분합니다.

 

6. MSI VS InstallShield

 

  MS에서 제공되는 MSI설치본과 인스톨쉴드에서 만들어지는 설치본이 하는일은 기본적으로

 동일하며 기능또한 거의 비슷합니다.

 

  어떤것이 더 좋다 나쁘다는 글쎄요...벤치마킹을 해본적이 없어서 잘 모르겠습니다.

  인스톨쉴드는 기능이 막각합니다.  그러나 솔직히 처음 마주하게되면 복잡하게 느껴집니다.

  단순히 파일복사만 하면 실행되는 프로그램이라면 더더욱이 꺼려집니다.

  이런때는 간편한 툴들을 사용하시면되겠습니다.

 

 

7. 그럼 어떤때 MSI를 이용하고 어떤때 InstallShield를 사용하는가?

 

   이것은 인스톨쉴드를 쓸것인가 NSIS를 쓸것인가와 같은 맥락으로 보여집니다.

  

   인스톨쉴드의 경우

 

   프로패셔널 6,7 버전의 경우 인스톨쉴드 설치본을 만들어내고

   디벨로퍼 7, 8   버전의 경우 MSI설치본을 생성합니다.

 

   최근 DevStudio 9, InstallShield X 버전의 경우 하나의 프로그램에서 모드 설정으로

   두가지 설치본을 모두 생성할 수 있습니다.

 

   자..이제 건의 드립니다. 처음 인스톨쉴드를 사용하십니까?

   그렇다면 InstallScripte 방식으로 설치본을 만드는것을 권장합니다.

 

   왜냐면 MSI방식은 조금 까다롭기 때문입니다. (오히려 쉽게 지원하는것도 있긴합니다.)

 

--VB에 크리스탈 리포트를 사용할경우 MSI로 만드는것이 정신건강상 좋습니다.

   해보니 그렇더라구요 ㅡ.ㅜ   뒤에서 예를 들겠습니다.

 

자..기본적인 이론은 간단하게 여기 까지합니다.

이제 실제 설치본을 만들어보도록 하겠습니다.

 

컴퓨터를 처음사게되면 메뉴얼에 제일 첫장에 나오는내용이 있죠.

컴퓨터 켜기, 끄기.

 

다음강좌에선 인스톨쉴드 시작하기, 위저드 사용하기 등을 알아보겠습니다.

 

 

본강좌의 저작권은 본인에게 있습니다.

질문사항이 혹시나 있으시면 데브피아 인스톨쉴드 섹션에 해주시기 바랍니다.

 

 

3. 일단 만들어보자 : 위져드 사용법 I

 

자..프로젝트가 어느정도 마무리되었고 버그를 잡기위해서 실제 테스트를 진행해야 하는데....

 

실행파일 복사하고 환경설정하고...아..문득 귀찮아짐을 느낀다..(네네..게으른 개발자들 많죠..)

 

어차피 제품출시되면 만들어야 하니 막내 시키자..

 

막내야~~ 이거 쉴드로 하나 뚝딱 만들어 보려무나~~

 

ㅡ.ㅡ;; 두둥~~~

 

 

막막하십니까? 자..인스톨쉴드의 위져드 모드를 사용해 봅시다.

 

...........................................................................................................................

 

1. 기초 준비 단계 : 인스톨쉴드 설치 - 가장최근버전인 X버전 사용

http://www.installshield.com 에서 시험판을 설치 하셔도 좋습니다.

 

2. 설치 모듈 준비 - exe파일, dll파일 등등..프로그램이 실행되기 위한

   Release Build 파일들을 한곳에 잘 모아서 "정리" 및 "분류"를 합니다.

   (정리 및 분류는 아래에서 다시 한번 설명하겠습니다.)

 

3. 셋업 설치 많이들 해보셨죠? 어떤 단계로 할것인지 간단히 생각해 두시기 바랍니다.

 

자..이제 위저드 모드로 가보겠습니다.

 

 

인스톨쉴드를 실행합니다.

 

 

새로운 프로젝트를 시작합니다.

 

 

 

InstallScript Project를 선택합니다.

 

여기서 잠깐!! 옆에 보시면 Visual Basic 6.0 Wizard라던가 기타 몇가지 기능들이 보입니다.

물론 이런 위져드를 이용하면 처음 하시는분들은 조금 편리하게 기초 작업을 하실 수 있습니다만...

 

모든 마법사 기능은 간편하지만 그만큼 세부 컨트롤하는데 어렵습니다.

가능하면 앞으로 이런기능들은 한번 어떤건가 해보시기만 하고 부득이한 경우가 아니면

사용하지 마시길 권장합니다. ^^;

 

어차피 실행파일 모듈을 받아서 셋업을 만드는 경우라면 더더욱이나 사용못하실거구요.

왜냐면 프로젝트 파일의 위치를 지정해야 하거든요

 

 

자..적절한 프로젝트 이름을 주십시요.

 

그리고 "OK"

 

이제 Project Assistant화면으로 넘어갑니다.

이전버전에서는 위저드 기능이였습니다. 현재는 크게 다르지 않습니다.

프로젝트의 빼대를 구성해주는 역활을 합니다. 어떻게 진행되는지 하단에 아이콘들이

배치되어 있고 오른쪽 하단에 화살표 버튼을 누르는것만으로도 셋업이 완성됩니다.

 

 

기본적인 프로젝트의 정보를 기입합니다.

회사이름, 프로젝트 이름, 그리고 Update Service를 이용할 계획이라면 Yes아니라면 No를 선택하십시요.  - 인스톨쉴드사에서 제공하는 Update Service입니다. 저도 해본적이 없어서..유용할지의 여부는 판단이 어렵습니다. 일단 No...

 

 

기본 구조를 생성합니다. 이전버전과 용어가 많이 달라졌는데요.

이전버전에서 components라고 부르던 부분입니다.

 

셋업을 할때 전체설치, 최소설치 등을 구분할때 여기에서 결정됩니다.

즉 DefaultFeature는 꼭 설치되는 것들을 말하며,

몇가지 부가적인 구분을 하는것입니다.

예를 들어서 DefaultFeature 와 HelpFile, Example, 이렇게 세개의 Feature를 두고

 

전체설치는 DefaultFeature, HelpFile, Example 설치

최소설치는 DefaultFeature ,HelpFile 설치

 

이렇게 다르게 설치되게 할 수 있는것이죠.

 

자..이제 실질적으로 설치될 파일들을 연결시킵니다. 중요한것은 Applicatin Target Folder입니다.

실행파일이 설치될 경로입니다. Add File혹은 Folder로 지정합니다.(차이점은 차후에 논하겠습니다.) 

 

같이 설치될 인스톨쉴드에서 지원하는 컴포넌트 들입니다. MFC로 작성된 프로그램이기 때문에 Runtime이 없는 PC에서도 실행되도록 MFC 4.2를 체크 합니다. - 프로그램에 따라 적절한것을 선택해주시면됩니다.

 

단축아이콘만들어야죠? exe파일은 자동으로 해줍니다. 이름을 바꿔주고요.

 

만약 고정적으로 레지스트리에 뭔가를 기록해야 한다면, 즉 기본적인 레지스트리 구성이 필요하다면 여기에서 추가합니다. 동적으로 레지스트리에 기록해야 한다면 스크립트를 사용해야 하구요.

보통은 필요 없겠죠?

 

자..첨부파일을 더 못넣네요..다음으로 포스트에서 나머지를 쓰겠습니다.
 
 
3. 일단 만들어보자 : 위져드 사용법 II
 

프로그램 설치많이 해보셨을텐데. 자..그럼 항상 나오는 창들이 있죠?

 

그런창들을 사용 여부를 결정합니다.

 

위에서부터 순서대로

 

-라이센스 동의 다이얼로그 : 이전에는 txt파일만 지원했는데 새버전에서는 rtf파일을 지원하는군요.

-사용자 정보 입력 다이얼로그: 회사이름 사용자이름등을 입력받습니다. 시리얼번호를 입력받을경우 이부분의 스크립트를 보통 수정합니다.

-설치경로 변경 다이얼로그  : 기본경로가 아닌 다른 경로에 설치하고자 할때 사용합니다.

-설치옵션 변경 : 전체설치, 최소화설치 이외에 사용자가 설치 목록을 선택하게 하는 옵션창입니다.

 

 

사용할 언어를 고릅니다. 이전버전에서는 랭귀지 팩을 따로 구입해서 실치했어야 했는데 X부터는 기본지원합니다. 붉은 밖스에서처럼 한글과 영문에서 서로 다른 문자열을 사용해야 할경우 스트링 리소스에서 관리 하면 편리하게 사용할 수 있습니다.

 

예) 숏컷, shortcut

 

빌드 옵션입니다.

-Single Executable : 실행시키면 압축이 풀리고 설치가 진행됩니다.

-보통 One-click이라 부르며 한번의 으로 웹페이지에서 다운로드 되어 설치 됩니다.

-일반적인 빌드 옵션입니다.

 

 
 
이제 기본적인 위져드를 이용한 설치본 제작 방법은 끝났습니다.
 
실행파일만 대상 폴더에 복사되면 프로그램 실행에 문제가 없는
설치본의 경우 이렇게 만들면 됩니다.
 
 
 
그런데..뭔가 허전하죠??? 이거이 이렇게 쉬운거시야??
 
네네..그렇습니다. 쉽습니다.
 
하지만 입맛에 맞게 수정하려면 이제 부터 시작인것입니다.
(모든 설치본의 기본 시작은 여기서 부터 진행합니다.
 
 
 
 
다음 단계로 진행하기 위해서 기본적으로 알아두셔야 할 사항입니다. (고로 중요합니다. ;-)
 
1.인스톨 쉴드 모드
 
앞에서 InstallScript탭에서 InstallScript Project를 선택해서 다음으로 진행했었는데.
옆의 다른 탭들에 대해서 궁금하실듯 합니다.
 
 
중요하게 눈여겨 봐두셔야 할것은 3가지 모드입니다.
 
Basic MSI, InstallScript MSI Project , InstallSrcipt Project
 
Basic MSI
: MS 의 SDK를 이용하기 쉽게 인터페이싱했습니다. 인스톨쉴드의 고유 기능인 스크립트를 사용할 수 없습니다. 프로그램 설치 완료시점에서 설치된 프로그램을 실행시켜야 할경우 Custom Action을 이용해야 합니다. 기타 옵션들을 사용함에 있어 MSDN과 쉴드에서 제공하는 Help를 참고해야 합니다.
 
InstallScript MSI Project
Basic MSI에서 스크립트를 사용할 수 있도록 되어 있으며 InstallScript Project와 Basic MSI 의 혼합형으로 보시면 되겠습니다.
 
InstallSrcipt Project
순수한 인스톨쉴드 설치 엔진을 사용하며 스크립트를 이용한 설치본의 변경작업이 용이 합니다.
 
 
기타 Universal Installer는 어떤 Platform 에서도 설치되는 설치본을 만들때 사용하며 Java를 이용합니다. 윈도우가 아닌 다른 OS에 설치 하고자할때 이용합니다.
 
Mobile은 WinCE계열의 설치본을 만들때 사용합니다.
 
 
 
앞에서도 말씀드렸다 시피 "MSI설치본으로 만들어야 할 뚜렷한 이유"가 없다면
InstallScript Project로 하시기 바랍니다.
 
 
2. 설치 파일의 "정리"와 "분류" 에 대해서
 
자..처음에 제가 설치파일의 예기 했던 부분입니다.
실행프로그램의 모듈들이 모두 한폴더에 있기만 하면 실행되는데 아무 문제 없다면
여기는 보실 필요가 없습니다.
 
그러나 OS별로 설치되는 파일이 다르고, 나라별로 다르고, 일반 DLL, COM DLL등 구분지어있기 때문에 단순히 복사만으로도 충분히 복잡하다면  이대로 하시기를 권장합니다.
 
(개발하시는분의 취향에 따라 설정 하시기 바랍니다.)
 
 
기본적으로 셋업 프로젝트는 C:\My InstallShield X Projects 하위에 생성됩니다.
 
여기에 셋업프로젝트의 하위 폴더에 ReleaseFiles 혹은 "최종파일들" 등등 실행 모듈이 들어갈
폴더를 생성합니다.
-다른곳에 두셔도 되나 편의성으로 여기에 생성합니다. 이렇게 하면 하나로 압축해서 이동할때 편리합니다.
 
 
이제 ReleaseFiles의 하부에 분류 폴더를 생성합니다.
(Naming은 취향대로 하시기 바랍니다.)
 
 
CommonFiles : 어떤 환경에서도 무조건 설치되는 파일들
9XFiles          : 윈도 9X관련 파일들
NT Files        : 윈도 NT 계열의 파일들
SelfRegister   : 시스템 등록되어야 하는 파일들
 
등등등 설치 목적에 따라 분류 하고 정리 해두시기 바랍니다.
(몇번 해보시면 좀더 편리한 자기만의 노하우가 생기실 겁니다.)
 
또한 설치 폴더의 하위 폴더를 생성하고 거기에 설치 되는 파일들의 경우도
따로 분류 하는편이 좋습니다만 편의를 위해서 위의 분류와 같이 사용하기도 합니다.
 
예) 설치 폴더 : Prog1.exe, mo.dll, mo2.dll
     설치 폴더\Obj : Obj.dll, Obj2.dll
 
 이런형태로 설치된다면
 
 CommonFiles: prog1.exe, mo.dll, mo2.dll
 CommonFiles\Obj :  Obj.dll, Obj2.dll
 
 이렇게 만들어도 됩니다.
 
 
 
자..이렇게 나누어 두어야 할 이유는 하나 입니다.
Components를 만들기 위해서죠 (이전버전에서는 "파일그룹' 이였음)
 
각각 OS및 환경에 따라 달리 설치되어야할 부분을 나누는 작업입니다.
 
 
물론 나누지 않아도 됩니다. 한폴더에 다 넣고 Static Link를 해도 됩니다.
그러나 실행파일의 갯수가 50개만 넘어간다면?? 복잡해질수 있습니다.
 
이런때 폴더구성을 잘하고 Dynamic Link 로 하시면 한결 편리합니다.
 
 
주) static Link와 Dynamic Link에 대해서는 뒤에서 다시 설명하겠습니다.
 
 
4. 마법사이후...: 메뉴 둘러보기
 

자. 이 앞까지는 위저드를 사용해서 간단한 설치 본을 만들어봤습니다.

 

-앞서 만든걸 한번 실행해보셧나요? 안해보셨다면 해보세요

 F5 를 누르면 디버그 모드 실행

Ctrl+F5를 누르면 바로 실행입니다.

한번 실행 했으면 다시한번 실행시켜서 삭제해주시는것 잊지 마시구요.

 

이제 한단계 업그레이드! 세부 설정으로 들어갑니다.

 

위져드로 만들긴 했는데 뭔가 세부적으로 좀 약간 약간 손을 대고 싶은데 어디서 부터 뭘 해야 할지 모르실겁니다.

 

자..카메라에 MP3까지 되는 신형 핸드폰을 새로 장만했다고 생각하세요.

기본적으로 전화걸기, 켜기 끄기 정도는 다 그냥 하실꺼구

 

그담부터 하시는일은 메뉴가 뭐가 있나 어떤기능이 되나 하나하나 살펴보시거나

필요한기능을 찾으실겁니다. -문자보내기, 카메라찍는방법, mp3하는방법등등

 

그러다 잘 모르겠으면 펼치는것이 메뉴얼이겠죠.

 

인스톨쉴드도 비슷한 순서로 공부해나가시는것이 좋을듯 합니다.

 

 

먼저 메뉴구성을 살펴보십시요

  어디에 뭐가 있나 이건 뭐하는데 쓰는것인가 기능은 어떤거지?

 

그다음 필요한 부분을 찾아둡니다

 

  많은 기능이 있지만 정작 자주 쓰는것은 몇개 안됩니다.

 

잘모르겠는것은 Help를 보시면되겠습니다.

  도움말이 매우 잘되어 있습니다. 단! 영어라는문제점이 있지만 어려운 영어는 아닙니다.

 

위져드 빌드가 끝난 이후 UI구성을 하나하나 살펴 보겠습니다.

(물론 자주 쓰는것만 예기 합니다. 제가 언급하지 않는것은 필요할때 찾아쓰시면됩니다.)

 

 

5. Installation Designer - Installation Information

 

ㅡ.ㅡ;; 열심히 쓰다가 날려먹고 다시 씁니다. 흑흑..

 

아까 머라 썻더라. ㅡ.ㅡ;;

 

슬슬 다시 계속 강좌를 진행합니다.

Start Page 에서 새로 프로젝트를 열고 Project Assistant에서 마법사모드로 기본설정만으로 설치본을 끝내시는 분들도 있겠지만 뭔가 세부 설정을 좀 하려고 하신다면 하나하나 세부 메뉴를 보셔야 합니다.  전부다 하나하나 언급하면 좋겠지만 필요한것만 하겠습니다. 왜냐면 좀전에 다 쓰다보니 넘많은데 날려먹고 다시 쓸려니 흑흑..(그렇습니다. 저 게으릅니다.!)

 

Installation Information

보시다 시피 2개의 항목이 있습니다. 세부 항목을 이제 보도록 하지요

 

사실 각항목을 선택하면 하단에 자세한 설명과 Help가 링크되어 있습니다. 영어라 문제긴 하지만 매우 자세한 설명이 잘되어 있거든요. 설명 직접 보시는것이 이해가 잘되시겠지만

 

제가 언급하지 않는 부분은 나중에 살펴보시기 바랍니다.


Project Properties (프로젝트 설정)

type : 설정된 프로젝트의 타입입니다. 하단에 링크를 눌러서 Help를 보시기 바랍니다.

 

Project File Format : 일반적으로 바이너리 형태가 인스톨쉴드 프로젝트를 열고 닫을때 빠릅니다. 그러나 CVS같은 버전관리 툴을 이용해서 관리를 하신다면 바이너리 타입은 관리가 안되죠

이런때 XML 포맷으로 사용합니다.

 

Setup Languages : 사용할 언어를 선택합니다.

 

Platforms : 셋업이 설치될 OS를 고릅니다.

 

Maintenance Experience: 유지관리 모드  일반적으로 Standard사용

 -Standard : 프로그램 추가/삭제 제어판에 하나만 기록되며, setup.exe를 실행시 설치모드,삭제모드로 실행됩니다.

-Multi-Instance : 프로그램 추가/삭제 제어판에 setup.exe를 실행시켜 설치한 횟수만큼 기록되며

프로그램 추가/삭제에서만 삭제가됩니다. setup.exe를 실행시키면 계속 설치만됩니다.

-No Uninstall or Maintenance: setup.exe를 실행시키면 설치만되며, 제어판에 기록되지도 않습니다. 패치를 만드실때 사용하면 유용하겠지요


Update Mode Supported : 업데이트 모드 사용 여부입니다. 버전업 계획이 있으시면 Yes!

-모드에 대해선 아래 다시 언급합니다.

 

Add or Remove Program(프로그램 추가/삭제 제어판)

 
 
프로그램 추가삭제 제어판에 보여질 내용을 설정합니다. 일반적으로는 기본설정대로 사용합니다.
항목을 채워넣으시면 아래와 같은 표시됩니다.
 
설마..그래서? 라는 표정으로 이걸 보고 계시는건 아니겠지요????????
 
 
Product Properties(제품정보)

 

제품의 정보를 나타냅니다.

Product GUID : 중요합니다.

- GUID 로 프로그램이 설치여부를 판단합니다. 똑같은 설치본이더라도 GUID를 다르게해서 만들면 서로 다른 설치본으로 인식합니다.

 

TARGETDIR : 기본적으로 설치될 위치를 지정합니다.

-기본값으로 지정된 위치는 "C:\Program Files\회사이름\제품이름"의 경로로 설치됩니다.

 

Executeable File : 설치될 파일중에서 메인 실행파일을 지정합니다. -안해도 무방합니다.


Font Registration : Enable로 해두면 설치본에 포함된 폰트 파일을 인식해서 자동적으로 시스템에 등록시킵니다.

그러나 한글 파일명의 폰트는 깨지는 버그가 있습니다. 폰트 설치를 계획하시는분은 Disable로 하시기 바랍니다.( 이글이 올려진 2004년 9월 2일 현재 해당하는 버그입니다. 차후에 고쳐지겠지요)

 

그럼 폰트 등록은 어떻게 하느냐면 컴포넌트에서 폰트 폴더에 복사되도록 하면됩니다. 수작업으로 폰트 등록시킬때 처럼 그냥 복사하면 자동적으로 된답니다.

 

String Tables (문자열)

 

한가지 언어로 할때는 별 의미가 없습니다만

 

다국어버전을 기획하신다면 중요합니다.

 

인스톨쉴드 내부의 코드는 ID로 정하고 표시될 글자들을 여기에서 표시하는것이죠

 

다국어버전으로 설치본을 만든다는것은 다국어버전으로 실행파일을 만드셨다는거죠?

그렇다면 자동적으로 아시는 부분일거라 생각합니다만.. 모르시겠으면 덧글 달아주시기 바랍니다.

 

 

...........

 

자.다시 언급하겠다고한 모드에대해서 설명합니다.

 

인스톨쉴드 이전버전의 경우 두가지 모드만 있었습니다.

설치모드와, Maintance Mode.

 

여기에 Update Mode가 추가되었습니다.

 

스크립트 설명할때 다시 나오겠지만

 

인스톨쉴드는 스크립트언어로 세부설정이 가능하며 인스툴쉴드의 시스템함수는 이벤트 방식으로 호출됩니다.

 

Setup.exe가 실행되면셔 GUID를 레지스트리에서 체크해서 각각의 모드의 함수를 호출하게됩니다.

 

설치전후는 OnFirstUIBefore(), OnFirstUIAfter()가 호출되고

추가/삭제시 OnMaintUIBefore(), OnMaintUIAfter()가 호출됩니다.

 

여기에 이제 업데이트 모드가 추가되어

업데이트시엔 OnUpdateUIBefore, OnUpdateUIAfter()가 호출됩니다.

 

테스트를 해볼까요?

 

간단하게 설치본을 만든다음 설치합니다.

Project Properties에서 Version 을 하나 증가 시킵니다.

빌드후

setup.exe를 실행시키면 업데이트 하겠다는 메시지가 나오고 업데이트가 진행됩니다.

 

이미 설치가 된 PC에 새로운 버전으로 업그레이드 할때 유용하겠지요?

 

이전버전에서는 Update Mode가 없어서 업데이트 판을 만들때 무척 고생했었는데

비교적 간단해졌습니다.

 

 

Update Service

윈도우의 자동업데이트를 생각하시면됩니다.

일정주기로 새버전이 나왔는지 체크하고 새로운 버전이 등록되어 있을때 사용자에게 알려줍니다.

 

보통은 사용하지 않습니다

 

아직은 널리 사용되고 있지는 않기 때문에 사용하실 계획이시라면 Help를 잘 읽어보시기 바랍니다.

 

 

6. Organization

 

오랜만에 씁니다.
 Organization 항목에 대해서 간단설명. 역시나 많이 쓰는 기능만 간단히

 

 
 
Setup Design - 셋업의 전체적인 윤곽을 지니고 있습니다.
Setup Design 의 하부에 Features가 들어가고 그 하부에 Components가 들어간단것만 기억하십시요 아래의 그림처럼 트리구조입니다.
이항목은 전체적인 모습을 가지고 있단것 이외에는 별다를게 없습니다. 하부의 메뉴에서 설정하나 여기서 설정하나 똑같습니다.
 
 
Setup Design에서 팝업메뉴에서 component를 추가한경우엔 괜찮지만  Components에서 추가한경우 여기에서 Feature에 등록하지 않으면 설치되지 않습니다. 빼먹지 않도록 하십시요.
아래 components에서 다시 설명합니다.
 
Feature-중간 그룹이라 생각하시면됩니다. 이게 왜 필요한지는 마지막에 설명됩니다.
Required Features - 필요한 Feature를 설정합니다. 규모가 작은거나 사용자에게 선택권이 없는경우엔 신경 안쓰셔도 됩니다. 이 Feature가 설치되기 위해서 꼭 같이 설치되어야 하는경우에 설정합니다.
-아래한글이나 워드 대부분 깔아보셨겠지요. 사용자설치 옵션에 가보면 해서 설치할지 말지 결정할 수 있는데 어떤건 꼭 같이 설치가 되어야 하는게 있습니다. 그럴때 사용하지요.
 
이런창이 뜨고 같이 선택될 녀석을 골라줍니다.
 
OnInstalling~ OnUninstalled  - 선택한 Feature가 설치되는중, 설치완료후, 삭제중, 삭제완료후 사용자가 원하는 어떤 작업이 진행되어야 한다면  (예를 들자면  "MSDE가 설치중입니다. 잠시만 기다려주십시요" 등을 표시하는경우) 사용합니다.  이 옵션은 스크립트 함수와 연동됩니다. 스크립트에서 다시 설명합니다.
 
Include In Build -  최종적으로 설치본을 Build할때 포함여부를 결정합니다. 잠깐 빼야하는데 나중에 쓸지 모른다던가 그럴때 쓰시면되겠습니다. 중국어판에는 필요한데 한글판에는 필요 없다던가 그런옵션으로 사용가능하지요
 
....................................................................................................
Components -  파일들이 설치될 최소 단위 입니다. 앞서 말했듯이 성격에 맞게 분류된 파일들이 그모습대로 여기에 등록됩니다.
 
Main 실행파일, System폴더에 복사되어야 할 파일, OCX라서 등록되어야햐는파일, 등등 성격대로 분류 합니다.
Destnation - 설치될 위치를 결정합니다. TARGETDIR (MSI에서는 INSTALLDIR) 이 메인 설치 폴더의 경로 변수 입니다. System에 들어가야 한다면 여기서 수정하시면됩니다. (이 옵션도 MSI와 지금 설명하는게 약간 다른데 해보시면 차이점 금방 아실것입니다.)
 
쉴드에서 사용하는 시스템 변수는 아래에서 설명합니다.
 
Shared - 공유 여부를 결정합니다. Yes하면 삭제시 공유된 파일인데 삭제할꺼냐? 이거지우면 딴거 안될수도 있어 라고 알려줍니다.
 
Uninstall  - No로 하면 제어판에서 삭제할때 지우지 않고 남겨둡니다.
Languages - 국가 설정을 하면 해당 언어의 OS일때에만 설치가 되며 다른 언어일때는 설치되지 않습니다.
Operating Systems -  설치될 OS를 결정합니다. 98을 선택했다면 98이 아닌 OS에서는 설치되지 않습니다.
 
Self-Register - COM모듈이나 OCX일경우 체크해주면 자동으로 레지스트리에 등록하면 삭제시에도 자동으로 해지해줍니다.
 
Link Type - 파일들이 연결될 형태를 말합니다.
Static - 파일 하나하나 절대 경로로 링크가 됩니다. Build할때 파일이 없으면 에러를 표시해줍니다.
Dynamic - 지정된 폴더를 기준으로 합니다. 빌드 할때 지정된 폴더의 파일들을 모두 포함하며 서브디렉토리를 포함할지 여부를 결정합니다.
 
Overwrite -  설치파일이 이미 존재하는경우 덮어쓰기 설정입니다.
 
여기에서 직접 컴포넌트를 추가 삭제 할 수있습니다. 설정이 완료된후 Setup Design에서 Features에 등록하는것을 잊으시면 안됩니다.
 
만약 잊으셨다면 친절하게 이거 빠졌다고 아이콘으로 표시해줍니다.
Setup Types - 설치될 타입을 결정합니다. 흔히 보는 모두설치, 선택설치 입니다.


각각 항목을 선택하고 아래에서 설치될 Feature를 골라주시면됩니다.  간단하죠 ;-)

 

..........................


MSI인경우 약간 다릅니다. Self-Register항목이 없는것이 대표적입니다.

-없다고 안되는게 아니라 알아서 처리해줍니다.

 

시스템 변수

 

TARGETDIR : 설치 경로를 가지고 있습니다. 일반적으로 C:\Program Files\설치될경로 의 값을 가지고 있습니다.

WINDIR : window 설치 폴더의 경로

WINDISK: Window 설치 드라이브

WINSYSDIR : system 경로  (OS에 맞춰서 98은 system, NT는 system32를 가르킵니다.)

SRCDIR : setup.exe가 있는 경로입니다.

SUPPORTDIR : setup.exe가 실행중 임시로 사용하는 임시파일들의 경로입니다. 설지도중에 지원되는 파일들의 경로로 라이센스파일, 스플래쉬 이미지, 빌보드 이미지 등이 여기에 들어갑니다.

 

흔히 많이 쓰는것만 나열했습니다. 나머지는 Help를 참조하시기 바랍니다.

 

7. Application Data

 

무척 오랜만에 시간이 나서 진행합니다~~ (게으름뱅이 입니다. ^^;;)

 

항목도 두가지 뿐이고 간단합니다.

 

Organization과 연결된다고 생각하시면됩니다.

 

Components 의 Link type에서 Dynamic인경우는 폴더를 한번 지정하면 되니까 편리하지만

 

Static인경우엔 파일 추가 하고 삭제 하는것이 번거롭습니다.

 

이런때 탐색기 모양의 인터페이스가 있으면 편하겠단 생각이 납니다.

 

Files and Folders

 

상단이 로컬 컴퓨터, 하단이 TARGET 시스템이라고 생각하시면됩니다.

 

드랙앤드롭하시면 편리하죠

 

설치될 위치에 가져다 놓으시면됩니다.

 

포함될 컴포넌트는 위에 콤보박스에서 선택하시면되겠습니다.

 

 

Objects

 

프로그램이 실행되기 위한 기본 환경이 있습니다.

MFC프로그램인경우엔 MFC Runtime Library가 필요하고

VB인경우엔 VB Runtime이 필요하죠

DB인경우엔 MDAC도 필요하고

 

이러한것들을 Organization에서 하나하나 설정해도 된다지만 귀찮습니다.

많이 쓰는 범용적인것들은 제조사나 인스톨쉴드에서 제공합니다.

 

리스트를 보시고 필요한것을 추가하시면됩니다.

 

인스톨 쉴드 스크립트용과 MSI용으로 구분되어 있습니다.

 

만드시는 셋업타입에 따라 맞게 사용하시기 바랍니다.

 

오브젝트에 따라서 단순 추가를 하던지 위저드가 동작해서 사용자 설정을 받습니다.

 

 

8. system Configuration

Shortcuts

 

단축 아이콘을 생성합니다. 고정적인 아이콘은 여기서 만드는것이 편리합니다.

환경에 따라서 파라메타가 달라진다던가 하는 경우엔 스트립트로 생성하는것이 편할 수도 있습니다. 그때 그때 상황에 맞게 쓰시면되겠습니다.

 

아이콘이 생성될 위치에 팝업메뉴로 만드시기 바랍니다.

 

Display Name : 아이콘이 표시될 이름을 정합니다.

Target           : 실행시킬 프로그램을 지정합니다.

Icon file         : 기본값은 프로그램의 리소스를 사용하는데 따로 있다면 지정합니다.

Icon Index      : 리소스내에서 아이콘 파일이 많다면 지정합니다. 기본값은 제일 첫번째입니다.

Run               : 실행방법을 결정합니다. 옵션을 보시면 아실것입니다.

Arguments      : 실행파일에 파라메터를 정합니다.

Working Directory : 실행위치를 정합니다.

Uninstall              : 프로그램 삭제시 아이콘을 지울지 결정합니다.

Replace existing (if found) : 이미 아이콘이 존재할경우 교체여부를 결정합니다.

Internet Shortcut       : 인터넷 바로가기 아이콘을 만들때 사용합니다.

Type                       : NT의 경우 계정에만 설치 할지 여부를 결정합니다.

 

이런한 옵션들은 MSI일경우 조금 다릅니다.

 

 

Registry

 
개발을 하다보면 실행하는데 필요한 레지스트리 값이 필요한 경우가 있습니다.
이때 개발컴퓨터에 이미 다 있는데 다시 작성하기 귀찮죠.
간단하게 끌어다 놓음으로서 추가가 됩니다.
 
default : 기본적으로는 항상 설치됩니다.
환경에 따른 설치셋: 제가 예제로 하나더 추가 했습니다. 그림대로
          특정 컴포넌트가 설치될때에만 추가됩니다.
 
XML File Changes
설치될 컴퓨터의 XML파일의 편집을 쉽게 한다고 하는데
안써봐서 자세한 기능은 모르겠습니다.
아마 닷넷 설정용이라 생각합니다만....제가 닷넷을 하지 않음으로 지식이 부족합니다.
 
 
9. Media
 
Path Variables
 
환경 변수값입니다.
개발할때 사용합니다.
프로젝트를 처음 개발할때는 c:\mywork\Project 라고 설정했는데 나중에 옮기던가 했을경우
다시 모든설정을 바꿔야 하는 불편을 없애기 위해서 만들어진것입니다.
 
최종릴리즈에는 반영되지 않습니다. 즉 실제 Setup.exe로 설치가 될때에는 반영되지 않습니다.
따라서 크게 신경 쓰지 않아도 될 부분입니다.


Release

 
인스톨 쉴드의 최종 생산물인 setup.exe를 만드는 옵션을 설정합니다.
 
일반적으로는 CDROM_IMAGE를 사용합니다.
인터넷 배포용인지, 하나의 압축파일로 생성할지는 약간의 옵션 조정으로 가능합니다.
 
Project Assistant 의 마지막 단계에서 모두 선택했기 때문에 그림에선 세가지가 보입니다.
실제 해보시면서 옵션을 비교해보시면 좋겠습니다
 
익숙해지시면 CDROM_IMAGE 하나만 하신다음 필요에 따라서 옵션을 변경하시면됩니다.
 
General
Release Location : 최종 결과물이 의 위치를 정합니다.
 
이하 네가지 메뉴는 하나의 압축 파일로 생성할때의 옵션입니다.
Single Exe File Name :  압축된 파일 이름
Single Exe Icon File :    아이콘 파일 지정
Setup Command Line :  압축이 풀리면서 setup.exe를 실행시킬때의 명령행 옵션
 
Platform(s) :  Setup.exe가 설치될 OS를 선택합니다.
Language(s) : 설치시 사용되는 기본 언어를 고릅니다.
 
Languages Dialog : 설치시 언어를 사용자가 선택 하도록 합니다.
 
Digital Signature : 인터넷에서 다운받을경우 디지털 서명을 합니다.
 
Post Build : 빌드 완료후의 반복 작업을 지시합니다.- FTP전송, 특정 위치에 복사등
 
 
모든 옵션을 설명하진 않았습니다.
보통은 기본 옵션으로도 충분합니다.  위저드에서 생성해주는 옵션과 비교해보시고
테스트 해보시면 금방 알 수 있습니다.
 
 
10. 기타등등

Server Configuration : 서버 설정입니다.

   항목에 보이는대로 IIS 서버와 MS-MQL 서버의 설정을 쉽게 해줍니다.

 

-> 실제 제가 사용해본적이 없어서 자세한 설명은 안하겠습니다.

 

User Interface

  설치시 사용되는 다이얼로그입니다. 기본적으로 제공하는 다이얼로그에서

  글자를 바꾼다던가 위치를 바꾼다던가 하는 간단한 에디트를 지원합니다.

  그러나 좀 복잡한 부분은 여기서 지원되지 않습니다.

 

Additional Tools  : 잘 사용되지 않습니다.

  Dependency Scanner : 의존 파일을 검색합니다.

  Direct Editor : 직접적으로 셋업 파일의 옵션을 수정합니다

 

자. 이제 제일 간단하다면 간다하고 복잡 하다면 복잡한 스크립트가 남았습니다~~

 

 

11. Behavior and Logic

 

InstallScripte

스크립트를 편집할수 있는 메뉴 입니다.

 

기본적으로는 Functions에 별 내용이 없을것입니다. 저는 테스트를 위해서 몇가지를 추가 했구요.

 
화면에서처럼 상단에 콤보 박스가 2개 존재 합니다.
왼쪽은 상위 카테고리 이고 오른쪽이 해당 카테고리의 펑션들이 존재 합니다.
 
쉴드에서 예전에는 일반 프로그램처럼 순차적으로 진행되었으나 6.X 버전 이후부터는 이벤트 방식으로 설치가 진행됩니다.  크게 나누어  파일 복사전, 복사중, 복사후의 세단계로 나누게 됩니다.
 
어떤 함수들이 있는지는 확인해보시기 바라며 간단 설명과 많이 사용하는것만 설명합니다.
 
Before Mode Data - 파일설치전 에 이벤트에 의해서 구동되는 함수들이 존재합니다.
   - 설치인경우 OnFirstUIBefore(), 삭제/변경시에는 OnMaintUIBefore()  함수가 실행됩니다.
 
After Move Data - 파일 설치 이후의 함수들이 존재합니다.
  - 설치완료인경우 OnFirstUIAfter(), 삭제/변경시에는 OnMaintUIAfter() 가 실행됩니다.
 
Miscellaneous - 쉴드에서 내보내는 각종 에러 메시지처리를 합니다. 아무런 에러메시지도 보이고 싶지 않을때 필요한 함수를 등록해서 메시지 박스 부분의 코드를 수정해주시면 됩니다.
 
 
초기화 과정을 거치고 난후 MAINTENANCE 환경변수에 설치중인지 삭제중인지 TRUE/FALSE를 설정하고 필요한 이벤트가 불리게 된다.
 
쉴드에서 기본적으로 제공해주는 이벤트 함수에달린 주석이 무척 잘되어 있기 때문에
설치중에 필요한 다이얼로그를 제거하거나 추가 하는것은 조금만 살펴보면 가능하다.
 
자세한 함수 사용법등은 Tip란에서 하나씩 하도록 할 예정.
 
여러가지 이벤트 함수가 있지만 가장 많이 사용하는부분 몇가지만 설명하자면.
 
OnBegin : 시작 부분 여기를 거치면서 설치인지, 유지 보수(Maintance)인지 구분을 한다
 
설치인경우 : OnFirstUIBefore() : Welcome 다이얼로그가 실행되면서 필요한 다이얼로그를 순차적으로 실행시킨다. '뒤로', '다음', '취소'등의 버튼이벤트에 따라서 스크립트가 진행한다.
 
삭제/변경인경우 : OnMaintUIBefore() : 단순히 삭제 하시겠습니까? 메시지만 띄운뒤 삭제하도록 하려면 이부분의 코드를 수정하면됩니다.
 
설치나 삭제가 이루어지고 난뒤
 
OnFirstUIAfter() 설치완료된 이후의 어떤 환경설정등을 이곳에서 코딩합니다.
OnMaintUIAfter() 삭제 완료된 이후의 어떤 환경설정을 이곳에서 코딩합니다.
 
OnEnd(): 완료될때 불리는 이벤트 입니다.
 
설치/유지보수 양쪽의 경우 OnBegin, OnEnd는 모두 실행됩니다.
 
Support Files/Billboards
 
 
라이센스 동의 파일이나 파일 설치 이전에 해야할 어떤일들(시리얼체크 같은부분)을 처리하는 dll이나 실행파일, 설치중에 나타나는 스플래쉬 화면, 배경화면 등을 이곳에 지정합니다
 
파일의 등록은 탐색기에서 드랙&드롭하거나 팝업메뉴에서 등록하면됩니다.(Ctrl+V도 됩니다.)
 
Lanueage Independent : 언어에 상관없이 동일하게 사용되는 부분입니다.
다국어 설치본일경우 언어별로 필요한 파일들이 다르다면 각각 언어별로 구분해서 넣으면됩니다.
 
 
Billboard- 설치할때 배경화면을 지정하며 파일명은 'bbrdX.bmp'이어야 합니다.
X는  1-99까지의 숫자를 사용하며 순차적으로 보여지게됩니다.
 
Splash Screen - 설치가 시작될때 처음 스플래쉬 스크린 파일을 이곳에 등록합니다.
 
Advanced Files - Media가 빌드될때 추가될 파일들을 넣어둡니다. Silent Setup옵션을 설정할때 사용하시면 편리합니다.
 
 
12. 스크립트 문법
 

어떤 프로그램이던지 (스크립트, VB,C/C++등등) 조금이라도 해보신분은 금방 아하~ 하고 아실테지만 아니신 분들은..이게뭐지..싶을지도 모르겠습니다.

 

 

사용자 함수 추가

 

스크립트에 함수를 추가 하기 위해서는 prototype을 정의 하고

function body를 작성합니다.

 

//프로토 타입 정의

protype GetPathParts(STRING, BYREF STRING, BYREF STRING, BYREF STRING);

 

//function block 작성

function GetPathParts(szFullPath, svDrv, svPath, svName)
    LONG lResult;   //사용할 변수를 정의 합니다.
begin // 함수의 실제 내용 시작
    lResult = ParsePath(svDrv, szFullPath, DISK);
    if (lResult = 0) then
        lResult = ParsePath(svPath, szFullPath, DIRECTORY);
    endif;

    if (lResult = 0) then
        lResult = ParsePath(svName, szFullPath, FILENAME);
    endif;

    return lResult; 
end; //함수의 끝

 

리턴값은 주로 함수의 에러값을 리턴하며, 숫자값이 아니거나 여러개일경우 함수에 넘겨주는 변수 값을 BYREF 를 이용해서 정의 합니다.(

 

즉 기본적으로 인스톨쉴드는 By Value방식으로 값을 전달 합니다

////////////////////////////////////////////////////////////////////////

 

정의방법

// Constant definitions
#define PRODUCT "InstallShield"
#define LIMIT    100

// Variable declarations
CHAR  cVal;
NUMBER nVal;
STRING szName;
   
// Function declarations
prototype DisplayMsg (NUMBER, STRING);
prototype GetName (BYREF STRING);

 

////////////////////////////////////////////////////////////////////////

 

Data Type

 

여러가지 데이타 타입이 있는데 세가지만 설명합니다.

 

숫자 데이타는 NUMBER

문자데이터는 STRING

리스트데이터는 LIST

 

가장 많이 쓰는 데이타 타입입니다. 나머지 타입은 Help를 참조해주시기 바랍니다.

 

 

//////////////////////////////////////////////////////////////////////

기타 많이 쓰는 문법구문(예제는 Help에서 가져왔습니다.)

 

IF문

if (condition) then
    // statements to be executed if condition is true
endif;

 

FOR문

for iCount = 1 to 10
        MessageBox ("This appears ten times.", INFORMATION);
    endfor;
for iCount = 10 to 100 step 10
        MessageBox ("This appears ten times.", INFORMATION);
    endfor;

 

WHILE문
nCount = 1;

    while (nCount < 5)
        MessageBox ("This is still true.", INFORMATION);
        nCount = nCount + 1;
    endwhile;

 

SWITCH문
STRING szMsg, svResult;
    NUMBER nvResult;

    GetSystemInfo (VIDEO, nvResult, svResult);
   
    switch (nvResult)
        case IS_UNKNOWN:
            szMsg = "The user's video is unknown.";
        case IS_EGA:
            szMsg = "EGA resolution.";
        case IS_VGA:
            szMsg = "VGA resolution.";
        case IS_SVGA:
            szMsg = "Super VGA (800 x 600) resolution.";
        case IS_XVGA:
            szMsg = "XVGA (1024 x 768) resolution.";
        case IS_UVGA:
            szMsg = "Greater than 1024 x 768 resolution.";
        default:
            szMsg = "Error";
    endswitch;

    MessageBox (szMsg, INFORMATION);

 

 

따라하기 강좌 -Prologue

 

몇달에 걸친 프로젝트가 거의 마무리되어갈무렵

 

제품을 패키징 하고자 인스톨쉴드를 접한 김모씨..

 

VC++에 포함된 쉴드를 일단 설치해보고 메뉴얼을 받아보았지만

 

검색을 통해 강좌몇개를 봤는데 제대로 되는것도 없고..

좀더 찾아보니 인스톨쉴드의 버전이 무척 많다는걸 알게되었다.

 

VC++에 포함된게 Professional 5.X버전이고

 

Professional 6, 7  버전은 인스톨 스트립트 엔진을 이용해서 설치가 진행되고

Developer 7, 8 버전은 MSI 의 엔진을 이용해서 설치가 진행된다.

 

DevStudio 9 버전은 Professional + Developer의 통합버전이고

 

InstallShield X, 10.5, 11 버전은  DevStudio에 MultiPlatform이라는 자바버전이 포함된것이고..

 

우아..뭐가 이리 복잡한거야?

 

어쨋던 Windows에 응용프로그램을 설치 할것이라면

 

최신버전 하나면 다 된다는 뜻이겠지?

 

서둘러 최신버전을 구입한 김모씨 일단 설치해서 이것저것 메뉴를 살펴보니

 

InstallScript, InstallScripte MSI, Basic MSI라는게 보이는데...

 

이건 강좌를 통해서 대략 차이점을 알아내었다.

 

여기저기 강좌를 찾아서 대충 마법사로 뚝딱 하는건 알겠는데..

 

보면서 따라할만한게 어디 없을까?

 

 

 

왜 없어!!! 뚜룩 뚜룩~~ 

 

(ㅡ.ㅡ...썰렁한가?)

 

 

강의대로 일단 산출물의 분류부터 시작한다.

 

1. 그냥 복사하면 되는 실행파일 그룹

2. 그냥 복사하면 되는 DLL 파일 그룹

3. 등록되어야 하는 파일그룹

4. 시리얼 번호 체크용 DLL

 

자 이정도면 되겠지?

 

슬슬 시작해볼까?

 

 

.............................

앞선 강좌에서 메뉴 구조및 대략적인걸 설명했지만

 

백문이 불여일견..

 

보면서 그대로 따라하면 되는 강좌를 진행하려합니다.

 

몇가지 시나리오를 생각중인데..잘될지는 모르겠네요

 

역시나..틈나는 대로 제맘대로 연재합니다. ^^;;

 

 

댓글 없음:

댓글 쓰기