Я много читал в Интернете о пользовательских обработчиках URL / пользовательских протоколах, таких как:
- Запуск внешних приложений с использованием пользовательских протоколов под OSX
- Обработчик URL OS X для открытия ссылок на локальные файлы
Я понял, что вы можете сказать системе, что определенная программа может обрабатывать определенную схему / протокол с 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/>
Но если есть несколько приложений, которые могут открывать один и тот же обработчик URL, например, mailto:
как указать, какое из них вы хотите использовать в системе?
Были некоторые ссылки на такие утилиты, More Internet preference pane
которые больше не доступны на сайте автора. Я нашел его в Интернете от Google, но он кажется немного шатким - как это было написано для более старой OSX - возможно, Tiger.
Я не смог найти информацию о том, как установить обработчик URL для протоколов и пользовательских протоколов. Я предполагаю, что plist
где-то есть файл, который я могу отредактировать - или, может быть, есть более новая, лучшая утилита, которая хорошо работает с Mountain Lion?
Обновление июль 2017: RCDefaultApp и
lstool
больше не работает на MacOS 10.12 или более поздней версии . Мы должны найти новое решение.Edit Mar 2018
Я нашел SwiftDefaultApps, но не могу проверить, так как я еще не на High Sierra.
В продолжение предыдущего ответа, если вы хотите сделать это в командной строке, вы можете использовать
lstool
команду, которая является ядром RCDefaultApp, которая находится вRCDefaultApp.prefPane/Contents/Resources/lstool
.Его использование просто:
источник
lstool
командной строки отображает эту ошибку, когда вы пытаетесь ее запустить:objc[1049]: Objective-C garbage collection is no longer supported.
(lstool
это внутренняя программа, используемая панелью настроек RCDefaultApp. Хотя панель настроек, кажется, работает, я не думаю, что она может что-либо сделать, потому что неlstool
работает. )Перечисление текущих настроек обработчика URL-адресов LaunchServices в Apple OS X 10.10 (Yosemite):
источник
Я на самом деле написал приложение, упрощающее регистрацию пользовательских протоколов URL, если кому-то интересно. Он называется LinCastor ( http://onflapp.wordpress.com/lincastor/ ). Обработчики могут быть определены как AppleScript или сценарий оболочки (который может быть perl, python или что-либо еще).
источник
Открыть файл с помощью XCode работает довольно легко.
Использование команды build in,
plutil
как описано в ответе на https://discussions.apple.com/thread/5815759, для преобразования между форматами xml1 или binary1 работает аналогично.Нет необходимости в «чужих» инструментах :-)
источник
Вы также можете использовать duti :
источник
Я только что попробовал старый интернет More под El Capitan.
Это забавно, и единственный способ, которым он работает, - это использование клавиш со стрелками вверх и вниз для выбора протокола и перетаскивание значка APP в окно, чтобы внести изменения.
Я переключился по умолчанию с Safari на Chrome, и изменения застряли, так что он работает до сих пор.
источник
Другой способ перечислить текущие настройки обработчика URL-адресов LaunchServices с помощью Xcode в Apple OS X 10.10+ (Yosemite):
источник