Dużo czytałem online o niestandardowych modułach obsługi adresów URL / niestandardowych modułach obsługi protokołów, takich jak:
- Uruchamianie aplikacji zewnętrznych przy użyciu niestandardowych protokołów w systemie OSX
- Program obsługi adresów URL w systemie OS X w celu otwarcia łączy do plików lokalnych
Rozumiem, że możesz powiedzieć systemowi, że określony program jest w stanie obsłużyć określony schemat / protokół za pomocą Info.plist
pliku:
<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/>
Ale jeśli istnieje wiele aplikacji, które potrafią otworzyć ten sam moduł obsługi adresów URL, na przykład mailto:
jak określić, z której chcesz korzystać w systemie?
Pojawiły się odniesienia do takich narzędzi, More Internet preference pane
które nie są już dostępne na stronie autora. Znalazłem go online przez Googling, ale wydaje się nieco niepewny - tak jak napisano dla starszego OSX - być może Tygrysa.
Nie udało mi się znaleźć informacji na temat ustawiania modułu obsługi adresów URL dla protokołów i protokołów niestandardowych. Zakładam, że jest plist
gdzieś plik, który mogę edytować - a może istnieje nowsze, lepsze narzędzie, które działa dobrze z Mountain Lion?
Zaktualizuj lipiec 2017: RCDefaultApp i
lstool
nie działa już w systemie macOS 10.12 lub nowszym. Musimy znaleźć nowe rozwiązanie.Edytuj marzec 2018
Znalazłem SwiftDefaultApps, ale nie mogę przetestować, ponieważ nie jestem jeszcze w High Sierra.
Kontynuując poprzednią odpowiedź, jeśli chcesz to zrobić w wierszu poleceń, możesz użyć
lstool
polecenia, które jest rdzeniem RCDefaultApp, znajdującego się podRCDefaultApp.prefPane/Contents/Resources/lstool
.Jego użycie jest proste:
źródło
lstool
wiersza polecenia wyświetla ten błąd, gdy próbujesz go uruchomić:objc[1049]: Objective-C garbage collection is no longer supported.
(lstool
to wewnętrzny program używany przez panel preferencji RCDefaultApp. Chociaż panel preferencji wydaje się działać, nie sądzę, aby mógł nic zrobić, ponieważlstool
jest zepsuty. )Wyświetlanie aktualnych ustawień modułu obsługi adresów URL LaunchServices w systemie Apple OS X 10.10 (Yosemite):
źródło
Napisałem aplikację, która upraszcza rejestrację niestandardowych protokołów URL, jeśli ktoś jest zainteresowany. Nazywa się LinCastor ( http://onflapp.wordpress.com/lincastor/ ). Programy obsługi można zdefiniować jako AppleScript lub skrypt powłoki (który może perl, python lub cokolwiek innego).
źródło
Otwórz plik za pomocą XCode działa dość łatwo.
Korzystanie z polecenia wbudowanego
plutil
opisanego w odpowiedzi na https://discussions.apple.com/thread/5815759 w celu konwersji między formatem xml1 lub binarnym1 działa podobnie.Nie potrzeba narzędzi „obcych” :-)
źródło
Możesz także użyć duti :
źródło
Właśnie wypróbowałem stary More Internet pod El Capitan.
Jest funky i jedynym sposobem, w jaki działa, jest użycie klawiszy strzałek w górę i w dół, aby wybrać protokół, a także przeciągnięcie / upuszczenie ikony aplikacji w oknie, aby dokonać zmiany.
Zmieniłem domyślną z Safari na Chrome, a zmiana utknęła, więc nadal działa.
źródło
Inny sposób wyświetlania aktualnych ustawień modułu obsługi adresów URL LaunchServices z Xcode w Apple OS X 10.10+ (Yosemite):
źródło