¿Cómo crear un archivo zip en el mismo formato que el elemento del menú "Comprimir" del Finder?
-
01-07-2019 - |
Pregunta
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 creado por el zip
comando (con las opciones predeterminadas).
Esta distinción es importante para al menos un servicio operado por Apple, que no acepta archivos creados con el zip
dominio.Tener que crear archivos manualmente me impide automatizar completamente el proceso de compilación de mi versión.
¿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, descubrí que la diferencia clave entre ditto
y zip
Así es como manejan los enlaces simbólicos:Debido a que la firma del código dentro de un paquete de aplicación contiene un enlace simbólico, debe conservarse como un enlace y no almacenarse como un archivo normal. ditto
hace esto por defecto, pero zip
no (opción -y
se requiere).
Solución
Utilice la herramienta de línea de comandos ditto de la siguiente manera:
ditto -ck --rsrc --sequesterRsrc folder file.zip
Ver el lo mismo ocurre con la página de manual para más.
Otros consejos
Tengo un script Ruby que crea la App Store de iPhone para mí, pero iTunes Connect no acepta los archivos zip que estaba generando.Fueron aceptados si usaba la función "Comprimir" del Finder.
La respuesta de millenomi estuvo cerca para mí, pero este comando es lo que terminó funcionando.iTunes Connect aceptó mi compilación, la aplicación fue aprobada y se puede descargar sin problemas, por lo que está probada.
ditto -c -k --sequesterRsrc --keepParent AppName.app AppName.zip
el hombre lo mismo 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
La pista está en la etiqueta "automatización".
Cree una acción en Automator.app que utilice la acción 'Crear archivo', invoquela desde la línea de comandos (consulte 'automator').