**********************************************
* QuickTime 5 Install/Archive Package Format *
**********************************************
- values use big endian (network) byte order
- general terms: integer = signed value
- general values: byte/char/octet = 8-bit value ; short/word = 16-bit value ;
long = 32-bit value
- binary values: base-2 long unsigned values (values from 0 and 1)
- octal values: base-8 long unsigned values (values from 0 through to 7)
- decimal values: base-10 long unsigned values (values from 0 through to 9)
- hexadecimal (hex) values: base-16 long unsigned values
(values from 0 to 9 and A to F)
- 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 ISO language code = short ASCII text string
- some language codes are English - North American = 'us'
- some language codes are 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 ISO language code = short ASCII text string
- some language codes are English - North American = 'us'
- some language codes are 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 local 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
- some location codes are 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
- some location codes are 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
               (
geocities.com/xhelmboyx/quicktime)                   (
geocities.com/xhelmboyx)