수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1621015
  • Today | 395
  • Yesterday | 482

3 Articles, Search for 'Windows CE'

  1. 2007/01/09 Windows CE용 CAB 파일 만드는 법 (3)
  2. 2007/01/09 Windows CE용 CAB 파일 만드는 법 (2)
  3. 2007/01/09 Windows CE용 CAB 파일 만드는 법 (1)
Embedded2007/01/09 09:17

Windows CE용 CAB 파일 만드는 법 (3)

고수닷넷 - Mono님

.INF 파일 만들기(2)


앞에서 살펴본 1~5 섹션과 연계해서 그 내용들을 기억하기 바란다. 이들 각 섹션들은 대부분 연관성 있게 돌아가므로 한 곳에서 잘못된 정보를 입력하게 되면, CAB 파일이 자기가 원하는 대로 만들어지지 않을 것이기 때문이다.

그러면 이제 남은 CopyFiles, AddReg, CEShortcuts, SourceDisksNames, SourceDisksFiles, DestinationDirs 섹션들에 대해 살펴보기로 하자.


6. CopyFiles 섹션

[DefualtInstall] 섹션에 있던 Copyfiles 키의 타겟 장치에 복사할 기본파일들을 기술한다.

간단히 예를 살펴보면,


[DefaultInstall]

CopyFiles = CopyToInstallDir


[CopyToInstallDir]

"Sample.dat","Help.dat",,0x00000001

"Sample.wav","Help.wav",,0x80000000


. "Sample.dat"나 "Sample.wav"는 복사될 파일명을 지정한다. 지정한 이름으로 복사를 한다.

. "Help.dat"나 "Help.wav"는 원본파일명을 지정한다. 복사될 복사본의 원본 파일명이 된다. 만약 미지정시에는 "Sample.dat"나 "Sample.wav" 파일명을 그대로 사용한다.

. 0x00000001이나 0x80000000는 파일이 복사될 때의 옵션이다. 복사될 때의 옵션들에 대해 알아보자.


[ Flag 값 설명 ]

0x00000001(COPYFLG_WARN_IF_SKIP)            에러 발생후에 파일을 스킵(skip) 한다면 사용자에게 경고 메시지를 발생시킨다.

0x00000002(COPYFLG_NOSKIP)                      파일 복사에 대해 사용자가 스킵(skip)할 수 없다.

0x00000010(COPYFLG_NO_OVERWRITE)          파일이 존재하면 엎어 쓸수 없다.

0x00000400(COPYFLG_REPLACEONLY)            파일이 존재하면 복사하려는 파일로 대체한다.

0x20000000(CE_COPYFLG_NO_DATE_DIALOG) 복사하려는 파일보다 현재 파일이 더 최선것이면 복사하지 않는다.

0x40000000(CE_COPYFLG_NODATECHECK)      날짜에 상관없이 파일을 복사한다.

0x80000000(CE_COPYFLG_SHARED)               공유할 DLL의 참조를 만든다.


7. AddReg 섹션

[DefaultInstall] 섹션의 AddReg 키에 등록된 이름과 같은 이름으로 섹션을 만들어야 한다. 그러므로 [DefaultInstall] 섹션의 이전에 나와서는 안된다.


[DefaultInstall]

AddReg = RegSettings


[Strings]

reg_path = Software\Company\AppName


[RegSettings]

HKLM,%reg_path%,,0x00000000,alpha

HKLM,%reg_path%,test,0x00010001,3

HKLM,%reg_path%\new,another,0x00010001,6


위에서 보여지는 바와 같이 [DefaultInstall] 섹션에 AddReg 키의 값으로 뒤에서 생성할 섹션의 이름을 적어준다. 그런후에 생성할 섹션명으로 섹션을 만들고 AddReg키는 레지스트리에 등록하는 것들을 지정하므로, 그 섹션에 형식에 맞게 값들을 나열해 준다. 하나씩 살펴보면...

