
Ich habe online viel über benutzerdefinierte URL-Handler/benutzerdefinierte Protokoll-Handler gelesen, wie zum Beispiel:
- Starten externer Anwendungen mit benutzerdefinierten Protokollen unter OSX
- OS X-URL-Handler zum Öffnen von Links zu lokalen Dateien
Ich verstehe, dass man dem System mit der Datei mitteilen kann, dass ein bestimmtes Programm ein bestimmtes Schema/Protokoll verarbeiten kann Info.plist
:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Local File</string>
<key>CFBundleURLSchemes</key>
<array>
<string>local</string>
</array>
</dict>
</array>
<key>NSUIElement</key>
<true/>
Wenn es jedoch mehrere Anwendungen gibt, die denselben URL-Handler öffnen können, wie mailto:
geben Sie beispielsweise an, welchen das System verwenden soll?
Es gab einige Verweise auf Dienstprogramme wie das More Internet preference pane
, das auf der Website des Autors nicht mehr verfügbar zu sein scheint. Ich habe es zwar online durch Googeln gefunden, aber es scheint ein bisschen wackelig zu sein – als wäre es für ein älteres OSX geschrieben worden – vielleicht Tiger.
Ich konnte keine Informationen dazu finden, wie man den URL-Handler für Protokolle und benutzerdefinierte Protokolle einstellt. Ich gehe davon aus, dass es plist
irgendwo eine Datei gibt, die ich bearbeiten kann – oder vielleicht gibt es ein neueres, besseres Dienstprogramm, das gut mit Mountain Lion funktioniert?
Antwort1
Die gesuchte Datei ist ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist
.
Es enthält ein Array namens LSHandlers
und die Dictionary-Untergeordneten, die ein definieren, LSHandlerURLScheme
können entsprechend mit geändert werden LSHandlerRole
. Sie müssen [diese Binärdatei konvertieren][1], um sie bearbeiten zu können.
Anstatt diese Datei manuell zu bearbeiten, können Sie verwendenSwiftDefaultApps. Beachten Sie, dass diese App ein Nachfolger der nicht mehr gepflegten RCDefaultApp ist, aber auch einige Fehler zu haben scheint.
Antwort2
Auflistung der aktuellen LaunchServices-URL-Handler-Einstellungen unter Apple OS X 10.10 (Yosemite):
defaults read com.apple.LaunchServices/com.apple.launchservices.secure
Antwort3
Update Juli 2017: RCDefaultApp lstool
funktioniert nicht mehr unter macOS 10.12 oder höher. Wir müssen eine neue Lösung finden.
Bearbeiten März 2018
ich fandSwiftDefaultAppskann es aber nicht testen, da ich noch nicht auf High Sierra bin.
Als Erweiterung der vorherigen Antwort: Wenn Sie dies über die Befehlszeile tun möchten, können Sie den lstool
Befehl verwenden, der den Kern von RCDefaultApp bildet und unter zu finden ist RCDefaultApp.prefPane/Contents/Resources/lstool
.
Die Verwendung ist unkompliziert:
[~]$lstool --help
Usage:
lstool read [<lsscheme> [<type>]]
lstool [-n] write <lsscheme> <type> <app>
lstool [-n] setoption <lsscheme> <type> login|ignorecreator YES|NO
lstool [-n] register {<app>}
lstool [-n] unregister {<path> | <app>}
lstool apps
-n means do not make changes
<lsscheme> is one of: internet, media, url, extension, uti, mime, ostype
<app> is the path to an application or a name to be looked up
Antwort4
Ich habe tatsächlich eine Anwendung geschrieben, die die Registrierung benutzerdefinierter URL-Protokolle vereinfacht, falls jemand Interesse hat. Sie heißt LinCastor (https://onflapp.github.io/blog/pages/LinCastor.html). Handler können als AppleScript oder Shell-Skript (das kann Perl, Python oder was auch immer sein) definiert werden.