Como criar um .app do Mac OS X com um script de shell?

12

Tentei seguir alguns tutoriais, mas entendi o seguinte: Erro do PowerPC

Como posso consertar isso? Adicionei um info.plist (apenas copiei e colei o arquivo de outro aplicativo e alterei algumas coisas.)

Além disso, eu costumava chmod +x myApptornar o script executável.

PS eu estou usando El Capitan

Gato do alargamento
fonte
Não podemos adivinhar o que você fez antes de receber a mensagem de erro. Quais tutoriais você seguiu e após qual etapa ficou paralisado?
nohillside
1
Criei uma pasta chamada myApp.app, depois uma subpasta chamada Conteúdo, depois MacOS e, em seguida, um shell script myApp que contém #!/bin/bash ; say "Hi" ; exit 0(com cada um dos comandos em linhas diferentes e sem o ponto e vírgula).
Cat Alargamento
1
Um script bash que possui o conjunto de bits de execução não precisa necessariamente ser colocado em um pacote para ser executado; basta clicar duas vezes nele apenas no Finder ou executá-lo no Terminal. Se você realmente deseja um pacote de aplicativos, crie-o usando AppleScript ou Automator, o último dos quais é fácil. Adicione uma ação Executar Script do Shell e coloque seu código nela.
user3439894
@ user3439894 Tentei o automater no método que você descreveu antes de postar isso, mas o aplicativo não seria executado no computador de destino.
Flare Cat
@ user3439894 Bem, por algum motivo, não consigo editar meu comentário anterior. O erro foi algo como 'Este tipo de aplicativo não é suportado neste computador'.
Flare Cat

Respostas:

21

Bem, já faz anos que eu uso esse truque simples para ter scripts bash no aplicativo (e realmente não entendo por que todas as pessoas tentam soluções tão complicadas como criar pastas "Conteúdo", info.plist ou usar o Automator ou o Platypus ou algo assim .. . ????): Crie uma pasta chamada "YourApplication.app". Coloque seu arquivo de script bash diretamente nesta pasta da maneira que melhor lhe convier (Finder, terminal etc). O script bash deve ser executável, é claro (use chmod + x, se necessário). Não há necessidade de outras pastas ou arquivos (até que você precise chamar outros scripts ou executáveis ​​de dentro do seu script, é claro). O truque é nomear seu script exatamente com o mesmo nome da pasta do aplicativo, mas sem extensão. No caso descrito aqui, o arquivo de script deve ser nomeado "YourApplication". Isso é tudo ! Funciona no Mac os x desde o Snow Leopard até o Mavericks. Se alguém puder experimentar versões mais recentes do sistema operacional e me avise.

Nota: O script deve ter pelo menos 28 bytes de tamanho, caso contrário, não será executado. Pode ser preenchido com linhas em branco para obter o tamanho mínimo. Além disso, a primeira linha do script deve ser um shebang; por exemplo #!/bin/bashou #!/bin/perl.

Pierre Lagarde
fonte
Tente adicionar mais algumas linhas, para que você receba a mensagem, se não houver linhas suficientes no seu script.
Pierre Lagarde
Editei sua resposta para incluir a informação crítica que faltava e a votei de forma positiva.
user3439894
OK, obrigado pela correção e pela votação ... Estou usando isso há muito tempo e esqueci a necessidade de 28 bytes ... Não tenho nenhum script tão pequeno assim, é claro: D
Pierre Lagarde
1
Acabei de testar isso no macOS Sierra e funciona lá também.
user3439894
1
@FlareCat De fato, acabei de verificar e acho que qualquer shebang com um intérprete existente será suficiente (tentei com perl). Se você tentou outros idiomas, basta dizer;).
Pierre Lagarde
7

Se for um script shell simples, não será necessário envolvê-lo em um pacote de aplicativos; você pode clicar duas vezes no próprio script. No entanto, você não poderá ter um ícone personalizado ou outras coisas assim.

Acho que existem alguns ajudantes por aí que podem agrupar scripts simples, mas o único que tenho experiência é o Platypus, que permite que os scripts shell / python / perl / ruby ​​/ etc sejam executados como aplicativos regulares com ícones, I / O redirecionamentos, etc.

bjb
fonte
O ornitorrinco parece bom, mas seria ótimo saber como fazê-lo manualmente.
Flare Cat
1
Testado o ornitorrinco, funciona exatamente como eu queria! Obrigado pela sugestão.
Flare Cat