Почему мой пакет Mac .app перестает работать, когда я изменяю один файл?

Пожалуйста, извините меня, если этот вопрос кажется слишком простым, но у меня очень ограниченный доступ к Mac, и мои знания OSX относительно ограничены.

Я написал программу с использованием Windows Forms, которую я теперь запускаю под OSX (Yosemite) с использованием Mono.

Я хотел бы сделать его легко распространяемым, поэтому я выполнил эти инструкции, которые объясняют как запустить его с помощью пакета .app. Мне потребовалось всего несколько минут, чтобы он заработал. Однако теперь мне нужно обновить файл .exe внутри пакета до более новой версии.

Поэтому я открыл свой рабочий пакет .app и перешел в каталог MacOS. Там я заменил старый файл .exe на самую новую версию. Когда я нажимаю на сценарий (также в MacOS), который вызывает Mono, Mono запускает .exe, как и ожидалось. Однако он больше не запускается от значка, который ненадолго появляется в доке, пару раз отскакивает, а затем исчезает.

Я исчерпал свои знания OSX, пытаясь решить эту проблему. Я пробовал воссоздать шаги, которые делал изначально. Я перепробовал все комбинации имен и Info.plist. Кажется, ничего не работает.

Что странно: это происходит, когда я использую рабочий пакет .app и заменяю только один файл .exe. Все это перестает работать через значок, хотя скрипт работает, когда я дважды щелкаю по нему внутри пакета.

Что-то мне не хватает? Какая-то функция безопасности? Применяет ли OSX какую-то контрольную сумму к пакетам? Он каким-то образом знает, что он отличается от оригинального пакета, который я создал? Я совершенно потерялся.

Спасибо,

Эрик


person Eric H.    schedule 05.03.2015    source источник


Ответы (1)


Скорее всего, это проблема (вы не прошли проверку подписи), другой потенциальный вариант заключается в том, что вы нарушаете права доступа к файлам (поэтому очищаете исполняемый бит).

Если вы временно отключите привратник, вы сможете определить, является ли причиной этого сбой подписи.

Если вы подписали исходный пакет

Дополнительным быстрым шагом отладки будет запуск из командной строки:

open /Applications/example.app 

(замените /Applications/example.app на свой пакет приложений), чтобы вы могли выводить любые ошибки на stdout / stderr и видеть их напрямую.

person Damian Nikodem    schedule 05.03.2015