HKLM은 레지스트리의 Root를 기술한 것이다. HKLM은 HKEY_LOCAL_MACHINE과 같은 의미이고, HKCR은 HKEY_CLASSES_ROOT, HKCU는 HKEY_CURRENT_USER를 의미한다.

그리고 두번째 값은 하부에 만들어질 Key를 지정하며, %reg_path%는 [Strings] 섹션에서 정의한 상수 값으로 대체한다.

세번째 값은 Value Name을 지정하며, 지정하지 않으면 레지스트리에 "(Default)"로 나타난다.

네번째 값은 레지스트리 Key의 형태를 지정한다. 그 표현할 수 있는 플래그 값들은 아래와 같다.


0x00000002(FLG_ADDREG_NOCLOBBER)       만약 레지스트리가 존재한다면 추가하지 않는다. 이 플래그는 아래의 다른 플래그와 함께 사용될 수 있다.

0x00000000(FLG_ADDREG_TYPE_SZ)             REG_SZ 데이터 타입

0x00010000(FLG_ADDREG_TYPE_MULTI_SZ)   REG_MULTI_SZ 레지스트리 데이터 타입. 이 타입을 설정하면 바로 뒤에 오는 값들에 콤마로 구분하여 그 값들을 나열할 수 있다.

0x00000001(FLG_ADDREG_TYPE_BINARY)       REG_BINARY 데이터 타입. 이 타입을 설정하면 바로 뒤에 오는 값들에 16진수를 나타내는 prefix인 '0x'를 사용하지 않고 필드당 한바이트씩 콤마로 구분하여 숫자 값들로 리스트화 해야 한다.

0x00010001(FLG_ADDREG_TYPE_DWORD)      REG_DWORD 데이터 타입


그리고 마지막으로 alpha, 3, 6등은 해당 키에 입력될 레지스트리 값이다.


8. CEShortcuts 섹션

메뉴에서 프로그램의 간편한 사용을 위한 단축아이콘을 지정한다. 이 섹션명은 DefaultInstall의 CEShortcuts뒤에 있는 이름과 같아야 한다. 그러므로 DefaultInstall Section보다 먼저 지정되면 안된다.

예제로 한번 그 내용들을 살펴보자.


[DefaultInstall]

CEShortcuts = Shortcuts


[DestinationDirs]

Shortcuts = 0,%CE2%\MoNo


[Shortcuts]

MoNo App,0,Mono_pack


먼저 [DefaultInstall] 섹션에 CEShortcuts 키에 이 단축 아이콘 생성을 위한 섹션으로 Shortcuts이란 값을 지정하였고, [Shortcuts]이란 섹션에서 실제 단축 아이콘 생성을 위한 내용들을 입력 한다.


[Shortcuts] 섹션의 첫번째 값은 메뉴에 나타날 단축 아이콘의 이름이다. 주의할 점은 단축 아이콘이라고 해서 뒤에 확장명(.lnk)을 붙이면 안된다는 것이다. 두번째 값은 단축 아이콘의 타입 플래그 값이다. 0이나 빈경우는 파일의 단축아이콘을 나타내고 그 이외에는 폴더를 나타낸다. 세번째 값은 원본파일이나 폴더명을 지정한다. 그리고 마지막 값은 단축아이콘이 만들어질 위치를 지정한다. 만약 위와 같이 마지막 값의 지정이 없다면, [DestinationDirs] 섹션에 있는 현재 섹션 명으로 된 키 값으로 셋팅이 되고, 섹션 명으로 된 키가 없다면 DefaultDestDir 키의 값으로 셋팅이 된다.


9. SourceDisksNames 섹션(필수)

이 섹션에서는 설치 내용이 들어 있는 프로그램의 폴더를 ID로 지정한다.

아래는 SourceDisksNames 섹션에 대한 예이다.


[SourceDisksNames]

1 = ,"Common files",,common


[SourceDisksNames.ARM]

2 = ,"ARM files",,arm


[SourceDisksNames.SH3]

2 = ,"SH3 files",,sh3


[SourceDisksNames] 섹션은 여기서도 [SourceDisksNames.xxx]섹션들의 공통이 되는 부분들을 정의한다. 즉, 어느 CPU에나 상관없이 돌아가는 독립적 파일들을 common이라는 폴더에 있다고 지정한다. 그리고 각각의 섹션들에서 해당 CPU에 맞게 CAB파일을  생성하기 위해 해당 폴더를 지정하고 있다.

이들 형식에 대해 간단히 살펴보면, 먼저 1과 2라는 숫자가 보인다. 이는 프로그램의 폴더를 ID로 지정한 것이다. 두번째 값은 소스 폴더에 대한 설명이다. 세번째 값은 지정하지 않으며, 네번째 값은 각각의 소스 폴더를 지정한다. 폴더 지정시에 상대 경로로 해도 되고, 절대 경로로 입력하여도 상관없다.


10. SourceDisksFiles 섹션(필수)

설치시에 사용하게될 파일에 ID를 지정하는 것으로 이 ID는 파일이 들어 있는 폴더의 ID로 SourceDisksNames에서 지정 한것이다. 간단한 예를 들어 보면,


[SourceDisksFiles]

begin.wav = 1

end.wav = 1

sample.hlp = 1


[SourceDisksFiles.SH3]

sample.exe = 2


[SourceDisksFiles.MIPS]

sample.exe = 2\


'=' 앞의 값은 소스 파일의 이름이다. 만약 긴 파일명일 경우엔 ""를 이용하는 것이 좋다. 그리고 '=' 뒤에 오는 값은 [SourceDiskNames] 섹션에서 지정한 폴더에 대한 ID 값이다.



11. DestinationDirs 섹션(필수)

그 동안 긴 여정 이었다. 이 마지막 섹션은 1개의 파일에 대해서 개별적으로 설치되어 들어갈 위치를 지정하는 것이 아니라 한 묶음 전체를 지정하여 설치를 수행하게 된다. 만약 폴더가 다를 경우엔 묶음을 따로 만들어서 다르게 지정해 주어야 한다. 간단한 예를 들어 그 내용을 살펴 보자.


[CopyToInstallDir]

begin.wav = 1

end.wav = 1

...


[CopyToWindows]

...


[DestinationDirs]

CopyToInstallDir    = ,%InstallDir%

CopyToWindows       = ,%CE2%    ; "\Windows"에 복사될 섹션 지정


예제를 보면 [CopyToInstallDir], [CopyToWindows]의 섹션이 있는데 여기엔 설치될 파일들의 묶음이다. 파일의 묶음은 임의로 만들어 지정이 가능하다. [DestinationDirs]에서는 위의 섹션들을 키값으로 하여 설치될 경로를 지정한다.


이렇게 해서 각 섹션별로 그 내용들을 살펴보았다. 이제는 cabwiz.exe를 이용하여 실행시켜보기 바란다. 만약 위의 과정을 제대로 입력하였다면, 완성된 cab 파일이 눈에 보일 것이다. 그렇지 않다면 다시 한번 꼼꼼히 살펴보기 바란다.



* 참고사항 *


; %CE1% \Program Files

; %CE2% \Windows

; %CE3% \Windows\Desktop (not PocketPC or PPC)

; %CE4% \Windows\StartUp

; %CE5% \My Documents

; %CE6% \Program Files\Accessories

; %CE7% \Program Files\Communications

; %CE8% \Program Files\Games

; %CE9% \Program Files\Pocket Outlook (not PocketPC or PPC)

; %CE10% \Program Files\Office (not PocketPC or PPC)

