Не удалось запустить приложение MacOS, встроенное в Xcode - PullRequest
4 голосов
/ 09 июля 2019

Я создал приложение в XCode в режиме выпуска. Подписано действительным сертификатом ID разработчика. И приложение отлично запускается на некоторых MacBook. Но при другом запуске происходит сбой с ошибкой

Приложение% name% не может быть открыто.

image

Затем я пытаюсь запустить его из терминала с помощью команды open, которая говорит

Сбой LSOpenURLsWithRole () с ошибкой -54 для файла / Applications / Gaetano Lunches.app.

А потом я пытаюсь запустить бинарный файл напрямую из содержимого пакета это говорит

-bash: / Applications / Gaetano Lunches.app/Contents/MacOS/Gaetano Обеды: операция не разрешена

На всех MacBook разрешена установка приложения из любого места. spctl-master отключен. Разрешения для файлов правильные. Но приложение не может быть запущено.

1 Ответ

0 голосов
/ 13 июля 2019

Я не знаю, как вы создаете свое приложение, но если LSOpenWIthRole возвращает permError = -54, это означает, что у вас есть ошибка разрешения при открытии файла.Это может многое значить, но создание приложения в режиме выпуска больше не является тем, что Apple рекомендует вам делать.Apple предпочитает, чтобы вы использовали Архив , а затем вы экспортировали приложение в Организатор для использования вашими пользователями.Используя этот рабочий процесс, обычно вы можете делать все, используя Xcode по умолчанию для создания приложения.Если вы этого не сделаете, то вам нужно быть более осторожным с настройками, которые вы выбираете для сборки в режиме релиза.

Для быстрого и грязного подхода я бы попробовал следующее:

1) Откройте терминал

2) Введите: chmod +x "/Applications/Gaetano Lunches.app/Contents/MacOS/Gaetano Lunches"

3) Попробуйте запустить приложение и посмотреть, поможет ли оно.Если это помогает, то что-то не так с вашими настройками сборки, что не позволяет изменить права доступа к файлу где-нибудь, чтобы ваш исполняемый файл имел права на запуск.

Еще одна вещь, которую вы можете попробовать - посмотреть,приложение было занесено в черный список Gatekeeper, потому что оно каким-то образом определило, что ваше приложение делает подозрительные действия в вашей собственной системе.Если это так, то вы можете попробовать это, чтобы увидеть, что оценивает гейткипер:

spctl -a "/Applications/Gaetano Lunches.app"

Если по какой-то странной причине ваше приложение занесено в черный список Gatekeeper, вы всегда можете добавить свое приложение вручную и добавить его в белый список дляGatekeeper:

spctl --add "/Applications/Gaetano Lunches.app"

Если все не удается, вы можете попытаться сбросить всю базу данных, но вам потребуется доступ суперпользователя:

sudo spctl --reset-default

Однако, я думаю, что это просто быстрые исправления, и если вам все еще нужно это, потому что ваши настройки сборки в XCode должны быть скорректированы.Подробнее об этом, если какое-либо из этих решений работает.Дайте мне знать об этом.

...