이 이야기는 WinCE 4.x에서 동작할 App 제작시 배포를 위한 이야기입니다.
(2006년 즈음에 작성했던 내용입니다.)
준비물
Cabwiz.exe (PocketPC Builder인가 거기에 포함되어 있음. eVC엔 없었다는.. =_=)
Cabwiz.ddf
Makecab.exe (Windows 어딘가에 포함되어 있었는지 이미 갖고 있었음. Cabwiz에 필요한 파일)
ezsetup.exe (오픈소스. 구글에서 ezsetup만 치면.. -_-)
Cabwiz.exe와 cabwiz.ddf, Makecab.exe는 같은 경로에 있어야 한다. 쉽게 하려면 네 파일을 모두 설치 패키지 만들 파일이 있는 경로에 같이 두고 진행하는게 좋다.
(.ini든 .inf든 뭔든 한자리에~~ -_-v)
예제를 보면서 따라하기.
example.inf
;————————————————————————————————————
[Version]
Signature = “$Windows NT$” ; 그대로
Provider = “Me” ; 소스 배포하는 사람이나 회사
CESignature = “$Windows CE$” ; 그대로
[CEStrings]
AppName=”ExProgram” ; 프로그램 이름(이나 브렌드 등등)
InstallDir=”\PocketStore\Sample” ; 설치될 위치
Desktop=”\Windows\바탕 화면” ; 단축아이콘을 넣기 위해
[Strings]
Company_name = “Comppp” ; 회사이름이라는데 별 영향없는 듯.(틀림없이 변수이고 필요 없을 것임)
reg_path = “\PocketStore\Sample” ; Registry 경로
[CEDevice] ; 여기 부분을 잘 활용하면 각 CPU에 맞는 버전을 패키징 할 수 있음(현재는 패스. 단일 플랫폼)
UnsupportedPlatforms = Pltfrm1
VersionMin = 2.0
VersionMax = 5.0
[DefaultInstall] ; 설치될 파일들의 목록을 지정하는 부분
CopyFiles = Files.Common ; 기본적으로 파일 리스트
AddReg = RegSettings ; 설치할 때 추가할 레지스트리의 리스트 이름
CEShortcuts = Startmenu, Desktop ; 말 그대로 단축아이콘. 여기서는 변수 이름만 지정하고 [DestinationDirs] 부분에 실제 경로를 기술할 것임
[Files.Common] ; 설치될 파일 리스트. [DestinationDirs] 부분에 실제 경로를 기술할 것임
DataMgrCore.dll,,,0
LOGO.BMP,,,0
THANK.bmp,,,0
Sample.exe,,,0
[CEShortcuts] ; 단축아이콘 부분
CEShortcuts = Startmenu, Desktop
[Startmenu] ; 위에선 변수 선언, 여기에서 세부내용 기술함.
SampleProgram,0,Sample.exe ; Taskbar의 시작프로그램 부분과 바탕화면에 단축아이콘을 넣을 것임
[Desktop]
SampleProgram,0,Sample.exe
[RegSettings] ; HKLM은 레지스트리의 LocalMachine.
HKLM,%reg_path%,Port,0×00000000,80 ; %reg_path% 하위로 %reg_path%\path2 와 같이 경로를 더 둘 수 있음
HKLM,%reg_path%,Server,0×00000000,123.456.789.001
HKLM,%reg_path%,Option1,0×00000000,1
HKLM,%reg_path%,Option2,0×00000000,1
HKLM,%reg_path%,Option3,0×00000000,1
HKLM,%reg_path%,Option4,0×00000000,1
HKLM,%reg_path%,Option5,0×00000000,1
[SourceDisksNames]
1 = ,”Common files”,,D:\Installation ; cab으로 패키징될 Disk 이름
[SourceDisksFiles] ; 위의 [Files.Common]의 내용과 같게 해 주면 간단함.
DataMgrCore.dll = 1
LOGO.BMP = 1
THANK.bmp = 1
Sample.exe = 1
[DestinationDirs] ; 설치될 경로
Files.Common = 0,%InstallDir% ; 위에서 설정한 경로
Startmenu = 0,%CE11% ; 시작프로그램\프로그램
Desktop = 0,%CE3% ; \Windows\바탕화면
;————————————————————————————————————
위와같이 해 주면 되겠다. *.inf는 실제로 cabwiz.exe가 .cab으로 패키징할 내용을 담고 있다. 심사숙고해서 만들길 바란다.
cabwiz.ddf
;————————————————————————————————————
;
; cabwiz.ddf
;
; Template directive file to create the CAB file
;
.Set Cabinet=ON
.Set Compress=OFF
.Set CabinetFileCountThreshold=0 ; no files per cabinet threshold
.Set FolderFileCountThreshold=0 ; no files per folder threshold
.Set FolderSizeThreshold=0 ; no folder size threshold
.Set MaxCabinetSize=0 ; no max size for the cabinet
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0
.Set ReservePerCabinetSize=0 ; for web signing
.Set ReservePerDataBlockSize=0
.Set ReservePerFolderSize=0
.Set UniqueFiles=OFF
.Set DiskDirectory1=.
.Set DiskLabel1=Setup
;
; to be filled out by the CABWIZ.exe program
;.Set InfFileName=
;.Set RptFileName=
;.Set CabinetName1=
;
; followed by the list of files
;————————————————————————————————————
이건 이대로 바꿀 것 없이 그대로 쓰면 된다. 세부적인 내용은 구글신이 알려줄거다.
setup.ini
;————————————————————————————————————
[CEAppManager]
Version = 1.0
Component = Sample_program ; 요게 [Sample_program] 요리에서 설명한다.
[Sample_program]
Description = 주절주절 ; 그냥 이런저런 설명
Uninstall = Sample Program ; 프로그램 추가/제거에 나타나는 이름
CabFiles = sample.cab
;————————————————————————————————————
*.ini는 ezsetup.exe가 cab을 exe로 만들어줄 내용을 담고 있다. 그리고 프로그램추가/제거의 목록에도 나타나게 된다.
.cab 만들기
>> cabwiz sample.inf /err error.txt
이렇게 하면 sample.cab이 만들어진다. 에러나면 error.txt를 보도록
사실 이 .cab만 WinCE PDA에 복사해서 실행하면 설치한다. 그래도 좀 더 폼나는 설치 패키지(PC에서 실행하는)를 만드려면 ezsetup.exe를 사용한다.
.exe 만들기 (설치용 패키지!!)
>> ezsetup -l english -i setup.ini -r ReadMe.txt -e eula.txt -o Setup_Sample.exe
ReadMe.txt는 설치 시작할 때 나오는 글이고, eula.txt는 사용자 약관(동의하나 하는)에 대한 내용이다.
모두 정상작동한다면 Setup_Sample.exe가 멋지게 나올 것이다.
(실제 이 방법으로 한국의 대기업 K사에서 업무용 PDA 프로그램이 배포된다. -_-v)
혹시라도 위의 방법에 대해서 질문이 있는 분은 서슴없이 제게 메일을 주시길. ( icksishu At gmail Dot com )
P.S 사실 위의 내용은 본인이 잊지 않기 위해서 적어둔 것임. -_-;;
출처 : http://defree.co.kr/blog/?p=32
예제파일