Como criar um arquivo zip no mesmo formato como item de menu do Finder “Compress”?

StackOverflow https://stackoverflow.com/questions/107903

  •  01-07-2019
  •  | 
  •  

Pergunta

No Mac OS X, você pode criar um arquivo zip a partir do Finder, selecionando alguns arquivos e selecionando "Compress" no menu contextual ou no menu Arquivo. Infelizmente, o arquivo resultante não é idêntico ao do arquivo criado pelo comando zip (com as opções padrão).

Esta distinção é importante para pelo menos um serviço operado pela Apple, que não aceitar arquivos criados com o comando zip. Ter que criar arquivos manualmente está me impedindo de automatizar totalmente o meu processo de compilação de lançamento.

Como posso criar um arquivo zip no formato correto dentro de um shell script?

EDIT: Desde que escrevi esta questão há muito tempo, eu descobri que a principal diferença entre ditto e zip é como lidar com links simbólicos: porque a assinatura de código dentro de um pacote de aplicativo contém um link simbólico, ele precisa ser preservado como um link e não armazenada como um arquivo regular. ditto faz isso por padrão, mas zip não (é exigido opção -y).

Foi útil?

Solução

Use a ferramenta de linha de comando ditto a seguinte:

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

Veja a href="https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/ditto.1.html" rel="nofollow noreferrer"> página homem para mais.

Outras dicas

Eu tenho um script Ruby que faz iPhone App Store constrói para mim, mas a fecha-se a geração de não ser aceito pelo iTunes Connect. Eles foram aceitas se eu usasse a função "Compress" do Finder.

A resposta de millenomi chegou perto de mim, mas este comando é o que acabou funcionando. iTunes Connect aceitou meu construir, e o aplicativo foi aprovado e pode ser baixado nenhum problema, por isso é testada.

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

estados homem idem:

 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

A pista está no 'automação' tag.

Criar uma ação em Automator.app que usa a ação 'Criar Arquivo', invocá-lo a partir da linha de comando (ver 'automator').

scroll top