0

RCDefaultApp can change so-called macOS "roles", eg. change the handler of the mailto: protocol. This is stored in the following file:

defaults read ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist

LSHandlers = (
...
    LSHandlerRoleAll = "com.apple.mail";
    LSHandlerURLScheme = mailto;
...

Question: In which file in the filesystem is it defined how the value set in LSHandlerRoleAll, e.g. com.apple.mail, is connected to the actual program that is run, eg. "Mail.app"?

Put differently, what is the full path to the system files that RCDefaultApp manipulates?

1

The full path to the system file that RCDefaultApp manipulates is:

~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist

(i.e. this is the file you already mentioned in your question)

This is the actual file that Finder queries (through LaunchServices) to find the global preference for whichs applications are associated with certain types of files.

You seem to be thinking that RCDefaultApp manipulates some other file, which mentions explictly "Mail.app" (i.e. the actually app folder for the application). This is not so.

Instead Mail.app actually provides this information to the operating system by way of its Info.plist file inside the application folder. This is scanned when the application is opened, so that the system knows about the application itself and its supported file types.

Inside the Info.plist file for Mail.app, you'll find that it defines the "CFBundleIdentifier" for Mail.app to be "com.apple.mail". This is how the information from the LaunchServices preferences is "linked" to the actual Mail.app.

Additionally, it defines supported content types inside Info.plist within the CFBundleDocumentTypes, where LSItemContentTypes includes for example com.apple.mail.emlx, com.apple.mail.mbox, etc.

This ensures for example that even if you move Mail.app to a different folder, the system will still be able to start Mail.app when you double-click an emlx file in Finder for example.

  • I see! This explains why I couldn't find any trace of anything written to any file when doing changes with RCDefaultApp. Very good explanation! Thanks! – forthrin Apr 5 '18 at 8:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .