Inserimento di script di shell nel pacchetto .app

3

Sto provando a inserire uno script di shell in un pacchetto di applicazioni in modo che lo script della shell venga eseguito quando I open il bundle, al contrario dell'eseguibile inserito lì.

In particolare, sto provando a eseguire alcune impostazioni dell'ambiente prima di eseguire il binario, ad es. impostazione delle variabili di ambiente (ho già provato a inserire le variabili di ambiente in Info.plist, che non funzionava, presumibilmente perché MATLAB è stupido), e quando ho cd nel pacchetto ed eseguo manualmente il mio script, ( ./StartMATLAB ) Funziona; Il programma si avvia e le variabili di ambiente vengono riconosciute.

Quando faccio doppio clic su .app nel Finder o chiamo open MATLAB_R2011b.app , tuttavia, fallisce. Quando chiamo open dalla riga di comando, ottengo:

LSOpenURLsWithRole() failed with error -10810 for the file /Applications/MATLAB_R2011b.app

Ho provato a giocare con Info.plist inutilmente, ma non ho molta familiarità con il modo in cui sono messi insieme. Qualcuno sa perché non posso open questo pacchetto?

Grazie!

Modifica Il Info.plist per il programma che sto cercando di modificare sembra avere un sacco di cose relative a java. Ho provato a rimuoverlo, ma finora non ho avuto fortuna. Sto pensando che il problema potrebbe essere con il file .plist, in quanto si aspetta un programma basato su Java rispetto a qualsiasi altro eseguibile

    
posta staticfloat 07.10.2011 - 18:50
fonte

3 risposte

3

Questo non funzionerà per un'app firmata, ma ecco come sono riuscito a far funzionare tutto questo:

  1. Crea una copia dell'app che stai cercando di modificare nel caso qualcosa vada storto. ( D nel Finder) Per il mio esempio qui, ho modificato la versione non-app store di VectorDesigner

  2. Nel terminale, cd /Applications/VectorDesigner.app/Contents/MacOS

  3. mv VectorDesigner VectorDesigner\ copy (sostituisci il nome della tua app qui

  4. pico VectorDesigner (o il tuo editor di scelta) e aggiungi il contenuto del tuo script.

    Ho usato questo script

     #!/bin/sh
     osascript -e "tell Application \"Finder\" to display alert \"Hello World\""
     /Applications/VectorDesigner.app/Contents/MacOS/VectorDesigner\ copy
    

    L'importante è che l'ultima riga invochi l'eseguibile rinominato.

  5. chmod a+x VectorDesigner

Ora, quando faccio doppio clic sull'icona di VectorDesigner, visualizzo la finestra "Hello World", quindi avvia il programma originale.

    
risposta data 07.10.2011 - 20:06
fonte
1

Probabilmente hai bisogno di cambiare i permessi dei file, questo sembra essere il problema.

Apri terminale:

chmod +x /Applications/MATLAB_R2011b.app/Contents/MacOS/MATLAB_R2011b
    
risposta data 07.10.2011 - 22:54
fonte
0

Invece di "scarpa-horning" lo script nel pacchetto App, che ne dici di fare il contrario?

  1. Crea uno script di shell che imposta l'ambiente come vuoi, quindi avvia l'app originale (con open ad esempio). Hai detto che funziona già.
  2. Incorpora lo script della shell in un nuovo pacchetto di app usando Platypus.
  3. (opzionale) Incorpora l'app originale all'interno del tuo nuovo pacchetto di app e fai in modo che il tuo script venga avviato da lì.
risposta data 25.01.2014 - 23:06
fonte

Leggi altre domande sui tag