Launchpad ignores settings created while booted from another volume

Printer-Friendly Version
Product: 
ccc5

If you have assembled a custom arrangement of your application icons in the Launchpad application, you will discover that that arrangement is lost when booted from your backup volume. When you see this happen, you would naturally think, "Why didn't CCC copy the Launchpad settings?" In fact, though, CCC is faithfully copying the Launchpad settings. Here we'll show you how you can verify that, and also why the settings don't work while booted from your backup volume.

Verifying the fidelity of the backup copy of your Launchpad settings

The LaunchPad preferences database is stored in your home folder at this location:

/Users/yourname/Library/Application Support/Dock/{long number}.db

You can calculate a checksum of this file on the source and destination volumes (immediately after running a backup task) to verify that it matches, e.g. in the Terminal application:

[bombich:~] md5 ~/Library/Application\ Support/Dock/*.db
MD5 (/Users/bombich/Library/Application Support/Dock/861852F1-B632-455A-8632-78BC7137A959.db) = 1988498deef00393db335a7015995413

[bombich:~] md5 /Volumes/Home\ Backup/Users/bombich/Library/Application\ Support/Dock/*.db
MD5 (/Volumes/Backup/Users/bombich/Library/Application Support/Dock/861852F1-B632-455A-8632-78BC7137A959.db) = 1988498deef00393db335a7015995413

Why don't the settings work while booted from another volume?

If you boot from the backup volume, you may notice an additional database file in that folder (it will be removed every time your backup runs, though). That's the new settings file that Launchpad creates because it's ignoring the settings file from your original volume.

If you examine the contents of that database file†, you'd see references to each application that resides in Launchpad. It's these references to your applications that are not "portable". Rather than referencing the application based on its relative path to your startup disk, the references are complex, proprietary "bookmark" data. These bookmark data have references to several defining attributes of the application files, such as path, name, volume unique identifier, and inode number. This allows you to move these applications around on your startup disk without breaking things inside of Launchpad. Unfortunately, though, the bookmark data is completely meaningless when you're booted from a physically different volume, because those attributes within the bookmark are volume specific. It is not possible to alter the contents of this database such that the references will point to the cloned volume.

†: Paste this in Terminal to get a "dump" of the database:

sqlite3 ~/Library/Application\ Support/Dock/*.db