Невозможно добавить собственный протокол в приложение на Mac ни с duti, ни с plist

Я не очень разбираюсь в Mac, поэтому любая помощь будет принята с благодарностью.

Сначала пытался спросить здесь Как сопоставить пользовательский протокол с приложением на Mac?

Попытка добавить мой собственный протокол с помощью duti, запустите в сценарии после установки установщика Пакеты:

#!/bin/sh
## 
##  add_handlers.sh -- register UTI handlers for the MyApp
##
##  Requires the duti tool
##

./duti -s MyApp myapp

Обработчик появляется на панели предпочтений RCDefaultApp, но при вызове из другого моего приложения он открывает Safari с этим протоколом в адресной строке с вопросом «Разрешить ли этой странице открывать« MyApp »? и при нажатии Разрешить показывает ошибку:

Safari не может открыть указанный адрес. Safari не может открыть «myapp: //», потому что macOS не распознает интернет-адреса, начинающиеся с «myapp:».

Также при попытке открыть с терминала:

deploy @ mini-mac-mini ~% открыть myapp: //

LSOpenURLsWithRole () завершился ошибкой -10810 для URL-адреса myapp: //.

Та же проблема при попытке добавить протокол с помощью файла plist в пакете приложения.


person Maksym    schedule 29.12.2020    source источник


Ответы (1)


После некоторого расследования я нашел причину проблемы.

Оказалось, что zip-архив, в котором я распространяю myapp, удаляет права доступа к исполняемым файлам.

Немного поиграв с функцией zip для сохранения атрибутов (не удалось), я использовал другой скрипт, который устанавливает атрибуты обратно в распакованный файл:

chmod "+x" "myapp.app/Contents/MacOS/myapp"

После этого инструмент duti заработал как положено.

person Maksym    schedule 04.01.2021