The Lightroom 2.3 installer is an order of magnitude better than most other Adobe installers:
- It is a standard Apple Installer package.
- It installs just one thing: Adobe Lightroom 2.3.
- It does not secretly install Flash, or Air, or Adobe Reader.
- It stores its registration info in a separate file from the Adobe CS2, CS3, and CS4 apps, so you don’t have to worry about registrations clobbering each other.
But it’s not perfect.
Problem #1: the postinstall script at Contents/Resources/postinstall:
#!/bin/bash # # This postinstall script copies the camera raw profiles into the # application support folder ditto -kx "$1/Contents/Resources/profiles.zip" "/Library/Application Support/Adobe/CameraRaw/CameraProfiles"
This uses ditto to copy stuff out of a ZIP archive to /Library/Application Support/Adobe/CameraRaw/CameraProfiles/
Why? Why couldn’t this just be in the package payload? Or why couldn’t this be a metapackage, where one package installed Adobe Lightroom and another installed the CameraProfiles?
As an administrator, I don’t want to read scripts to see what else a package has installed – it should be in the bom files for the installer. Worse, we’ll never see a useful uninstall capability as long as software vendors pull this sort of thing. Ideally, we should be able to look at /Library/Receipts to see what has been installed, and in the future, be able to use this same info to uninstall things. Postflight or postinstall scripts that install additional things break this concept.
But it gets worse.
Let’s look at the postflight script at Contents/Resources/postflight:
#!/bin/bash # # remove the receipt file, which causes problems if people try to reinstall # an earlier version RMPATH="/Library/Receipts/`basename "$1"`" echo "removing receipt $RMPATH" rm -rf "$RMPATH"
It removes its own receipt! Now we’re really horked if we want to find out what’s been installed. Adobe destroys the evidence!