Aby złożyć plik instalacyjny CAB, można posłużyć się płatnym oprogramowaniem w stylu
WinCE CAB Manager, można jednak posłużyć się darmowym narzędziem od samego
Microsoftu:
Windows CE CAB Wizard, które można znaleźć w załączniku do tego opisu.
CAB Wizard jest narzędziem, który na podstawie dostarczonego pliku
*.inf tworzy plik instalacyjny. W skład pakietu wchodzi również małe narzędzie o nazwie
Cabinet Maker, które również przydaje się w pewnych sytuacjach (np. gdy chcemy utworzyć plik CAB z naszymi ustawieniami poczty itp.).
CAB Wizarda wywołujemy z linii poleceń:
Usage: Cabwiz inf_file [/dest dest_dir] [/err err_file] [/nouninstall]
[/prexml xml_file] [/postxml xml_file] [/cpu cpu_type [cpu_type]]
[/platform platform_name] [/compress]
inf_file INF source file to use
dest_dir absolute dest dir for CAB files
err_file error file
xml_file extra xml to pre/append onto _setup.xml
cpu_type cpu types to support in the INF file
platform_name the name of the platform to support in the INF file
compress enables compression of CAB contents
nouninstall do not allow this application to be uninstalled
Jak widać, oprócz źródłowego pliku
*.inf, możemy również podać pliki w formacie
ProvXML, które mogą być wykonane zarówno przed samą instalacją, jak i po jej zakończeniu.
Jak jest zbudowany plik
*.inf? Jest to plik o typowej strukturze
INI, czyli jest podzielony na sekcje, a w każdej z nich mamy pary
zmienna=wartość. Zanim jednak omówimy poszczególne sekcje, przytoczmy makra przydatne przy definiowaniu ścieżek do plików. Używanie tych makr jest o tyle uzasadnione, że w różnych wersjach językowych, same fizyczne katalogi mogą się różnie nazywać - natomiast używając tych makr unikniemy problemów z tym związanych:
Makra ścieżek systemowych:| \ | "root" - katalog główny urządzenia |
| %CE1% | Program Files |
| %CE2% | Windows |
| %CE4% | Windows\StartUp |
| %CE5% | My Documents |
| %CE6% | Program Files\Accessories |
| %CE7% | Program Files\Communication |
| %CE8% | Program Files\Games |
| %CE9% | Program Files\Pocket Outlook |
| %CE10% | Program Files\Office |
| %CE11% | Windows\Start Menu\Programs |
| %CE12% | Windows\Start Menu\Programs\Accessories |
| %CE13% | Windows\Start Menu\Programs\Communication |
| %CE14% | Windows\Start Menu\Programs\Games |
| %CE15% | Windows\Fonts |
| %CE16% | Windows\Recent |
| %CE17% | Windows\Start Menu |
| %CE18% |
Default Volume, czyli "root" urządzenia, katalog "\"
Poniżej pokrótce przytoczę opisy poszczególnych sekcji i ich zawartości, wraz z krótkimi przykładami:
Sekcje pliku INF:| Version | Wydawca aplikacji i jej wersja |
| CEStrings | Definicje nazw aplikacji i katalogów |
| Strings | Definicje innych zmiennych tekstowych |
| CEDevice | Platforma docelowa |
| DefaultInstall | Domyślna instalacja aplikacji |
| CopyFiles | Pliki do skopiowania na urządzenie |
| AddReg | Klucze i wartości, które będą dodane do rejestru |
| CEShortcuts | Skróty, które zostaną utworzone |
| SourceDisksNames | Nazwy i ścieżki do katalogów z plikami źródłowymi |
| SourceDisksFiles | Nazwy i ścieżki do plików źródłowych |
| DestinationDirs | Nazwy i ścieżki katalogów docelowych |
[Version]
Signature = "$Chicago$"
Provider = "utak3r"
CESignature = "$Windows CE$"
[CEStrings]
AppName="Mój super program"
InstallDir=%CE1%\%AppName%
[Strings]
reg_path = Software\utak3r\MySuperApp
VersionMin = 4.0
VersionMax = 5.99
BuildMax = -536870912
[DefaultInstall]
CopyFiles = CopyToInstallDir,CopyToWindows
AddReg = RegSettings
CEShortcuts = Shortcuts
[DefaultInstall]
CopyFiles = CopyToInstallDir
[CopyToInstallDir]
"aplikacja_ok.exe",aplikacja.exe,,0x00000001
"helpik wielki.htm",helpik.htm,,0x80000000
Flagi opisujące zachowanie systemu przy kopiowaniu plików:| COPYFLG_WARN_IF_SKIP | 0x00000001 | Ostrzegaj usera, jeśli w wyniku błędu plik będzie pominięty. |
| COPYFLG_NOSKIP | 0x00000002 | Nie pozwalaj na pominięcie pliku. |
| COPYFLG_NO_OVERWRITE | 0x00000010 | Nie nadpisuj pliku w katalogu docelowym (np. plik konfiguracyjny z poprzedniej wersji programu) |
| COPYFLG_REPLACEONLY | 0x00000400 | Kopiuj plik tylko wtedy, gdy w katalogu docelowym istnieje już taki. |
| CE_COPYFLG_NO_DATE_DIALOG | 0x20000000 | Nie kopiuj, jeśli plik w katalogu docelowym jest nowszy (np. biblioteki) |
| CE_COPYFLG_NODATECHECK | 0x40000000 | Nie sprawdzaj dat przy nadpisywaniu plików |
| CE_COPYFLG_SHARED | 0x80000000 | Twórz referencję do pliku współdzielonego. |
[DefaultInstall]
AddReg = RegSettings
[Strings]
reg_path = Software\utak3r\MojaAplikacja
[RegSettings]
HKLM,%reg_path%,,0x00000000,alpha
HKLM,%reg_path%,test,0x00010001,3
HKLM,%reg_path%\new,another,0x00010001,6
Skróty opisujące gałęzie główne rejestru:| HKCR | HKEY_CLASSES_ROOT |
| HKCU | HKEY_CURRENT_USER |
| HKLM | HKEY_LOCAL_MACHINE |
Flagi oznaczające sposób zachowania systemu przy dodawaniu nowych wpisów do rejestru:| FLG_ADDREG_NOCLOBBER | 0x00000002 | Jeśli klucz istnieje - nie nadpisuj go. Tę flagę można łączyć z poniższymi. |
| FLG_ADDREG_TYPE_SZ | 0x00000000 | Typ REG_SZ. |
| FLG_ADDREG_TYPE_MULTI_SZ | 0x00010000 | Typ REG_MULTI_SZ. Poszczególne stringi przedzielamy przecinkami. |
| FLG_ADDREG_TYPE_BINARY | 0x00000001 | Typ REG_BINARY. Wartości liczbowe, przedzielone przecinkami, jednobajtowe, bez przedrostka 0x. |
| FLG_ADDREG_TYPE_DWORD | 0x00010001 | Typ REG_DWORD. |
[DefaultInstall]
CEShortcuts = Shortcuts
[DestinationDirs]
Shortcuts = 0,%CE11%\MojaAplikacja
[Shortcuts]
Wielka Aplikacja,0,aplikacja.exe
[SourceDisksNames]
1 = ,"Kat1",,.\pliki
[SourceDisksFiles]
aplikacja.exe = 1
helpik.htm = 1
[DestinationDirs]
PlikiGlowne = 0, %InstallDir%
PlikiPomocnicze = 0, %InstallDir%\libs