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파일은 자동으로 해줍니다. 이름을 바꿔주고요.
만약 고정적으로 레지스트리에 뭔가를 기록해야 한다면, 즉 기본적인 레지스트리 구성이 필요하다면 여기에서 추가합니다. 동적으로 레지스트리에 기록해야 한다면 스크립트를 사용해야 하구요.
보통은 필요 없겠죠?
프로그램 설치많이 해보셨을텐데. 자..그럼 항상 나오는 창들이 있죠?
그런창들을 사용 여부를 결정합니다.
위에서부터 순서대로
-라이센스 동의 다이얼로그 : 이전에는 txt파일만 지원했는데 새버전에서는 rtf파일을 지원하는군요.
-사용자 정보 입력 다이얼로그: 회사이름 사용자이름등을 입력받습니다. 시리얼번호를 입력받을경우 이부분의 스크립트를 보통 수정합니다.
-설치경로 변경 다이얼로그 : 기본경로가 아닌 다른 경로에 설치하고자 할때 사용합니다.
-설치옵션 변경 : 전체설치, 최소화설치 이외에 사용자가 설치 목록을 선택하게 하는 옵션창입니다.
사용할 언어를 고릅니다. 이전버전에서는 랭귀지 팩을 따로 구입해서 실치했어야 했는데 X부터는 기본지원합니다. 붉은 밖스에서처럼 한글과 영문에서 서로 다른 문자열을 사용해야 할경우 스트링 리소스에서 관리 하면 편리하게 사용할 수 있습니다.
예) 숏컷, shortcut
빌드 옵션입니다.
-Single Executable : 실행시키면 압축이 풀리고 설치가 진행됩니다.
-보통 One-click이라 부르며 한번의 으로 웹페이지에서 다운로드 되어 설치 됩니다.
-일반적인 빌드 옵션입니다.
자. 이 앞까지는 위저드를 사용해서 간단한 설치 본을 만들어봤습니다.
-앞서 만든걸 한번 실행해보셧나요? 안해보셨다면 해보세요
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 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
각각 항목을 선택하고 아래에서 설치될 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용으로 구분되어 있습니다.
만드시는 셋업타입에 따라 맞게 사용하시기 바랍니다.
오브젝트에 따라서 단순 추가를 하던지 위저드가 동작해서 사용자 설정을 받습니다.
|
Shortcuts
단축 아이콘을 생성합니다. 고정적인 아이콘은 여기서 만드는것이 편리합니다.
환경에 따라서 파라메타가 달라진다던가 하는 경우엔 스트립트로 생성하는것이 편할 수도 있습니다. 그때 그때 상황에 맞게 쓰시면되겠습니다.
아이콘이 생성될 위치에 팝업메뉴로 만드시기 바랍니다.
Display Name : 아이콘이 표시될 이름을 정합니다.
Target : 실행시킬 프로그램을 지정합니다.
Icon file : 기본값은 프로그램의 리소스를 사용하는데 따로 있다면 지정합니다.
Icon Index : 리소스내에서 아이콘 파일이 많다면 지정합니다. 기본값은 제일 첫번째입니다.
Run : 실행방법을 결정합니다. 옵션을 보시면 아실것입니다.
Arguments : 실행파일에 파라메터를 정합니다.
Working Directory : 실행위치를 정합니다.
Uninstall : 프로그램 삭제시 아이콘을 지울지 결정합니다.
Replace existing (if found) : 이미 아이콘이 존재할경우 교체여부를 결정합니다.
Internet Shortcut : 인터넷 바로가기 아이콘을 만들때 사용합니다.
Type : NT의 경우 계정에만 설치 할지 여부를 결정합니다.
이런한 옵션들은 MSI일경우 조금 다릅니다.
Registry
Release
|
Server Configuration : 서버 설정입니다.
항목에 보이는대로 IIS 서버와 MS-MQL 서버의 설정을 쉽게 해줍니다.
-> 실제 제가 사용해본적이 없어서 자세한 설명은 안하겠습니다.
User Interface
설치시 사용되는 다이얼로그입니다. 기본적으로 제공하는 다이얼로그에서
글자를 바꾼다던가 위치를 바꾼다던가 하는 간단한 에디트를 지원합니다.
그러나 좀 복잡한 부분은 여기서 지원되지 않습니다.
Additional Tools : 잘 사용되지 않습니다.
Dependency Scanner : 의존 파일을 검색합니다.
Direct Editor : 직접적으로 셋업 파일의 옵션을 수정합니다
자. 이제 제일 간단하다면 간다하고 복잡 하다면 복잡한 스크립트가 남았습니다~~
11. Behavior and Logic
InstallScripte
스크립트를 편집할수 있는 메뉴 입니다.
기본적으로는 Functions에 별 내용이 없을것입니다. 저는 테스트를 위해서 몇가지를 추가 했구요.
어떤 프로그램이던지 (스크립트, 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
자 이정도면 되겠지?
슬슬 시작해볼까?
.............................
앞선 강좌에서 메뉴 구조및 대략적인걸 설명했지만
백문이 불여일견..
보면서 그대로 따라하면 되는 강좌를 진행하려합니다.
몇가지 시나리오를 생각중인데..잘될지는 모르겠네요
역시나..틈나는 대로 제맘대로 연재합니다. ^^;;
댓글 없음:
댓글 쓰기