Adobe Lightroom Installer

John Welch has written passionately about Adobe installers many times over the years. Here’s another to add to the list, though not as colorfully as Mr. Welch might have done…

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!

Sigh.

Adobe Lightroom Installer

6 thoughts on “Adobe Lightroom Installer

  1. Brett_X says:

    I understand why they want to remove the receipt, but it’s such a rare circumstance that they’re trying to accommodate. When was the last time you had to reinstall an older version of an application.. and wouldn’t you almost expect problems when doing so? It would make much more sense to write a quick fix script and post it on their support site for people in that circumstance.
    Doesn’t removing the receipt also remove the ability to fix permissions on the installed files? Isn’t that more likely to cause a problem than someone having to reinstall an older version?

  2. David says:

    @Brett_X: Installing an older version over a newer version without removing the new version first is asking for trouble. Instead of this hack you should do the following:
    a) provide an installer that cleanly installs everything
    b) provide an uninstaller that cleanly removes everything
    If you want to have the capability to have two versions next to each other, both versions should be properly versioned, so the files don’t conflict anyway.

Comments are closed.