У моей проблемы была причина, похожая, но отличающаяся от той, что описана в сообщении @ JasonGenX.
В моем приложении были некоторые файлы, которые были изменены, когда я его запустил, из-за чего подпись приложения не прошла проверку.
Чтобы исправить это, я удалил эти файлы и запретил их создание или изменение, так что пакет .app никогда не должен изменяться сам по себе.
В частности, в моем комплекте приложений был код Python. Когда приложение запускало Python, оно компилировало импорт в .pyc
файлы. Они были подписаны вместе с остальной частью набора приложений.
Когда я запустил .app перед созданием DMG, Python обновил и изменил эти .pyc
файлы, чтобы они больше не проходили проверку подписи. Я проверил это, используя:
$ codesign --verify --verbose=4 my.app
[...]
my.app: a sealed resource is missing or invalid
file modified: /private/tmp/my.app/Contents/Resources/python-dist/chardet/codingstatemachine.pyc
file modified: /private/tmp/my.app/Contents/Resources/python-dist/chardet/euckrprober.pyc
[...etc...]
.App по-прежнему запускался на моем компьютере, потому что я создал его сам, поэтому ему доверяли. Но когда я загрузил и скачал DMG, он был помечен, чтобы указать, что он пришел из ненадежного источника и требовал проверки подписи.
Поскольку проверка подписи не удалась, MacOS сообщила, что пакет приложений был поврежден.
Исправление заключалось в том, чтобы удалить .pyc
файлы из моих объединенных ресурсов Python и запустить Python как python -B
, что дает указание не создавать .pyc
файлы.
Я перестроил свой пакет .app без файлов .pyc
, и Python больше не создает их, поэтому пакет .app остается неизменным.
person
mrb
schedule
04.07.2018