How to create a zip file in the same format as the Finder's “Compress” menu item?

帅比萌擦擦* 提交于 2020-01-20 02:29:05

问题


On Mac OS X, you can create a zip archive from the Finder by selecting some files and selecting "Compress" from the contextual menu or the File menu. Unfortunately, the resulting file is not identical to the archive created by the zip command (with the default options).

This distinction matters to at least one service operated by Apple, which fails to accept archives created with the zip command. Having to create archives manually is preventing me from fully automating my release build process.

How can I create a zip archive in the correct format within a shell script?

EDIT: Since writing this question long ago, I've figured out that the key difference between ditto and zip is how they handle symbolic links: because the code signature inside an app bundle contains a symlink, it needs to be preserved as a link and not stored as a regular file. ditto does this by default, but zip does not (option -y is required).


回答1:


Use the ditto command-line tool as follows:

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

See the ditto man page for more.




回答2:


I have a ruby script that makes iPhone App Store builds for me, but the zips it was generating wouldn't get accepted by iTunes Connect. They were accepted if I used Finder's "Compress" function.

millenomi's answer came close for me, but this command is what ended up working. iTunes Connect accepted my build, and the app got approved and can be downloaded no problem, so it's tested.

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



回答3:


man ditto states:

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

notice --keepParent




回答4:


The clue's in the tag 'automation'.

Create an action in Automator.app that uses the 'Create Archive' action, invoke it from the command-line (see 'automator').



来源:https://stackoverflow.com/questions/107903/how-to-create-a-zip-file-in-the-same-format-as-the-finders-compress-menu-item

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!