As Mac OS X admins, it is important to know why and how to package up software. Packaging is a generally simple process that will make software deployment easier. ARD (Apple Remote Desktop) and LANDesk require software be in be in the .pkg format so it uses the Apple Installer.app (or command line version). This makes it simple to push new software or updates to many Macs remotely. If you are using volume licensing, you can also usually include the license for the packaged software in your package so you don’t have to visit each machine to enter a serial number. Also, in my area (Chemistry dept.), we have some X11 apps that require extensive setup such as command line install, updates, PATH setup and I bundle in GUI icons to launch those apps using XDroplets (described below). This post is does not aim to be a how-to, but rather a list and description of different applications used for packaging and tools used in conjunction with packaging.
Types of Packages
There are three main types of packages:
This is a regular, “Single Package” that is used most of the time. You would use this for a single software package or common set of files (payload). This can also be used for a “payload-less” package which basically means no files are actually included with the package; the package can be used as a vehicle to run shell script(s) in the pre or post [install|upgrade|flight] scripts.
A metapackage is basically multiple single packages. Instead of making a super single package that includes everything you want to distribute, you can just take existing packages you already created or licensed and bundle them together to deploy a bunch of software with less steps. Metapackages are also used to allow the user to customize what gets installed.
Similar to a metapackage but provides more control over the UI and control over requirements. Distribution Projects are only compatible with Tiger or later.
For more detail about the different types of packages, see Apple’s documentation.
PackageMaker The main tool available is PackageMaker from Apple. This is included with the Developer Tools (Xcode) and Apple Remote Desktop 3. Xcode can be downloaded from http://developer.apple.com and is also included with OS X on the discs but is not installed by default. Package Maker can be used to create Single Packages, Metapackages and Distribution packages. With this tool, you basically create a package directory that contains the folder structure and payload (files/folders) that you want to install. Full instructions are available here. Here is another manual.
Iceberg is probably the most popular alternative to PackageMaker for creating packages and metapackages. It is free and the source code can be downloaded. Iceberg has the advantage of being able to create an installer without creating a “dummy” folder structure. You can select any file(s) or folder(s) on your HD and they will be installed in the same hierarchy as the source.
Composer Standard Edition
Composer is a commercial tool from JAMF Software, the makers of the Casper Suite. Composer takes a snapshot of your filesystem, you install your software and make any necessary changes then Composer takes another snapshot and compares the difference. You are then shown the files that have changed or have been added and given the opportunity to tweak what will be included with the package before it is built.
New kid on the block. I haven’t heard of this until researching for this article but it appears to be a snapshot type builder similar to Composer.
License: $29.99 (15 day trial available)
Documentation – Included with app.
OS X Packager
This is a little known app from Ohio State that was mentioned on the MacEnterprise mailing list. With this nifty little app, you can drag a well-behaved .app or .prefpane into its window and click on button and it will create a package of it and contain it within a disk image. This will not work as a general packaging utility, only for application bundles or Preference Panes. Useful if you want something small packaged for use with ARD or as part of a metapackage.
Download (direct link)
Another snapshot package maker from the creator(s) of DeployStudio. What is nice about this utility is that you can select which folders you want to create the snapshot of. So if you have an idea of where an item will be installed, you don’t have to snapshot the whole drive. However, you can not customize the package before it is created and it will name the Identifier as com.deploystudio.diffpackagemaker. So it is best to open the resulting package in PackageMaker and customize and personalize as needed.
Command Line Packaging Tools
The CLI version of PackageMaker which can be used in scripts. It is also included with Xcode (in /Developer/Tools/). Includes a snapshot option.
Documentation – man packagemaker
While this is not a packaging application, it is frequently used when packaging. This is a command line utillity for detecting filesystem changes to help you determine which files have changed. For instance, if you entered a serial number for an application and can’t figure out where the app put that file, you can run logGen before and after and then run it a third time to log the changes to a file.
Office 2004 PackageMaker
One of the long standing pains in the ass is that MS Office on the Mac uses the Vise installer for updates. Vise installers do not work with ARD so Mac admins have had to find creative ways to handle Office updates across their enterprise. The most creative way I have seen is this perl script on MacEnterprise that basicially looks at an updater log from an Office update and copies those files to a similar directory structure ready for PackageMaker. This script may also work with some other Vise installers.
Xdroplets is a nifty little app that creates GUI launchers for X11 apps. To create a launcher, you just double click an icon, it prompts you for the path to the application you are creating the launcher for and asks for any arguments you want to pass to it and path to working directory. You can then use the Finders “Get Info” window if you want to give it a custom icon. I include these launchers with any X11 app that I package up so it makes it real easy for the users (faculty and students) to know the apps are there. It also launches X11 for you when you open one of the X11 apps.
If you have anything to add, please use the comments below.