; %CE11% \Windows\Programs (HPC, HPCPro, HPC2000

; %CE11% \Windows\Start Menu\Programs (PocketPC, PPC)

; %CE12% \Windows\Programs\Accessories (HPC, HPCPro, HPC2000)

; %CE12% \Windows\Start Menu\Programs\Accessories (PocketPC, PPC)

; %CE13% \Windows\Programs\Communications (HPC)

; %CE13% \Windows\Start Menu\Programs\Communications (PPC)

; %CE14% \Windows\Programs\Games (HPC)

; %CE14% \Windows\Start Menu\Programs\Games (PPC)

; %CE15% \Windows\Fonts

; %CE16% \Windows\Recent (HPC only)

; %CE17% \Windows\Favorites (HPC)

; %CE17% \Windows\Start Menu (PPC)



정리


이것으로서 .inf 파일을 생성하는 법을 모두 배워 보았습니다. 조금 내용이 따분하고 설명이 부족하여 어렵게 느껴지는 부분이 있더라도 후에 CAB 파일을 만들면서 테스트하다 보면 무슨 말인지 이해가 갈 것입니다. 조금이나마 Cab 파일을 만드는데 도움이 되었으면 하는 바램으로 글을 적었습니다. 오늘 날씨도 무척이나 무덥네요. 시원한 여름 나시기 바랍니다.


새로운 세상을 열어가는 MoNo

e-mail : softmax7@paran.com

http://blog.paran.com/chps74

"Embedded" 카테고리의 다른 글
  • Windows CE용 CAB 파일 만드는 법 (3) (0)2007/01/09
  • Windows CE용 CAB 파일 만드는 법 (2) (0)2007/01/09
  • Windows CE용 CAB 파일 만드는 법 (1) (0)2007/01/09
  • 임베디드 MSN 메신저 서버로의 여행-4 (0)2005/10/08
  • 임베디드 MSN 메신저 서버로의 여행-3 (0)2005/10/08
2007/01/09 09:17 2007/01/09 09:17
Posted by webdizen
Tags CAB, Windows CE
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2564

Leave your greetings.

[로그인][오픈아이디란?]

Embedded2007/01/09 09:15

Windows CE용 CAB 파일 만드는 법 (2)

고수닷넷 - Mono님

.INF 파일 작성하기(1)


앞선 내용에서 살펴보았듯이 CAB 파일을 생성하기 위해서는 .ddf파일과 MakeCab.exe를 이용하여 CAB 파일을 생성하는 방법과 .inf파일과 cabwiz.exe를 이용하여 CAB 파일을 생성하는 방법에 대해 알아봤다.


이번에는 .inf파일을 MakeCab.exe의 실행과정을 거치지 않고, 각 섹션에서 좀더 자세하고 폭 넓은 옵션들을 사용하여, CAB 파일을 생성하는 방법에 대해 알아보겠다.


CAB Wizard는 단 하나의 .inf 파일을 이용하여 각 프로세서나 플랫폼 타입에 따라 여러개의 .cab 파일을 생성한다.


아래는 .inf 파일을 생성하기 위해 반드시 알아둬야 할 섹션들에 대한 설명이다.


[ 섹션 설명 ]

Version : 어플리케이션의 버전과 생성자에 대해 기술한다.

CEStrings : 치환될 어플리케이션과 폴더명을 포함한다.

Strings : 하나 또는 여러개의 정의된 문자열들을 포함하고 있다.

CEDevice : 어플리케이션의 타겟이 될 플랫폼에 대해 기술한다.

DefaultInstall : 어플리케이션이 설치될 기본 경로를 기술한다.

CopyFiles : 목적하는 장치에 복사할 기본적인 파일들을 기술한다.

AddReg : 장치의 레지스트리에 추가할 .cab 파일에 대한 값들과 키들을 포함한다.

CEShortcuts : 장치에 설치할 어플리케이션의 단축 아이콘을 포함한다.

SourceDisksNames: 설치할 어플리케이션이 존재하는 디스크 상의 경로명을 포함한다.

SourceDisksFiles : CAB 파일에 포함할 파일들의 경로와 이름을 포함한다.

DestinationDirs : 목적하는 장치에 어플리케이션을 설치할 경로명과 이름을 포함한다.


그러면 위의 각 섹션들의 작성법을 하나씩 살펴보자.


1. Version 섹션(필수)

Version 섹션은 프로그램 생성자, 설치에 필요한 플랫폼의 정보들을 포함한다.

사용예를 보면,


[Version]

Signature = "$Windows NT$"

Provider = "Monosoft"

CESignature = "$Windows CE$"


. Signature 키는 개발한 PC쪽에 관한 사항으로 개발시스템의 OS에 따라 "$Windows NT$"나 "$Windows 95$"중의 하나의 값을 취한다.

. Provider 키는 어플리케이션을 제작한 회사명이다.

. CESignature 키는 Windows CE에서만 사용된다.


2. CEStrings 섹션(필수)

이 섹션은 치환될 변수에 대해 기술하는 곳으로 기본적으로 설치될 디렉토리와 어플리케이션의 이름들을 포함하고 있다.


[CEStrings]

AppName="MoNo Pack"

InstallDir=%CE1%\%AppName%


. AppName 키는 어플리케이션 이름이다.

. InstallDir 키는 설치될 경로의 기본 이름이다.


위에 보면 %AppName% 라는 특이한 형태를 볼 수가 있다. 이는 바로 앞에서 정의된 AppName 키값으로 치환하겠다는 의미이다. 또한 %CE1%이라는 것이 있는데, 이는 내부적으로 정의된 키값이다. 이에 대해서는 뒤에 설명하도록 하겠다. 참고적으로 %CE1%은 \Program Files를 뜻한다.

이들 CEStrings 섹션에 선언된 키값들은 또 다시 다른 섹션에서 치환되어 사용이 된다.


3. Strings 섹션(옵션)

이 섹션은 하나 또는 그 이상의 문자열(화면에 디스플레이 할 수 있는 문자들) 키들로 정의되어 있다.


[Strings]

Company_name = "Monosoft"

reg_path = "Software\Microsoft\MoNo Pack"


Strings 섹션에 정의된 문자열 키들은 다른 섹션에서 이 키값들의 상수들을 치환하여 사용한다. 상수에 ""표로 문자열을 표기한다.


4. CEDevice 섹션(필수)

이 섹션에서는 어플리케이션의 타켓이 되는 플랫폼에 대해 설명한다. 이 섹션의 모든 키들은 임의적이다. 만약 키가 존재하지 않을 때에는 플랫폼에 대해 체크하지 않고 설치를 한다.


[CEDevice]

[ProcessorType =[processor_type]]

[UnsupportedPlatforms = platform_family_name[,platform_family_name]]

[VersionMin = [major_version.minor_version]]

[VersionMax = [major_version.minor_version]]


위와 같은 형식으로 이 섹션은 정의된다.


. ProcessorType 키는 WinCE API에서 제공되는 SYSTEM_INFO 구조체의 dwProcessorType에 의해 구해지는 값이다.

. UnsupportedPlatforms 키는 지원되지 않는 플랫폼에 대한 리스트이다. 만약 [CEDevice] 섹션에 UnsupportedPlatforms와 다른 [CEDevice.xxx] 섹션에 플랫폼 명이 있다면 xxx 플랫폼에서는 둘다 지원하지 않는 것으로 간주한다.

. VersionMin과 VersionMax 키는 WinCE API에서 제공되는 OSVERSIONINFO 구조체의 Major와 Minor의 값이다. 그 값들은 각각 OSVERSIONINFO 구조체의 dwVersionMinor와 dwVersionMajor 값들 이다.


Application Manager는 지원되지 않는 플랫폼에 대해서는 설치시에 Cab 파일을 해당 장치에 복사하려고 할때 경고메시지를 띄울 것이다.


그럼 예를 들어 살펴 보기로 하자.

[CEDevice] 섹션에 UnsupportedPlatforms으로 Pltfrm1으로 셋팅을 하고 [CEDevice.ARM] 섹션에  UnsupportPlatforms 키값으로 Pltfrm1을 적용한 예와 [CEDevice.SH3] 섹션에 UnsupportPlatforms 키값으로 Pltfrm2를 하나 더 적용한 예이다.


[CEDevice]

UnsupportedPlatforms = Pltfrm1

VersionMin = 2.0

VersionMax = 2.0


[CEDevice.ARM]

ProcessorType = 2577

UnsupportedPlatforms =

VersionMin =

VersionMax =


[CEDevice.SH3]

ProcessorType = 10003

UnsupportedPlatforms = Pltfrm2

VersionMin =

VersionMax =


위와 같이 하게 되면, [CEDevice]에 셋팅된 값들이 [CEDevice.xxx]에 상속된다. [CEDevice.ARM]에서 키에 대한 파라미터값이 변경사항이 없으므로 [CEDevice] 섹션에 값들을 그대로 상속받게 된다. 하지만 [CEDevice.SH3] 섹션에서는 UnspportedPlatforms 키의 값으로 Pltfrm2의 값이 적용이 되어 있다. 그래서 [CEDevice.SH3]는 아래와 같은 의미가 된다.


[CEDevice.SH3]

ProcessorType = 10003

UnsupportedPlatforms = Pltfrm1, Pltfrm2

VersionMin = 2.0

VersionMax = 2.0


5. DefaultInstall 섹션(필수)

이 섹션은 설치할 항목들을 지정하고, 파일복사, 레지스트리 등록을 기본적으로 지정하고 단축아이콘, DLL 설치, DLL등록등의 부가적인 기능을 수행할 수 있다.


[DefaultInstall]

CopyFiles = CopyToInstallDir, CopyToWindows

AddReg = RegSettings

CEShortcuts = Shortcuts


. CopyFiles 키는 설치될 파일이 들어 있는 섹션을 지정한다.

. AddReg 키는 레지스터리 버전정보가 들어 있는 섹션을 지정한다.

. CEShortcuts 키는 단축아이콘을 생성하고자하는 경우 해당 내용이 들어 있는 섹션을 지정한다.


이외에도 CESetupDLL, CESelfRegister등이 있다. CESetupDLL은 설치를 도와줄 DLL을 지정하며, CAB파일이 설치될때 또는 제거될때 작동이 되는 DLL이다. 이것은 반드시 [SourceDisksFiles] 섹션에 포함되어 배포되는 DLL이어야 한다. CESelfRegister는 레지스트리 등록을 위한 DLL을 지정하며, 외부호출이 가능한 컴포넌트 오브젝트 모델(COM) 함수들( DllRegisterServer, DllUnregisterServer)을 통해 수행된다. 그리고 [SourceDisksFiles] 섹션에서 등록할 파일들을 지정해야 한다. 인스톨하는 동안 만약 DllRegisterServer 함수가 호출에 실패하게 되면, 실패한 파일들을 제거하는 할때에 DllUnregisterServer도 호출되지 않을 것이다.


정리


우리는 지금까지 5가지의 섹션들에 살펴보았다. 다음번에는 CopyFiles, AddReg, CEShortcuts, SourceDisksNames, SourceDisksFiles, DestinationDirs 등에 대해서 살펴보고자 한다. 부디 Cabinet 파일을 생성하는데 있어 많은 도움이 되었으면 하는 바램이다.


┏┓┏┓♡━━┓┏━━┓┏━━┓┏┓┏┓

┃┗┛┃새로운 세상을 열어가는 MoNo ☆┃

┃┏┓┃┃┗┛┃┃┗┛┃┃┗┛┃┃┗┛┃

┃♡┃┃E-mail : softmax7@paran.com┏┛

┗┛┗┛┗┛┗┛┗┛♡♡┗┛♡♡♡┗┛

♡♡♡ http://blog.paran.com/chps74

"Embedded" 카테고리의 다른 글
  • Windows CE용 CAB 파일 만드는 법 (3) (0)2007/01/09
  • Windows CE용 CAB 파일 만드는 법 (2) (0)2007/01/09
  • Windows CE용 CAB 파일 만드는 법 (1) (0)2007/01/09
  • 임베디드 MSN 메신저 서버로의 여행-4 (0)2005/10/08
  • 임베디드 MSN 메신저 서버로의 여행-3 (0)2005/10/08
2007/01/09 09:15 2007/01/09 09:15
Posted by webdizen
Tags CAB, Windows CE
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2563

Leave your greetings.

[로그인][오픈아이디란?]

Embedded2007/01/09 09:14

Windows CE용 CAB 파일 만드는 법 (1)

고수닷넷 - Mono님

CAB 파일 생성하기


이번에는 개발후에 가장 많이 사용하는 Cabwizard tool에 대해 설명하고자 합니다. 원활한 진행을 위해 아래에서 부터는 존댓말을 생략토록 하겠습니다.


Embedded Visual Tools에는 기본적으로 Cabwizard tool을 제공한다. Cabwizard tool에 포함된 파일들은 CABWIZ.DDF, CABWIZ.EXE, MAKECAB.EXE등이 있으며, 번들로 제공이 된다. 기본적으로 eVT 3.0이나 eVC 4.0을 인스톨 할 경우 아래와 같은 경로에 해당 파일들이 존재한다.


[ 경로 ]

eVT 3.0 : C:\Windows CE Tools\wce300\MS Pocket PC\support\ActiveSync\windows ce application installation\cabwiz

eVC 4.0 : C:\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Tools


PocketPC에 대한 경로이지만 다른 CPU의 support 디렉토리나 Tools 디렉토리에도 존재한다. 어차피 어떤 것을 사용해도 동일하므로, 위의 경로만 예로 들었다.


위에 소개된 3개의 파일들에 대해 간략하게 설명하자면,


CabWiz.ddf - CAB 파일을 작성하기 위한 템플릿 지시문 파일

CabWiz.exe - 명령 파일을 매개 변수로 사용하고 프로그램 파일 및 설치 명령이 들어 있는 .cab 파일을 작성하는 명령줄 유틸리티(자세한 내용은 SDK 도움말 문서의 "Using CABWiz" 항목을 참조)

MakeCab.exe - CAB 파일을 생성


위와 같다. 이들 각각에 대해 좀더 자세히 알아보자.


1) CabWiz.ddf

