Как создать zip-файл в том же формате, что и в пункте меню «Сжать» в Finder? - PullRequest
23 голосов
/ 20 сентября 2008

В Mac OS X вы можете создать zip-архив из Finder, выбрав несколько файлов и выбрав «Сжать» в контекстном меню или меню «Файл». К сожалению, полученный файл не идентичен архиву, созданному командой zip (с параметрами по умолчанию).

Это различие имеет значение по крайней мере для одной службы, управляемой Apple, которая не принимает архивы, созданные с помощью команды zip. Необходимость создавать архивы вручную мешает мне полностью автоматизировать процесс сборки релиза.

Как мне создать zip-архив в правильном формате в скрипте оболочки?

РЕДАКТИРОВАТЬ: С момента написания этого вопроса я выяснил, что ключевое различие между ditto и zip заключается в том, как они обрабатывают символические ссылки: поскольку сигнатура кода внутри пакета приложения содержит символическую ссылку, ей необходимо быть сохраненным как ссылка и не сохраненным как обычный файл. ditto делает это по умолчанию, а zip - нет (опция -y обязательна).

Ответы [ 4 ]

17 голосов
/ 18 марта 2010

У меня есть скрипт ruby, который делает сборку iPhone App Store для меня, но создаваемые им zip-файлы не будут приняты iTunes Connect. Они были приняты, если я воспользовался функцией Finder в Finder.

Ответ millenomi был близок для меня, но эта команда и сработала. iTunes Connect принял мою сборку, и приложение было одобрено и его можно без проблем загрузить, поэтому оно протестировано.

ditto -c -k --sequesterRsrc --keepParent AppName.app AppName.zip
15 голосов
/ 20 сентября 2008

Используйте тот же инструмент командной строки следующим образом:

ditto -ck --rsrc --sequesterRsrc folder file.zip

Подробнее см. На странице справочника .

8 голосов
/ 20 ноября 2010

человек так же заявляет:

 The command:
       ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip
 will create a PKZip archive similarly to the Finder's Compress functionality.

уведомление --keepParent

1 голос
/ 20 сентября 2008

Подсказка в теге 'автоматизация'.

Создайте действие в Automator.app, которое использует действие «Создать архив», вызовите его из командной строки (см. «Автоматизатор»).

...