2013-10-05

InstallFactory


InstallFactory(인스톨팩토리) v2.70을 이용하여 VB로 만든 프로그램 배포하는 방법입니다.

작성자 : 김재우(http://yahoo.sy.to)
----------------------------------

비베에서 제공하는 배포마법사를 이용해서 일단 셋업파일을 제작합니다.
그럼 해당 소스디렉토리 밑에 \Package 란 폴더가 생성됩니다.
그럼 \Package 폴더에서 폴더 두개를 임의대로 만듭니다.



그런다음, Support 폴더에 들어가 실제 프로그램에서 필요한 파일들만 선택해서
Run 폴더에 복사 또는 이동시킵니다.







인스톨팩토리에서 설치시 설치로고를 사용하고자 하시면 그림판등을 이용하셔서 먼저 작업해 두십시요.
비트 맵은 128X256 크기의 것이 좋으며, 사용하는 색상의 수에는 제한이 없으나 가능하면 Windows 기본색을 가지고 있는 8BPP(256색) 이하의 비트맵을 사용하시는게 좋습니다.
인스톨팩토리를 실행합니다. 상단에 만들기 버튼을 눌러 프로젝트이름을 만듭니다.
그리고 일반탭에서 아래와 같이 설정합니다.

주의해서 보실 부분은 소스폴더,기본설치폴더,설치화일이 만들어질 폴더부분입니다.
간혹 소스폴더라고 되어있어서 비베소스파일들이 있는 디렉토리로 착각을 많이 하시는데,
그 의미가 아니고 설치되면 해당 프로그램폴더에 들어가야 할 파일들만 모아놓은 폴더를 의미합니다.
아까 Run 이라고 지정한 폴더가 해당합니다.
그리고 아까 Setup 이라고 만든 폴더는 설치화일이 만들어질 폴더부분에 지정하시면 됩니다.



두번째 창탭으로 이동하여 아래와 같이 설정합니다.
비트맵은 아까 만드신 설치로고그림을 지정하시면 되고, 지정하지 않으면
인스톨팩토리 디폴트그림이 들어갑니다.
머리글과 꼬리글은 님이 원하시는대로 설정하시면 됩니다.
일반적으로 머리글 48 , 꼬리글 14 정도가 적당합니다.




정보탭메뉴 부분입니다. 설치전 라이센스동의가 필요한 내용을 보여줄 필요가 있거나,
설치 시 보여줘야 할 내용이 있을 때 지정하시면 됩니다.
미리 만들어두지 않았어도 이 화면에서 직접 파일을 생성해서 저장하실 수 있습니다.




단축아이콘탭 부분입니다.
프로그램그룹이름을 먼저 정하십시요. 그룹이름은 시작-프로그램-옆에 나올 이름입니다.






설치 위치를 {ProgramMenu} 로 설정하시면 안되시구요, {ProgramGroup} 로
하셔야 시작-프로그램-내프로그램-안에 단축아이콘이 등록됩니다.

설치 위치를 {StartMenu} 로 지정하시면 시작버튼을 눌렀을 때 나옵니다.
알집설치하면 나오는 실행아이콘을 떠올리시면 이해가 쉬울 듯 하네요.


제거탭 부분입니다.




실행 탭 메뉴부분입니다. (거의 사용안함) 

INI 화일 탭 메뉴부분입니다. (일반적으로 거의 사용안함)
"INI" 탭은 설치시 타겟 시스템의 시스템 INI화일, 또는 새로운 사용자 INI화일을 만들거나
INI섹션, INI키, INI값 등을 기록할 때 쓰입니다.     설치시 InstallFactory가 새로 만든
INI화일이나 기록한 INI섹션, INI키, INI값 등은 특별히 지정하지 않으면 제거시 모두 삭제됩니다.

또, 제거시, INI키를 삭제한 후, 대상 INI섹션이 어떠한 INI키도 가지고 있지 않으면
대상 INI섹션은 삭제되며, INI섹션을 삭제한 후, 대상 INI화일이 어떠한 INI섹션도 가지고
있지 않으면 대상 INI화일은 삭제됩니다.




<화일> 입력창
만들거나 기록할 정보의 INI화일 이름을 입력하는 창입니다.
설치시 이 이름의 화일이 존재하지 않으면 이 이름의 화일을 새로 만듭니다.
화일의 이름에는 폴더 예약어, 상대경로, 절대경로를 사용할 수 있으며,
화일 이름이나 상대경로로 지정하신 경우에는
어플리케이션이나 프로그램이 설치된 폴더가 기본 경로가 되며
필요하면 새로운 폴더를 만듭니다. 화일의 이름에는 다음의 폴더 예약어나 화일 예약어를 사용하실 수 있습니다.

INI화일 이름에 사용할 수 있는 폴더 예약어 또는 화일 예약어

{WinIni}
타겟 시스템의 Windows 디렉토리에 있는 WIN.INI화일이 대상 INI화일이 됩니다.
{WinDrive}
타겟 시스템의 윈도우즈가 설치된 드라이브로 확장됩니다.
{WinDir}
타겟 시스템의 윈도우즈 디렉토리로 확장됩니다.
{WinSysDir}
타겟 시스템의 윈도우즈 시스템 디렉토리로 확장됩니다.
{ProgramFiles}
타겟 시스템의 "Program Files" 폴더가 있는 절대경로로 확장됩니다.
{CommonFiles}
타겟 시스템의 "Common Files" 폴더가 있는 절대경로로 확장됩니다.
{InstallDrive}
어플리케이션이나 프로그램이 설치된 드라이브로 확장됩니다.
{InstallDir}
어플리케이션이나 프로그램이 설치된 디렉토리로 확장됩니다.
{InstallFileDrive}
설치화일이 있는 드라이브로 확장됩니다.
{InstallFileDir}
설치화일이 있는 디렉토리로 확장됩니다.
{TempDir}
타겟 시스템의 임시 디렉토리로 확장됩니다.
위의 예약어는 창의 오른쪽에 있는 화살표를 눌러 선택해서 입력할 수도 있습니다.

<섹션> 입력창
만들거나 기록할 INI항목의 섹션의 이름을 지정하는 창입니다.

<키> 입력창
만들거나 기록할 INI항목의 키의 이름을 지정하는 창입니다.

<값> 입력창기록할 INI항목의 값을 지정하는 창입니다.
기록할 INI 값에는 다음의 폴더 예약어가 사용될 수 있습니다.

INI 값에 사용할 수 있는 폴더 예약어

{WinDrive}
타겟 시스템의 윈도우즈가 설치된 드라이브로 확장됩니다.
{WinDir}
타겟 시스템의 윈도우즈 디렉토리로 확장됩니다.
{WinSysDir}
타겟 시스템의 윈도우즈 시스템 디렉토리로 확장됩니다.
{ProgramFiles}
타겟 시스템의 "Program Files" 폴더가 있는 절대경로로 확장됩니다.
{CommonFiles}
타겟 시스템의 "Common Files" 폴더가 있는 절대경로로 확장됩니다.
{InstallDrive}
어플리케이션이나 프로그램이 설치된 드라이브로 확장됩니다.
{InstallDir}
어플리케이션이나 프로그램이 설치된 디렉토리로 확장됩니다.
{InstallFileDrive}
설치화일이 있는 드라이브로 확장됩니다.
{InstallFileDir}
설치화일이 있는 디렉토리로 확장됩니다.
{TempDir}
타겟 시스템의 임시 디렉토리로 확장됩니다.
{InstallDate}
설치할 때의 날짜가 YYYY-MM-DD 형태로 기록됩니다.
위의 예약어는 창의 오른쪽에 있는 "<"를>
<설치시 이미 설정된 값이 있으면 이 값은 기록하지 않음> 체크박스InstallFactory는 설치시 타겟 시스템에 이미 만들 INI화일 있고,
기록할 정보의 섹션, 키에 값이 이미 설정되어 있어도 새로 설치할 값을 겹쳐 쓰지만
이 체크박스로 겹쳐 쓰지 않도록 지정하실 수 있습니다.
InstallFactory는, 키만 존재하고 키의 값이 공백(Blank)인 키는 기록된 정보가 없는 키로 취급합니다.

<제거시 이 값은 삭제하지 않음> 체크박스InstallFactory는 설치시 타겟 시스템에 새로 만든 INI화일, INI섹션, INI키, 기록하거나 겹쳐 쓴 값은
제거시 모두 삭제하지만 이 체크박스로 삭제하지 않도록 지정하실 수 있습니다.

레지스트리 탭 부분입니다. 프로그램이 윈도우시작시 자동시작할 필요가 있거나 하는 경우
해당 레지스트리에 지정을 하는 곳입니다.

<루트 키> 콤보박스만들 서브 키 또는 기록할 레지스트리 정보의 루트 키를 선택할 수 있는 콤보박스로,
HKEY_CLASSES_ROOT,    
HKEY_CURRENT_USER,
HKEY_LOCAL_MACHINE,
HKEY_USERS 중 하나를 선택할 수 있습니다.

<서브 키> 입력창
만들 서브 키 또는 기록할 레지스트리 정보의 서브 키를 입력하는 창입니다.

<값의 이름> 입력창기록할 레지스트리 정보의 키 이름을 지정하는 창입니다.
이 항목을 지정하지 않으시면 기본값을 설정합니다.



DLL 기타 화일 탭 메뉴부분입니다.


아까 비베배포마법사로 생성한 Package\Support 디렉토리안에
있는 DLL 과 OCX 를 추가하시면 됩니다.

StdOle2.tlb설치 폴더: {WinSysDir}
설치시 화일이 이미 있으면: 설치할 화일이 신 버전이면 겹쳐쓰기
제거시: 그냥 두기
(공유 화일: 예)
TypeLib 등록: 예


MSVBVM60.dll설치 폴더: {WinSysDir}
설치시 화일이 이미 있으면: 설치할 화일이 신 버전이면 겹쳐쓰기
제거시: 그냥 두기
(공유 화일: 예)
Server 등록: 예


OleAut32.dll
설치 폴더: {WinSysDir}
설치시 화일이 이미 있으면: 설치할 화일이 신 버전이면 겹쳐쓰기
제거시: 그냥 두기
(공유 화일: 예)
Server 등록: 예


OlePro32.dll설치 폴더: {WinSysDir}
설치시 화일이 이미 있으면: 설치할 화일이 신 버전이면 겹쳐쓰기
제거시: 그냥 두기
(공유 화일: 예)
Server 등록: 예


AsycFilt.dll
설치 폴더: {WinSysDir}
설치시 화일이 이미 있으면: 설치할 화일이 신 버전이면 겹쳐쓰기
제거시: 그냥 두기
(공유 화일: 예)

C:\Windows\System(32)\Ctl3d32.dll
설치 폴더: {WinSysDir}
설치시 화일이 이미 있으면: 설치할 화일이 신 버전이면 겹쳐쓰기
제거시: 그냥 두기
(공유 화일: 예)

ComCat.dll
설치 폴더: {WinSysDir}
설치시 화일이 이미 있으면: 설치할 화일이 신 버전이면 겹쳐쓰기
제거시: 그냥 두기
(공유 화일: 예)
Server 등록: 예

마지막으로, 설치할 어플리케이션이 한글 Visual Basic 어플리케이션일 경우,
VB6KO.DLL을 비롯한, 설치할 어플리케이션이 사용하는 나머지 DLL화일과 OCX화일들을
포함시키시면 됩니다. 이것들만 아무 옵션을 선택하지 않으시면 됩니다.

 
이후 추가된 내용입니다.

일단 패키지 배포 마법사로 설치파일을 만든후 메모장으로 SETUP.LST 파일을 열어 보세요.
[Bootstrap Files] 과 [Setup1 Files] 에 있는 종속파일들을 모두 인스톨 팩토리에서 dll 파일에 추가 합니다.
[Bootstrap Files] 에는 기본적으로 운영체제에 영향을 가지고 있는 중요파일들입니다.
함부로 고치시진 마시구요, 배포판을 제작하는 사양이 윈98이라면 설치할 파일이 신버젼이면  겹쳐쓰기하셔도 무방하지만, 만일 상위버젼 NT/XP 등에서 제작시엔 이렇게 하시면 해당컴퓨터에 문제가 발생합니다.
부득이 상위버젼에서 제작을 해야 하는 상황이시라면 설치할 파일이 있을 경우 설치안함 으로 해두십시요.
대표적으로, Oleaut32.DLL 이 이에 해당하는데 이 파일이 업그레이드되버리면 윈도우98 사용자는 익스플로어 새창뜨기가 안되는 문제가 발생합니다.
그후 (DLLSelfRegister) 라고 된건 서버등록 , (TLBRegister) 라고 된건 타입 등록으로 설정 하시면 됩니다. 
설치 폴더는 시스템 폴더로 하면 됩니다. 
그리고 데이터 베이스를 사용하면 (MSDAOPath) 라는 것이 보일 것입니다. 
이건 자신의 컴퓨터에서 파일 검색을 통하여 해당 파일이 어디에 있는지 확인해 본 후 
그 위치를 지정하시면 됩니다 
예를 들어 DAO360.DLL 파일은  설치위치를 {CommonFiles}\Microsoft Shared\DAO  이렇게 하심 됩니다.
DLL 이나 OCX 등... 이런 종속 파일들은 현재 자신의 컴퓨터에서 존재하는 위치를 참고하여 설정 하면 되더군요.
그리고 설정에서 배포 마법사로 만들었을때 $(Shared) 라고 되어 있다면 이건 공유 파일로 등록한다는 것입니다.
공유 파일이란 다른 프로그램과 함께 해당 종속파일개념으로 사용 하겠다는 뜻이죠.
저는 모든 종속 파일에 공유로 설정을 하였으며 제거시 그냥 놔두기하도록 하였습니다
이렇게 되어 있다면 해당 종속 파일을 서버 등록하며 공유로 한다는 뜻입니다.. 
배포 마법사로 만들었을때 서버 등록을 하라고 되어있는 파일을 서버등록 설정하지 않고 설치파일을 만들면
그 설치 파일로 설치했을때 프로그램이 오류가 나더군요...
배포 마법사로 만든후 그 셋업 리스트의 요구대로 하시기를 추천 합니다..


마지막으로 설치화일 만들기 버튼만 누르면 끝!


----------------------------------------

다시 한번 김재우님께 감사드립니다~ ^^