Ответ 1
Используйте инструмент командной строки ditto следующим образом:
ditto -ck --rsrc --sequesterRsrc folder file.zip
Дополнительную информацию см. в справочной странице ditto.
В Mac OS X вы можете создать zip-архив из Finder, выбрав несколько файлов и выбрав "Сжать" из контекстного меню или в меню "Файл". К сожалению, полученный файл не идентичен архиву, созданному командой zip
(с параметрами по умолчанию).
Это различие имеет значение, по крайней мере, для одной службы Apple, которая не может принимать архивы, созданные с помощью команды zip
. Необходимость создания архивов вручную мешает мне полностью автоматизировать процесс сборки релиза.
Как создать zip-архив в правильном формате в оболочке script?
EDIT: Я давно понял, что ключевое различие между ditto
и zip
заключается в том, как они обрабатывают символические ссылки: поскольку подпись кода внутри пакета приложений содержит символическую ссылку, она нуждается в для сохранения в качестве ссылки и не сохраняться в виде обычного файла. ditto
делает это по умолчанию, но zip
не выполняет (требуется -y
).
Используйте инструмент командной строки ditto следующим образом:
ditto -ck --rsrc --sequesterRsrc folder file.zip
Дополнительную информацию см. в справочной странице ditto.
У меня есть ruby script, который заставляет iPhone App Store строить для меня, но создаваемые им почтовые индексы не будут приняты iTunes Connect. Они были приняты, если я использовал функцию Finder "Compress".
millenomi ответ приблизился для меня, но эта команда - это то, что закончилось тем, что работало. iTunes Connect принял мою сборку, и приложение получило одобрение и не может быть загружено без проблем, поэтому оно протестировано.
ditto -c -k --sequesterRsrc --keepParent AppName.app AppName.zip
man ditto утверждает:
The command: ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip will create a PKZip archive similarly to the Finder Compress functionality.
notice --keepParent
Подсказка в теге "автоматизация".
Создайте действие в Automator.app, которое использует действие "Создать архив", вызывается из командной строки (см. "automator" ).