PATH Contents > Iceberg Document Format
Iceberg Document Format

Description:

This document describes the document format used by Iceberg for Projects.

Discussion:

Iceberg's document are PropertyList file. Their content can be edited outside Iceberg using a text editor or the PropertyList Editor.app application. An Iceberg's document is structured as the Packages & Metapackages outline view is displaying it.

Project
Hierarchy
Component
Attributes
Components
Component
...
Files
File Item
Documents
Background Image
License
ReadMe
Welcome
Scripts
Additional Resources
Installation Scripts
Requirements
Plugins
Settings
Description
Display Information
Options
Version
Settings

Project

Description:

The first level of the hierarchy describes the Project object.

Discussion:

The Name token is currently only used to have a name for the root object of Packages and Metapackages hierarchy.

Template:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Hierarchy</key>
	<dict>
	</dict>
	<key>Name</key>
	<string>Project</string>
	<key>Settings</key>
	<dict>
	</dict>
</dict>
</plist>

References:

KeyTypeDefault valueDescription
HierarchyDictionaryDescribed belowHierarchy of Metapackages and Packages
NameString
"Project"
Project Object Name
SettingsDictionaryDescribed belowProject Settings


Project > Settings

Description:

This dictionary contains the settings of the Project. They can be set via the Project Settings pane in Iceberg.

Discussion:

N/A

Template:

<key>10.1 Compatibility</key>
<true/>
<key>Build Path</key>
<string>build</string>
<key>Build Path Type</key>
<integer>2</integer>
<key>Comment</key>
<string></string>
<key>Remove .DS_Store</key>
<true/>
<key>Remove .pbdevelopment</key>
<true/>
<key>Remove CVS</key>
<false/>

References:

KeyTypeDefault valueDescription
10.1 CompatibilityNumber
true
Build Packages that can be installed on Mac OS X 10.1 and prior
Build PathString
"build"
Path where the Project needs to be build
Build Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project
CommentString
""
Custom User's note on the project
Remove .DS_StoreNumber
true
Remove every .DS_Store file in the pax archives.
Remove .pbdevelopmentNumber
true
Remove every .pbdevelopment file in the pax archives.
Remove CVSNumber
false
Remove every CVS folder in the pax archives.


Component (Project > Hierarchy)

Description:

This dictionary describes either a Package or a Metapackage. The root item of the project hierarchy is also a component.

Discussion:

Template:

<key>Attributes</key>
<dict>
</dict>
<key>IFPkgFlagPackageSelection</key>
<integer>0</integer>
<key>Name</key>
<string>Iceberg</string>
<key>Status</key>
<integer>1</integer>
<key>Type</key>
<integer>1</integer>

References:

KeyTypeDefault valueDescription
AttributesDictionaryDescribed belowComponent attributes
IFPkgFlagPackageSelectionNumber
N/A
Component selection mode:-1Unselected
0Selected
1Required
NameString
"untitled component"
Component name
StatusNumber
1
Component status:
0
Unselected
1Selected
TypeNumber
N/A
Component type:
0
Metapackage
1Package


Component > Attributes

Description:

This dictionary describes the attributes of a component.

Discussion:

There can be 2 templates of attributes depending on the component type.

Templates:

Package
<key>Files</key>
<dict>
</dict>
<key>Documents</key>
<dict>
</dict>
<key>Scripts</key>
<dict>
</dict>
<key>Plugins</key>
<dict>
</dict>
<key>Settings</key>
<dict>
</dict>

Metapackage
<key>Components</key>
<dict>
</dict>
<key>Documents</key>
<dict>
</dict>
<key>Scripts</key>
<dict>
</dict>
<key>Plugins</key>
<dict>
</dict>
<key>Settings</key>
<dict>
</dict>

References:

KeyTypeDefault valueDescription
ComponentsArrayDescribed aboveList of components of the Metapackage
FilesArrayDescribed belowFiles installed by the Package
DocumentsDictionaryDescribed belowDocuments for the component
ScriptsDictionaryDescribed belowScripts and additional resources of the component
PluginsDictionaryDescribed belowInstaller plugins of the component
SettingsDictionaryDescribed belowSettings of the component


Component > Attributes > Files

Description:

This dictionary describes which files the file archive of the package will contain and the options used to create the archive.

Discussion:

The IFPkgFlagDefaultLocation token needs to point to a folder in the file hierarchy when the package is not an imported package.
The Split Fork operation is made via the /Developer/Tools/SplitForks tool.

Templates:

<key>Compress</key>
<true/>
<key>Hierarchy</key>
<dict>
</dict>
<key>IFPkgFlagDefaultLocation</key>
<string>/</string>
<key>Imported Package</key>
<false/>
<key>Package Path</key>
<string></string>
<key>Package Path Type</key>
<integer>1</integer>
<key>Split Forks</key>
<true/>

References:

KeyTypeDefault valueDescription
CompressNumber
true
Compress the pax archive in zip
HierarchyDictionaryDescribed belowHierarchy of files to install
IFPkgFlagDefaultLocationString
"/"
Default location where the files are to be installed
Imported PackageNumber
false
Is the package an imported Package?
Package PathString""Location of the imported Package
Package Path TypeNumber1Reference Style to the Imported Package (New in 1.1.6)
Split Forks Number
true
Split data and resource forks if needed


Component > Attributes > Files > File Item

Description:

This dictionary describes a file object from the hierarchy of files.

Discussion:

Templates:

<key>Children</key>
<array/>
<key>GID</key>
<integer>80</integer>
<key>Path</key>
<string>Utilities</string>
<key>Path Type</key>
<integer>0</integer>
<key>Privileges</key>
<integer>509</integer>
<key>Type</key>
<integer>1</integer>
<key>UID</key>
<integer>0</integer>

References:

KeyTypeDefault valueDescription
ChildrenArray
N/A
List of File Items included in this Item
GIDNumber
GID of the parent folder
Group ID of the File Item
PathString
N/A
Name or Path of the File Item
Path TypeNumber
N/A
File Path Type:
0
Folder Name
1Global Path
2Relative path to project
PrivilegesNumber
N/A
Unix permissions of the File Item
TypeNumber
N/A
File Item Type:
1
Standard Folder
2Custom Folder
3Real file
UIDNumber
N/A
User ID of the File Item
Search RulesArray
No value
Search Rules for the file item


Component > Attributes > Files > File Item > Search Rule

Description:

This dictionary describes a search rule for a file item.

Discussion:

Search rules are used to create the TokenDefinitions.plist file and the IFPkgPathMappings array for the Info.plist. Search Rules allows you to specify where the installer should look for previous version of a file/bundle.

Templates:

<key>Status</key>
<true/>
<key>Name</key>
<string>Untitled Rule</string>
<key>Settings</key>
<dict>
</dict>

References:

KeyTypeDefault valueDescription
StatusBoolean
true
Status of the rule
NameString
Untitled Rule
name of the rule
SettingsDictionaryDescribe belowSettings of the rule


Component > Attributes > Files > File Item > Search Rule > Settings

Description:

This dictionary describes the settings of a search rule.

Discussion:

There are 5 kinds of search rules:

You can find complete documentation on the 5 kinds of search rules in the Software Distribution documentation on apple.com.

Templates:

See Apple's documentation.

References:

KeyTypeDefault valueDescription
searchPluginString
CheckPath
Rule kind
......
...
Keys/Values depends on the Rule kind


Component > Attributes > Documents

Description:

This dictionary describes all the documents which will be used to customize Installer.app when the package or metapackage are installed.

Discussion:

N/A

Templates:

<key>Background Image</key>
<dict>
</dict>
<key>License</key>
<dict>
</dict>
<key>ReadMe</key>
<dict>
</dict>
<key>Welcome</key>
<dict>
</dict>

References:

KeyTypeDefault valueDescription
Background ImageDictionaryDescribed belowBackground picture information
LicenseDictionaryDescribed belowList of localized licenses
ReadMeDictionaryDescribed belowList of localized ReadMe
WelcomeDictionaryDescribed belowList of localized Welcome


Component > Attributes > Documents > Background Image

Description:

This dictionary describes how and if a custom background image is displayed in Installer.app when the package or metapackage is installed.

Discussion:

The background image will only be displayed if the package or metapackage are not installed as parts of a metapackage.

Templates:

<key>IFPkgFlagBackgroundAlignment</key>
<integer>4</integer>
<key>IFPkgFlagBackgroundScaling</key>
<integer>1</integer>
<key>Mode</key>
<integer>0</integer>
<key>Path</key>
<string></string>
<key>Path Type</key>
<integer>1</integer>

References:

KeyTypeDefault valueDescription
IFPkgFlagBackgroundAlignmentNumber
4
Image alignment:0Center
1Top
2Left Top
3Right Top
4Left
5Bottom
6Left Bottom
7Right Bottom
8Right
IFPkgFlagBackgroundScalingNumber
1
Image scaling:0Proportionnally
1To Fit
2None
ModeNumber
0
Image status:0No image
1Display image
PathString
""
Image path
Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project