CabWiz.ddf는 위에서도 설명했듯이 CAB 파일 생성을 하기 위한 템플릿 지시문 파일이다. .inf 파일을 수정하거나 Support 디렉터리의 컨트롤에 디지털 서명을 하려면 프로젝트의 .ddf 파일을 수정해야 한다. 그리고 .inf 파일에 추가된 모든 파일이 .ddf 파일에도 추가되었는지 또는 이 파일들이 설치에 사용될 수 없는지를 확인해야 한다. 다음은 CabWiz.ddf 파일의 내용이다.


;

; cabwiz.ddf

;

; Template directive file to create the CAB file

;


.Set Cabinet=ON

.Set Compress=OFF                     ; 압축과 관련된 것으로 Smart Phone 이외에는 제공되지 않는다.

.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                      ; .cab 파일에 필요한 최대 크기의 공간을 잡는다.

.Set ReservePerCabinetSize=0        ; 디지털 서명에 필요한 공간을 남겨 놓는다.

.Set ReservePerDataBlockSize=0

.Set ReservePerFolderSize=0

.Set UniqueFiles=OFF


.Set CabinetNameTemplate=Sample.cab ; 이 부분은 cabwiz.ddf 예제파일에는 없다.(추가한 내용) 생성될 CAB파일 명을 입력한다.

