如何创建与Finder的"压缩"菜单项相同格式的zip文件?

时间:2020-03-06 14:28:55  来源:igfitidea点击:

在Mac OS X上,可以通过以下方式从Finder中创建一个zip归档文件:选择一些文件,然后从上下文菜单或者"文件"菜单中选择"压缩"。不幸的是,生成的文件与zip命令创建的归档文件不同(使用默认选项)。

这种区别对至少由Apple经营的一项服务很重要,该服务无法接受使用zip命令创建的档案。必须手动创建档案,这使我无法完全自动化我的发行版构建过程。

如何在Shell脚本中以正确的格式创建zip归档文件?

编辑:自从很久以前写这个问题以来,我已经发现dittozip之间的主要区别在于它们如何处理符号链接:因为应用程序捆绑包中的代码签名包含符号链接,所以需要保留它作为链接,而不是存储为常规文件。默认情况下ditto会执行此操作,但zip则不会(需要选项-y)。

解决方案

线索在标签"自动化"中。

在Automator.app中创建一个使用"创建存档"操作的操作,然后从命令行调用它(请参阅" automator")。

使用ditto命令行工具,如下所示:

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

有关更多信息,请参见同上手册。

我有一个Ruby脚本可以为我构建iPhone App Store,但是它生成的zip不会被iTunes Connect接受。如果我使用Finder的"压缩"功能,它们将被接受。

millenomi的答案对我来说很接近,但这条命令最终奏效了。 iTunes Connect接受了我的构建,并且该应用程序已获得批准,可以毫无问题地下载,因此已经过测试。

ditto -c -k --sequesterRsrc --keepParent AppName.app AppName.zip

男子同上指出:

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

通知--keepParent