#macos #download #launch #macos-mojave
#macos #Скачать #запуск #macos-mojave
Вопрос:
Я работаю над приложением, написанным на Qt для среды macOS. Для создания сборки релиза я настроил внешний сервер.
Я вижу это:
После создания сборки, если я загружаю и устанавливаю приложение в папке Applications, при его открытии сначала я вижу всплывающее окно с вопросом, уверен ли я, что открою приложение, загруженное из Интернета (Gatekeeper), поэтому я нажимаю Открыть, а затем приложение умирает.
Приложение работает нормально, если я открываю его из командной строки в терминале.
Проверяя атрибуты файла приложения, я вижу, что в нем есть com.apple.quarantine. Если удалить его вручную, с помощью xattr -dr com.apple.quarantine приложение откроется без каких-либо проблем
Есть идеи о том, почему оно не запускается?? Заранее спасибо
Комментарии:
1. Версия Macos? Запускал macdeployqt?
2. macOS 10.14 Mojave. macqtdeploy был запущен, и он завершился без ошибок
Ответ №1:
У меня была такая же проблема с моим программным обеспечением, и я вызвал инцидент с разработчиком, который позволил найти основную причину:
При первом запуске с атрибутом карантина Gatekeeper передаст дополнительный аргумент командной строки. Из того, что я мог наблюдать, оно имеет вид:
-psn_0_<some sequence of numbers>
например
-psn_0_2445909
В этом случае Qt QCommandLineParser
отклоняет неизвестные аргументы и вызовы exit(1);
.
Таким образом, необходимо отфильтровать argc
/ argv
и удалить этот фиктивный аргумент, прежде чем передавать их в Q{Core,Gui,}Application
.