Component > Attributes > Documents > License

Description:

This dictionary describes if a license needs to be displayed in Installer.app when the package or metapackage are installed.

Discussion:

The license(s) will only be displayed if the package or metapackage are not installed as parts of a metapackage.

Templates:

<key>International</key>
<dict>
	<key>Keywords</key>
	<dict/>
	<key>Mode</key>
	<integer>0</integer>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
	<key>Template</key>
	<string></string>
</dict>

References:

KeyTypeDefault valueDescription
KeywordsDictionary
Empty
Dictionary of key-values to use for the template
Mode Number
0
License status:0No license
1Display license
2Display template license
PathString
""
License path
Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project
TemplateString
""
License template name


Component > Attributes > Documents > ReadMe

Description:

This dictionary describes if a ReadMe needs to be displayed in Installer.app when the package or metapackage are installed.

Discussion:

The ReadMe will only be displayed if the package or metapackage are not installed as parts of a metapackage.

Templates:

<key>International</key>
<dict>
	<key>Mode</key>
	<integer>0</integer>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
</dict>

References:

KeyTypeDefault valueDescription
ModeNumber
0
ReadMe status:0No ReadMe
1Display ReadMe
PathString
""
ReadMe path
Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project


Component > Attributes > Documents > Welcome

Description:

This dictionary describes whether a custom Welcome needs to be displayed or the default one needs to be used.

Discussion:

A custom Welcome will only be displayed if the package or metapackage are not installed as parts of a metapackage.

Templates:

<key>International</key>
<dict>
	<key>Mode</key>
	<integer>0</integer>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
</dict>

References:

KeyTypeDefault valueDescription
ModeNumber
0
Welcome status:0Default Welcome
1Display custom Welcome
PathString
""
Welcome path
Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project


Component > Attributes > Plugins

Description:

This dictionary describes the plugins that will be use to customize the installation process.

Discussion:

The Plugins won't be used for OS versions prior to 10.4.

Templates:

<dict>
    <key>PluginsList</key>
    <array>
        <dict>
            <key>Path</key>
            <string>Introduction</string>
            <key>Type</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Path</key>
            <string>/This/is/a/path</string>
            <key>Path Type</key>
            <integer>2</integer>
            <key>Status</key>
            <true/>
            <key>Type</key>
            <integer>1</integer>
        </dict>
        <dict>
            <key>Path</key>
            <string>ReadMe</string>
            <key>Type</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Path</key>
            <string>License</string>
            <key>Type</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Path</key>
            <string>Target</string>
            <key>Type</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Path</key>
            <string>PackageSelection</string>
            <key>Type</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Path</key>
            <string>Install</string>
            <key>Type</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Path</key>
            <string>FinishUp</string>
            <key>Type</key>
            <integer>0</integer>
        </dict>
    </array>
</dict>

References:

KeyTypeDefault valueDescription
TypeNumber
0
Plugin type:0Standard plugin
1Custom plugin
PathString
Path to the plugin to add
Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project
StatusNumber
true if the plugin is to be added, false otherwise


Component > Attributes > Scripts

Description:

This dictionary describes the scripts that will be use to customize the installation process and the additional resources used for this.

Discussion:

The Requirements won't be used for OS versions prior to 10.3.

Templates:

Package
<dict>
	<key>Additional Resources</key>
	<dict>
	</dict>
	<key>Installation Scripts</key>
	<dict>
	</dict>
	<key>Requirements</key>
	<array>
	</array>
</dict>

References:

KeyTypeDefault valueDescription
Additional ResourcesDictionaryDescribed belowList of localized additional resources
Installation ScriptsDictionaryDescribed belowScripts run during installation
RequirementsArrayDescribed belowRequirements of the component


Component > Attributes > Scripts > Additional Resources

Description:

This dictionary describes the additional resources which needs to be added to the Resources folder of the package or metapackage.

Discussion:

To add VolumeCheck or InstallationCheck scripts to a package, you need to add them as Additional Resources.

Templates:

<key>International</key>
<array>
	<dict>
		<key>Path</key>
		<string>/Users/stephane/Desktop/SomeFile.txt</string>
		<key>Path Type</key>
		<integer>1</integer>
		<key>Status</key>
		<true/>
	</dict>
</array>

References:

KeyTypeDefault valueDescription
PathString
Path to the file/folder to add
Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project
StatusNumber
true if the file is to be added, false otherwise