.Set DiskDirectory1=sample      ; sample 디렉토리를 생성한다.

sample.exe                          ; sample.cab 파일에 포함될 파일들(sample.exe, sample.dll, sample.xml)

sample.dll

sample.xml

.Set DiskLabel1=Setup           ; 디스크 라벨을 Setup으로 한다.


;

; to be filled out by the CABWIZ.exe program

;.Set InfFileName=

;.Set RptFileName=

;.Set CabinetName1=

;

; followed by the list of files



주석을 달아 놓았으므로 별도의 설명은 하지 않겠다. 위의 항목들을 입력하고 cabwiz.exe를 실행하지 않고 직접 MakeCab.exe 파일을 호출하여 CAB파일을 생성한다. 커맨드 창에서

 MakeCab.exe /f cabwiz.ddf

와 같이 입력하면, sample 폴더가 생성이 되고, 이 폴더안에 sample.exe, sample.dll, sample.xml을 포함하는 Sample.cab이 생성이 된다.


2) MakeCab.exe


<1) CabWiz.ddf>에서 사용법에 대해 설명하였으므로 별도의 설명을 하지 않겠다.


3) CabWiz.exe

Windows CE CAB Wizard를 이용하여 CAB파일을 생성하는 방법이다. 사용법은 아래와 같다.

