Pergunta

Eu tenho um aplicativo que quero agrupar (com alguns arquivos adicionais) juntos dentro de um aplicativo de wrapper.

Literalmente, a única coisa que quero fazer é fazer com que o aplicativo Wrapper inicie um arquivo de recursos (ou seja, como se tivesse digitado:

/path/to/Resources/Bundled.app/Contents/MacOS/executable

no terminal.

Faz sentido? Eu pensei que isso deveria ser simples, mas não encontrei uma maneira simples de fazer isso- minha programação de cacau é limitada, para dizer o mínimo.

Desde já, obrigado!

Foi útil?

Solução

Seu programa externo pode usar o nsbundle para localizar o programa interno no pacote do programa externo.

Para executar o programa interno: se for um aplicativo, use Serviços de lançamento ou NSWORKSPACE; Se for uma ferramenta de linha de comando, use NSTASK.

Outras dicas

Uma maneira, se o "aplicativo" embrulhado é apenas um script de shell ou algo assim, é Platypus.

Se é um aplicativo real (pacote .app), por que o App A não faz nada além de iniciar o aplicativo B? Por que o aplicativo A?

Eu tenho uma postagem no blog sobre isso: Transforme qualquer script de shell em um aplicativo clicar duas vezes. A entrada menciona "comece com um pacote de aplicativos vazios" ... que você pode obter usando a ferramenta Pashua mencionada, se bem me lembro ...

Apenas por uma questão de posteridade (e se ajudar mais alguém, aqui está o código completo que eu usei (dentro do arquivo appdelegate.m):

NSString *appName = @"";
NSString *bundledApp = [[NSBundle bundleWithPath:[[NSBundle
                                                           mainBundle] pathForResource:appName ofType:@"app"]]
                          bundlePath];
NSWorkspace *launchApp = [[NSWorkspace alloc] init];
NSLog(@"Launching %s", bundledApp);
[launchApp launchApplication:bundledApp];
[launchApp release];

// Make Launcher terminate (if it serves no other purpose)
[NSApp terminate:nil];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top