Component > Attributes > Scripts > Installation Scripts

Description:

This dictionary describes which and if installation scripts are to be used for the package or metapackage.

Discussion:

The InstallationCheck and VolumeCheck scripts are not listed here. These 2 scripts are probably going to be deprecated and be completely replaced by "Requirements" attributes. To add VolumeCheck or InstallationCheck scripts to a package, you need to add them as Additional Resources.

Templates:

<key>IFInstallationScriptsPostflight</key>
<dict>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
	<key>Status</key>
	<false/>
</dict>
<key>IFInstallationScriptsPostinstall</key>
<dict>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
	<key>Status</key>
	<false/>
</dict>
<key>IFInstallationScriptsPostupgrade</key>
<dict>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
	<key>Status</key>
	<false/>
</dict>
<key>IFInstallationScriptsPreflight</key>
<dict>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
	<key>Status</key>
	<false/>
</dict>
<key>IFInstallationScriptsPreinstall</key>
<dict>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
	<key>Status</key>
	<false/>
</dict>
<key>IFInstallationScriptsPreupgrade</key>
<dict>
	<key>Path</key>
	<string></string>
	<key>Path Type</key>
	<integer>1</integer>
	<key>Status</key>
	<false/>
</dict>

References:

KeyTypeDefault valueDescription
PathString
""
Script path
Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project
StatusNumber
false
true if the script is to be used, false otherwise


Component > Attributes > Scripts > Requirements

Description:

This dictionary describes the installation requirements or recommendations of the component.

Discussion:

The requirements mechanism is only available on Mac OS X 10.3 and later.

Templates:

<dict>
	<key>AlertDialog</key>
	<dict>
		<key>International</key>
		<dict>
			<key>MessageKey</key>
			<string>Version is too old</string>
			<key>TitleKey</key>
			<string>Incorrect version</string>
		</dict>
	</dict>
	<key>LabelKey</key>
	<string>Sample requirement</string>
	<key>Level</key>
	<integer>0</integer>
	<key>SpecArgument</key>
	<string>fr.whitebox.pkg.iceberg</string>
	<key>SpecProperty</key>
	<string>IFMajorVersion</string>
	<key>SpecTag</key>
	<integer>4</integer>
	<key>SpecType</key>
	<string>package</string>
	<key>Status</key>
	<true/>
	<key>TestObject</key>
	<integer>10</integer>
	<key>TestOperator</key>
	<string>>=</string>
</dict>

References:

KeyTypeDefault valueDescription
AlertDialogDictionaryMessage strings dictionary
MessageKeyString
""
Message of the warning dialog
TitleKeyString
""
Title of the warning dialog
LabelKeyString
"untitled requirement"
Short description of the requirement
LevelNumber
0
Requirement level:0requires
1recommends
SpecArgumentString
""
Specification argument
SpecPropertyString
Specification property
SpecTagString
4
Specification tag:4package
2gestalt
0bundle
5plist
1file
SpecTypeString
"package"
Specification type:package
gestalt
bundle
plist
file
StatusNumber
true
Requirement status: true to create it, false otherwise
TestObjectNSObject
""
Object to compare the Specification property with
TestOperatorString
>=
Operator to use to compare the TestObject and the SpecProperty


Component > Attributes > Settings

Description:

This dictionary describes the settings related to information displayed in the Finder Info window and in Installer.app when the component is installed.

Discussion:

There are 2 possible formats depending on whether the component is a package or a metapackage. Metapackages don't have Options.

Templates:

Package
<key>Description</key>
<dict>
</dict>
<key>Display Information</key>
<dict>
</dict>
<key>Options</key>
<dict>
</dict>
<key>Version</key>
<dict>
</dict>

Metapackage
<key>Description</key>
<dict>
</dict>
<key>Display Information</key>
<dict>
</dict>
<key>Version</key>
<dict>
</dict>

References:

KeyTypeDefault valueDescription
DescriptionDictionaryDescribed belowComponent description
Display InformationDictionaryDescribed belowList of localized display information
OptionsDictionaryDescribed belowPackage options
VersionDictionaryDescribed belowComponent version


Component > Attributes > Settings > Description

Description:

This dictionary is used to build the .info file or Description.plist file for a package or metapackage.

Discussion:

The IFPkgDescriptionVersion and IFPkgDescriptionDeleteWarning are still not used by Installer.app.

Template:

<key>International</key>
<dict>
	<key>IFPkgDescriptionDeleteWarning</key>
	<string></string>
	<key>IFPkgDescriptionDescription</key>
	<string></string>
	<key>IFPkgDescriptionTitle</key>
	<string>Iceberg</string>
	<key>IFPkgDescriptionVersion</key>
	<string>1.0</string>
</dict>

References:

KeyTypeDefault valueDescription
IFPkgDescriptionDeleteWarningString
""
Reserved for future usage
IFPkgDescriptionDescriptionString
""
Short description of the component displayed in the Custom installation mode
IFPkgDescriptionTitleStringComponent name
IFPkgDescriptionVersionString
"1.0"
Reserved for future usage


Component > Attributes > Settings > Display Information

Description:

This dictionary describes information displayed in the Finder Information window and in the Finder.

Discussion:

N/A

Template:

<key>CFBundleGetInfoString</key>
<string>Iceberg 1.0 Copyrights (c) 2004 Stéphane Sudre</string>
<key>CFBundleIdentifier</key>
<string>fr.whitebox.pkg.Iceberg</string>
<key>CFBundleName</key>
<string>Iceberg</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIconFile Path Type</key>
<integer><1/integer>

References:

KeyTypeDefault valueDescription
CFBundleGetInfoStringString
"%%PROJECT_NAME%% 1.0 Copyrights (c) %%YEAR%%"
Finder info string
CFBundleIdentifierString
"%%COMPANY_PACKAGE_IDENTIFIER%%.%%PROJECT_NAME%%"
Bundle identifier
CFBundleNameStringComponent nameBundle name
CFBundleShortVersionStringString
"1.0"
Bundle version
CFBundleIconFileString
""
Path to the custom icon file (.icns format)
CFBundleIconFile Path TypeNumber
N/A
File Path Type:1Global Path
2Relative path to project


Component > Attributes > Settings > Options

Description:

This dictionary describes the options for a Package.

Discussion:

As most of the options are not supported by Mac OS X 10.1, Iceberg will try to set the most appropriate options when it builds 10.1 compatible packages.

Template:

<key>IFPkgFlagAllowBackRev</key>
<false/>
<key>IFPkgFlagAuthorizationAction</key>
<integer>2</integer>
<key>IFPkgFlagFollowLinks</key>
<false/>
<key>IFPkgFlagInstallFat</key>
<false/>
<key>IFPkgFlagIsRequired</key>
<false/>
<key>IFPkgFlagOverwritePermissions</key>
<false/>
<key>IFPkgFlagRelocatable</key>
<false/>
<key>IFPkgFlagRestartAction</key>
<integer>0</integer>
<key>IFPkgFlagRootVolumeOnly</key>
<true/>
<key>IFPkgFlagUpdateInstalledLanguages</key>
<false/>

References

KeyTypeDefault valueDescription
IFPkgFlagAllowBackRevNumber
false
Installer shall allow installing an earlier version of the package.
IFPkgFlagAuthorizationActionNumber
0
The authorizations the installation requires to proceed:0No Authorization Required
1Admin Authorization
2root Authorization
IFPkgFlagFollowLinksNumber
false
The installation does not replace symbolic links but resolves them and goes on the installation at the location links.
IFPkgFlagInstallFatNumber
false
The installation install all the binaries for multiple platforms.
IFPkgFlagIsRequiredNumber
false
The package is a required component for the installation.
IFPkgFlagOverwritePermissionsNumber
false
The permissions of directories in the installation overwrites the ones of the corresponding directories if they already exist in the destination volume.
IFPkgFlagRelocatableNumber
false
The user can choose the installation destination.
IFPkgFlagRestartActionNumber
0
The installation behavior after installation is completed:0No Restart Required
1Recommended Restart
2Required Restart
3Shutdown Required
4Logout Required
IFPkgFlagRootVolumeOnlyNumber
false
The installation destination is limited to the boot volume.
IFPkgFlagUpdateInstalledLanguagesNumber
false
The installation only updates the localizations already installed.


Component > Attributes > Settings > Version

Description

This dictionary describes the major and minor versions of the package or metapackage.

Discussion

Starting with Mac OS X 10.3, if you have a required package in a metapackage and you're installing the same metapackage and you switch to custom installation mode, the required metapackage can be disabled. Increasing the package version will insure the package to be required again.

Template

<key>IFMajorVersion</key>
<integer>1</integer>
<key>IFMinorVersion</key>
<integer>0</integer>

References

KeyTypeDefault valueDescription
IFMajorVersionNumber
1
Major version
IFMinorVersionNumber
0
Minor version


Author: Stéphane Sudre