사용법 : inf_file [/dest dest_dir] [/err err_file] [/cpu cpu_type [cpu_type]]

- inf_file : CAB Wizard Setup에서 사용되는 필요한 정보를 담고 있는 INF의 절대 경로(파일명, 확장자 포함)

- dest_dir : 생성될 CAB 파일들을 저장할 위치(절대 경로)

- err_file : 에러 파일 명

- cpu_type : INF 파일내에서 지정한 CPU 타입들


사용예 :

cabwiz.exe  "c:\sample.inf"  /err error.err  /cpu arm sh3

위의 예에서 보듯이 CabWiz.exe로 CAB 파일을 만들기 위해서는 반드시 .inf 파일이 존재해야 한다. .inf 파일은 직접 만들어서 사용을 해도 되지만 이는 .inf 파일에 대해 잘 아는 경우에나 할 수 있는 방법이다. 간단하게는 위에 MakeCab.exe /f cabwiz.ddf로 CAB파일을 생성할때 .inf파일도 함께 생성이 된다. 그 .inf 파일을 이용하여 CAB 파일을 생성하면 된다.


다음 "Windows CE용 CAB 파일 만드는 법 (2)"에는 .inf 파일을 직접 에디트 창을 열어 생성하는 방법과 옵션들에 대해 설명하도록 하겠다.



