MacOS, diferencias entre ejecutar una aplicación incluida y ejecutar el ejecutable del paquete

¿Alguien puede elaborar las diferencias en OSX entre ejecutar una aplicación empaquetada haciendo uno de los siguientes:

  • haciendo doble clic en él
  • búscalo y ejecútalo desde Spotlight
  • abrir /Aplicación/MiAplicación.app

o simplemente ejecutando su ejecutable en la Terminal:

  • $ /Application/MyApp.app/Contents/MacOS/myapp (el binario ejecutable)

Respuestas (1)

En la mayoría de los casos no hay diferencia. Sin embargo, dentro de cada paquete de aplicaciones hay un archivo Info.plist que contiene información sobre la aplicación que es útil (principalmente) para Mac OS X (los tipos de archivos que maneja, etc.).

Pero el archivo Info.plist también puede contener información sobre el entorno en el que debe ejecutarse la aplicación. Por ejemplo, el archivo Info.plist puede contener variables de entorno que deben configurarse antes de iniciar el ejecutable. Si inicia el ejecutable usted mismo (en la línea de comando), esas variables no se establecerán y el comportamiento de la aplicación podría ser diferente.

EDITAR: para profundizar un poco más en esto, si hace clic con el botón derecho en una aplicación y "Mostrar contenido del paquete", luego profundiza en "Contenido: MacOS" y hace doble clic en el ícono ejecutable en ese directorio, también omitirá el inicio los servicios y la información en el archivo Info.plist serán ignorados. De modo que puede hacer en el Finder lo que está haciendo en la línea de comandos (sin opciones de línea de comandos, por supuesto).

Tenía la impresión de que info.plist se lee en todos los casos (incluso si se llama desde la línea de comando). ¿Tiene una referencia o un ejemplo que muestre lo contrario?
Si ejecuta el ejecutable directamente en la línea de comando (como solicitó el OP), entonces el shell crea el nuevo proceso sin tener en cuenta los servicios de lanzamiento o la configuración en el archivo Info.plist. Una forma de demostrar esto es crear un script de shell que escriba su directorio de inicio en syslog, luego use Platypus para incrustarlo en un paquete de aplicaciones. Luego edite el archivo Info.plist para anular la variable de entorno $HOME. Cuando inicie la aplicación, su texto anulado aparecerá en syslog. Pero si ejecuta el ejecutable en el paquete en la línea de comando, escribirá su directorio de inicio en el syslog.
Una cosa más que puede estar en los Contenidos: la internacionalización (traducciones de cadenas de texto a otros idiomas).
@WGroleau esa es solo una de las muchas cosas que pueden estar en el paquete, no es una buena idea solo mencionar eso. Creo que necesitas explicar mucho más qué es un paquete. por ejemplo, la Guía de programación de paquetes de Apple
Otros ya se mencionan en la respuesta.