osx shell automation zip

osx - ¿Cómo crear un archivo zip en el mismo formato que el elemento del menú "Comprimir" del Finder?



gzip linux (4)

La pista está en la etiqueta ''automatización''.

Cree una acción en Automator.app que use la acción ''Crear archivo'', invoque desde la línea de comando (consulte ''automatizador'').

En Mac OS X, puede crear un archivo zip desde el Finder seleccionando algunos archivos y seleccionando "Comprimir" en el menú contextual o en el menú Archivo. Desafortunadamente, el archivo resultante no es idéntico al archivo creado por el comando zip (con las opciones predeterminadas).

Esta distinción es importante para al menos un servicio operado por Apple, que no acepta archivos creados con el comando zip . Tener que crear archivos manualmente me impide automatizar por completo mi proceso de creación de versiones.

¿Cómo puedo crear un archivo zip en el formato correcto dentro de un script de shell?

EDITAR: Desde que escribí esta pregunta hace mucho tiempo, me he dado cuenta de que la diferencia clave entre ditto y zip es cómo manejan los enlaces simbólicos: como la firma del código dentro de un paquete de aplicaciones contiene un enlace simbólico, debe conservarse como un enlace y no almacenado como un archivo normal. ditto hace de forma predeterminada, pero zip no (opción -y es obligatorio).


Utilice la herramienta de línea de comandos ídem de la siguiente manera:

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

Consulte la página man de ídem para obtener más información.


hombre ídem dice:

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

aviso --keepParent


Tengo un script de ruby ​​que hace que iPhone App Store cree para mí, pero las cremalleras que estaba generando no serían aceptadas por iTunes Connect. Fueron aceptados si usé la función "Compress" de Finder.

La respuesta de millenomi estuvo cerca para mí, pero este comando es lo que terminó funcionando. iTunes Connect aceptó mi compilación, y la aplicación se aprobó y se puede descargar sin problemas, por lo que se prueba.

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