********************************************** * QuickTime 5 Install/Archive Package Format * ********************************************** - values use big endian (network) byte order - general terms: integer = signed value - general values: byte = 8-bit value; short/word = 16-bit value; long = 32-bit value - octal values: base-8 long unsigned values (values containing 8 and 9 are invalid) - atom offsets: values relative to atoms only and are used to skip to the next atom - long mac file version: byte hex version + byte hex revision + byte hex revision stage + byte hex non-final number - mac version revision stages: development = 0x20 ; alpha = 0x40 ; beta = 0x60 ; release = 0x80 FILE INFO Suffix = ".pkg"; Mac OS Type = "pack"; Mac OS Creator = "qtup"; MIME="application/x-quicktime-install-package" Standard single fork binary file that only uses a resource fork on HFS/HFS+ volumes to store mac specific file info. Unknown atoms can be safely skipped over, atoms can be in any order, all lowercase long ASCII text strings used for atom names/types are reserved for use by Apple and packages can contain multiple file atoms. The format is limited to a total size of 2^32 bytes (< 4.3 GB). FILE CONTAINER/HEADER * 8+ bytes package container atom = long unsigned offset + long ASCII text string 'pckg' * 8+ bytes optional package file name atom = long unsigned offset + long ASCII text string 'pnam' -> name of this file = ASCII text string * 8+ bytes optional package title name atom = long unsigned offset + long ASCII text string 'punm' -> display name = ASCII text string * 8+ bytes optional target os atom = long unsigned offset + long ASCII text string 'tos ' -> 3 bytes os type = 24-bit ASCII text string - OS types are Mac OS = 'mac'; Mac OS X = 'osx'; MS 32-bit Windows = 'win' * 8+ bytes optional target language atom = long unsigned offset + long ASCII text string 'lang' -> 2 bytes language code = short ASCII text string - some language codes are English - North American = 'us'; English - British = 'uk' - some language codes are German = 'de'; French = 'fr'; Italian = 'it' * 8+ bytes optional package task atom = long unsigned offset + long ASCII text string 'pact' -> 4 bytes system code = long ASCII text string - a system code for Restart = 'rsrt' * 8+ bytes optional license atom = long unsigned offset + long ASCII text string 'lice' * 8+ bytes optional license maintainer atom = long unsigned offset + long ASCII text string 'lcmn' -> 4 bytes company code = long ASCII text string - a company code for Apple = 'appl' * 8+ bytes optional license ID atom = long unsigned offset + long ASCII text string 'lcid' -> 4 bytes unique ID = long integer * 8+ bytes optional license language atom = long unsigned offset + long ASCII text string 'lang' -> 2 bytes language code = short ASCII text string - some language codes are English - North American = 'us'; English - British = 'uk' - some language codes are German = 'de'; French = 'fr'; Italian = 'it' * 8+ bytes optional license agree atom = long unsigned offset + long ASCII text string 'lcag' -> button name = ASCII text string * 8+ bytes optional license disagree atom = long unsigned offset + long ASCII text string 'lcdg' -> button name = ASCII text string * 8+ bytes license text atom = long unsigned offset + long ASCII text string 'lctx' -> user viewable text = ASCII text dump * 8+ bytes file atom = long unsigned offset + long ASCII text string 'file' * 8+ bytes compression atom = long unsigned offset + long ASCII text string 'comp' -> 4 bytes compression code = long ASCII text string - a compression code for Deflate = 'zlib' * 8+ bytes optional version atom = long unsigned offset + long ASCII text string 'vers' -> 4 bytes mac file version = long hex value (see above) * 8+ bytes optional file modified date atom = long unsigned offset + long ASCII text string 'fmdt' -> 4 bytes mac file date = long unsigned value in seconds since beginning 1904 to 2040 * 8+ bytes displayed file name atom = long unsigned offset + long ASCII text string 'fnam' -> displayed file name = ASCII text string * 8+ bytes unpacked file name atom = long unsigned offset + long ASCII text string 'unam' -> actual file name = ASCII text string * 8+ bytes file creator atom = long unsigned offset + long ASCII text string 'fcrt' -> 4 bytes mac os creator code = long ASCII text string * 8+ bytes file type atom = long unsigned offset + long ASCII text string 'ftyp' -> 4 bytes mac os type code = long ASCII text string * 8+ bytes location atom = long unsigned offset + long ASCII text string 'loca' -> 4 bytes install location code = long ASCII text string - some location codes are qt app directory = 0x7174C420 ; system directory = 'macs' - some location codes are system init directory = 'extn' ; qt system directory = 'qtex' - some location codes are web browser directories = 0xC46E6574 ; system cdev directory = 'ctrl' - some location codes are control strip folder = 'sdev' ; loc. manager folder = 'walk' - some location codes are mac os runtime java folder = 0x6D726AC4 ; os x qt system directory = 'qt3c' * 8+ bytes installer action atom = long unsigned offset + long ASCII text string 'inac' -> 4 bytes installer action code = long ASCII text string - some installer action codes are plain file = 'file' ; system add-on = 'init' - some installer action codes for system component = 'thng' * 8+ bytes data fork atom = long unsigned offset + long ASCII text string 'dfrk' -> 4 bytes uncompressed size = long unsigned value -> compressed data = hex dump * 8+ bytes mac resource fork atom = long unsigned offset + long ASCII text string 'rfrk' -> 4 bytes uncompressed size = long unsigned value -> compressed data = hex dump