정리

다 아는 내용을 적어서 다소 따분함을 느끼신 분들도 있으실 줄 압니다. 하지만 다시 짚고 넘어가는 차원에서 심심풀이로 한번 보아주십시오. 다음부터 설명할 .inf 파일 생성 방법에서는 좀 더 알차고 유용한 정보들을 가지고 오겠습니다.

"Embedded" 카테고리의 다른 글
  • Windows CE용 CAB 파일 만드는 법 (3) (0)2007/01/09
  • Windows CE용 CAB 파일 만드는 법 (2) (0)2007/01/09
  • Windows CE용 CAB 파일 만드는 법 (1) (0)2007/01/09
  • 임베디드 MSN 메신저 서버로의 여행-4 (0)2005/10/08
  • 임베디드 MSN 메신저 서버로의 여행-3 (0)2005/10/08
2007/01/09 09:14 2007/01/09 09:14
Posted by webdizen
Tags CAB, Windows CE
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2562

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이 곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 확장 update
  • Multidimensional
  • CodeIgniter
  • 교착상태
  • 강원대학교
  • 몽마르뜨언덕
  • 오르세미술관
  • 음악
  • 캐시 적종
  • ie
  • 전자제품
  • firefox1.5
  • 안내도
  • Hooking
  • 게스트하우스
  • OLE DB
  • 학군단
  • 환경
  • Delayload
  • NTFS

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 11/21
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.