34

在 Mac OS X 上,您可以通过选择一些文件并从上下文菜单或文件菜单中选择“压缩”,从 Finder 创建一个 zip 存档。不幸的是,生成的文件与命令创建的存档不同zip(使用默认选项)。

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

如何在 shell 脚本中创建正确格式的 zip 存档?

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

4

4 回答 4

20

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

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

ditto -c -k --sequesterRsrc --keepParent AppName.app AppName.zip
于 2010-03-18T20:38:44.433 回答
18

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

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

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

于 2008-09-20T11:27:28.717 回答
11

人同上说:

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

注意--keepParent

于 2010-11-20T03:03:12.657 回答
1

线索在标签“自动化”中。

在 Automator.app 中创建一个使用“创建存档”操作的操作,从命令行调用它(参见“自动机”)。

于 2008-09-20T11:17:45.340 回答