This discussion made me curious about exactly how this works in OS X. If anyone is curious:
This page[1] at the Apple Developer site describes the sequence of events for determining which application to launch when a document is opened (in a high-level, no-detail sort of way).
I believe that all the extensions applications claim to accept (and thus applications associated with an extension) are generated programatically, and cached here[2]:
/Library/Caches/com.apple.LaunchServices-014nnn.csstore
where nnn is your uid number from the NetInfo database.
This program:
/System/Library/Frameworks/ApplicationServices.framework/ Frameworks/LaunchServices.framework/Support/lsregister
Is capable of rebuilding that cached database and displaying it ("lsregister -dump | less") for you to look at, if you're interested.
I think all of your customizations of preferred applications are stored here:
~/Library/Preferences/com.apple.LaunchServices.plist
I haven't confirmed this for certain, but I imagine that the 'file association war' mostly occurs in this plist. I don't know exactly how this is supposed to be formatted, and perhaps shouldn't be edited by hand, but I'd think it should be pretty easy to go and delete all xml elements which reference applications you *don't* want to be opening files, or perhaps make some minor edits replacing one app reference (the undesired) with another (the desired). Writing some AppleScript (if one knows how to do that, and I don't) might be a safer bet. Although, can't be too dangerous to make a backup copy of the plist and then edit to your hearts content, see what happens.
[1]: http://developer.apple.com/documentation/Carbon/Conceptual/ LaunchServicesConcepts/index.html#//apple_ref/doc/uid/TP30000999 [2]: http://www.thexlab.com/faqs/resetlaunchservices.html
On Sep 19, 2006, at 10:09 PM, Trevor Harmon wrote:
On Sep 19, 2006, at 7:21 PM, Charilaos Skiadas wrote:
So you really should only have to do this only once for every file type.
"Every file type" is the problem. RCDefaultApp reports that there are about *50* different extensions associated with BBEdit and XCode. I don't want to go through and manually change every one of those mappings. And what happens if I install yet another editor or, say, a new version of BBEdit? I'll have to go back and change all those associations *again*. Surely there's an easier way? I guess I could always resort to writing some AppleScript, assuming that would work...
I suppose I'm also asking the broader question of why apps like TextMate/BBEdit/etc. have to associate themselves with anything to begin with. For example, when I install two C++ editors, they fight for the .cc association, and I guess whichever one is installed last wins. Seems like a rather weak way of managing file associations.
Trevor
For new threads USE THIS: textmate@lists.macromates.com (threading gets destroyed and the universe will collapse if you don't) http://lists.macromates.com/mailman/listinfo/textmate
-- Matt Anderson