To overcome this problem, I wrote a new script that finds the name of the last USB device connected, which presumably is the device that triggered the system to execute the script. The script launches iPhoto except when the last device connected is an iPhone. Here is the source:
on get_device_name() set list_devices to "ioreg -Src IOUSBDevice | grep '^\\+'" set get_name_of_last to "tail -n 1 | sed 's/^\\+-o \\(.*\\)@.*/\\1/'" set command to list_devices & " | " & get_name_of_last return (do shell script command) end get_device_name on run if get_device_name() is not equal to "iPhone" then tell application "iPhoto" to activate end if end run
Paste that into Script Editor, save it as an application, then go to the Image Capture preferences and set the script application to be launched whenever a camera is connected. You don't need to do all the Terminal stuff that Sam requires in his post because we don't need to know your camera's USB name.
P.S. The comments on the original post make for a fascinating case study in people aggressively missing the point.