在Mac OS X上,您可以通过选择一些文件并从上下文菜单或"文件"菜单中选择"压缩",从Finder创建zip存档.不幸的是,生成的文件与zip
命令创建的存档(使用默认选项)不同.
这种区别对Apple运营的至少一项服务很重要,该服务无法接受使用该zip
命令创建的档案.必须手动创建存档会阻止我完全自动化我的发布构建过程.
如何在shell脚本中以正确的格式创建zip存档?
编辑:既然早就写了这个问题,我已经想通了,关键的区别ditto
,并zip
为他们如何处理符号链接:因为一个应用程序包内的代码签名包含一个符号,它需要被保存为一个链接,而不是存储作为常规文件.ditto
默认情况下这样做,但zip
不是(选项-y
是必需的).
我有一个ruby脚本,可以为我制作iPhone App Store版本,但它生成的拉链不会被iTunes Connect接受.如果我使用Finder的"压缩"功能,它们就被接受了.
millenomi的答案对我来说很接近,但这个命令最终起作用了.iTunes Connect接受了我的版本,该应用程序获得批准,可以下载没问题,所以它已经过测试.
ditto -c -k --sequesterRsrc --keepParent AppName.app AppName.zip
使用ditto命令行工具,如下所示:
ditto -ck --rsrc --sequesterRsrc folder file.zip
有关更多信息,请参见ditto手册页.
男人同上指出:
The command: ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip will create a PKZip archive similarly to the Finder's Compress functionality.
注意--keepParent