Não é possível abrir o aplicativo de script simples no mac

0

Mac OS X 10.6

Eu criei um aplicativo muito simples, que é apenas um wrapper de um script de shell (para que eu possa selecionar esse script nos seletores de aplicativos, como aplicativos de inicialização). Eu tento lançá-lo e ontem funcionou, mas hoje eu mudei o conteúdo e o nome do script executável (com algo que funciona perfeitamente em um shell script lançado no Terminal) e ele só exibe uma caixa de diálogo com o ícone do Finder dizendo

Cannot open the application because it is not supported on this kind of Mac.

Eu restaurei o script anterior (content / name), mas ainda recebo o erro! O mesmo quando re-empacotar o aplicativo do zero ou alterar completamente o identificador do pacote…

Se eu tentar abri-lo no terminal usando open My.app , obtenho

The application cannot be opened because it has an incorrect executable format.

Mas quando eu executo diretamente o Contents/MacOS/Script , sempre funciona (com ambos os conteúdos). Além disso, é exibido com o ícone correto e meta-informação no Finder (então eu acho que o Info.plist é entendido).

A árvore de arquivos do aplicativo é:

Contents/
    Info.plist
    MacOS/
        Script    (executable bit set, works when launched directly)
    PkgInfo
    Resources/
        AppIcon.icns

Aqui está o Info.plist content:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>Script</string>
    <key>CFBundleIconFile</key>
    <string>AppIcon</string>
    <key>CFBundleIdentifier</key>
    <string>asdf.ScriptApp</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>My script</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>LSMinimumSystemVersion</key>
    <string>10.4</string>
</dict>
</plist>

E o arquivo PkgInfo contém apenas APPL???? . Eu testei o Script com um simples echo "ok" e echo "ok" >/tmp/test (mais #!/bin/sh header).

Então, minhas perguntas são:

  • Existe algum tipo de cache de validade para aplicativos? Com base no que ? como faço para liberar?
  • De onde vem esta mensagem? Eu tentei google mas tudo que eu tenho é uma página falando sobre 32/64 bits Java ...
por instanceof me 26.05.2010 / 23:21

5 respostas

6

Esse é o necro, mas não consigo encontrar outro hit no google onde isso foi perguntado e respondido. Eu finalmente descobri (em 10.7 agora):

O arquivo de script de shell deve começar com "#!" e aqui está a parte estranha: deve ter pelo menos 28 caracteres.

Se você inserir um script de 27 caracteres e tocar no pacote, o ícone mudará para um aplicativo com uma linha. Adicione um caractere ao script e toque nele novamente, e BOOM, ele funciona.

Estranho, não?

    
por 19.08.2012 / 21:47
1

Você pode criar um aplicativo executando o script no Automator usando uma única ação Executar Script Shell .

    
por 18.02.2011 / 11:39
0

O shell script em si pode ser ruim. Isso normalmente acontece entre as plataformas PPC / Intel ou vice-versa.

    
por 27.05.2010 / 02:47
0

Você pode querer conferir o Ornitorrinco:

link

"Platypus is a developer tool for the Mac OS X operating system. It can be used to create native, flawlessly integrated Mac OS X applications from interpreted scripts such as shell scripts or Perl, Ruby and Python programs. This is done by wrapping the script in an application bundle directory structure along with an executable binary that runs the script."

    
por 19.12.2011 / 16:13
0

Criei com sucesso aplicativos cujos executáveis são scripts de shell. No entanto, eles sempre passaram a exec um processo GUI normal (ou um processo atípico, como um programa Java); talvez isso faça diferença.

Além disso, você controlou a diferença nas variáveis de ambiente? Quando você executa do Terminal, obtém o efeito dos arquivos de ponto ( .profile , .bash_profile , .bashrc , etc.), mas os lançamentos da GUI não usam nenhum deles. (Esse ambiente pode ser modificado usando ~/.MacOSX/environment.plist (relogando após mudanças), caso deseje fazê-lo.)

    
por 20.12.2011 / 15:16