Insertando el script de shell en el paquete .app

3

Estoy tratando de convertir un script de shell en un paquete de aplicación para que el script de shell se ejecute cuando open el paquete, a diferencia del ejecutable puesto allí.

Específicamente, estoy tratando de hacer alguna configuración de entorno antes de ejecutar el binario, por ejemplo. configurando las variables de entorno (ya intenté simplemente poner las variables de entorno en Info.plist, que no funcionó, presumiblemente porque MATLAB es estúpido), y cuando I cd en el paquete y ejecuto manualmente mi script, ( ./StartMATLAB ) funciona; Se inicia el programa y se reconocen las variables de entorno.

Cuando hago doble clic en el .app en el Finder, o llamo a open MATLAB_R2011b.app , sin embargo, falla. Al llamar a open desde la línea de comandos, obtengo:

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

He intentado jugar con Info.plist en vano, pero no estoy muy familiarizado con la forma en que se ponen juntos. ¿Alguien sabe por qué no puedo open este paquete?

¡Gracias!

EDITAR: El Info.plist para el programa que estoy tratando de editar parece tener muchas cosas relacionadas con java. He intentado eliminarlo, pero hasta ahora no he tenido suerte. Estoy pensando que el problema puede estar en el archivo .plist, ya que está esperando un programa basado en Java en lugar de cualquier otro ejecutable

    
pregunta staticfloat 07.10.2011 - 18:50

3 respuestas

3

Esto no funcionará para una aplicación firmada, pero aquí es cómo pude hacer que esto funcione:

  1. Crea una copia de la aplicación que intentas modificar en caso de que algo salga mal. ( D en Finder) Para mi ejemplo aquí, modifiqué la versión de la tienda no de aplicaciones de VectorDesigner

  2. En la Terminal, cd /Applications/VectorDesigner.app/Contents/MacOS

  3. mv VectorDesigner VectorDesigner\ copy (sustituye el nombre de tu aplicación aquí

  4. pico VectorDesigner (o el editor que elija) y agregue el contenido de su script.

    He utilizado este script

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

    Lo importante es que la última línea llame al ejecutable renombrado.

  5. chmod a+x VectorDesigner

Ahora, cuando hago doble clic en el icono de VectorDesigner, aparece la ventana "Hola mundo", luego se inicia el programa original.

    
respondido por el Daniel 07.10.2011 - 20:06
1

Probablemente necesites cambiar los permisos de archivo, ese parece ser el problema.

Abrir Terminal:

chmod +x /Applications/MATLAB_R2011b.app/Contents/MacOS/MATLAB_R2011b
    
respondido por el l'L'l 07.10.2011 - 22:54
0

En lugar de "calzar" el script en el paquete de aplicaciones, ¿qué hay de hacerlo al revés?

  1. Cree un script de shell que configure el entorno como desee y, a continuación, inicia la aplicación original (con open por ejemplo). Ya has dicho que esto funciona.
  2. Incruste el script de shell en un nuevo paquete de aplicaciones utilizando Platypus.
  3. (opcional) Incruste la aplicación original dentro de su nuevo paquete de aplicaciones, y haga que su script lo inicie allí.
respondido por el ithos67 25.01.2014 - 23:06

Lea otras preguntas en las etiquetas