Bueno, hace años que uso este sencillo truco para tener scripts de bash en la aplicación (y realmente no entiendo por qué todas las personas intentan soluciones tan complicadas como crear carpetas de "Contenido", info.plist o usar Automator o Platypus o algo así... . ????).
Eso es todo ! Funciona en Mac os x desde Snow Leopard hasta Mavericks. Si alguien puede probar versiones más nuevas del sistema operativo y decirme.
Nota: El script debe tener un tamaño mínimo de 28 bytes, de lo contrario no se ejecutará. Puede rellenarse con líneas en blanco para lograr el tamaño mínimo. Además, la primera línea del guión debe ser un tinglado; por ejemplo #!/bin/bash
o #!/bin/perl
.
[ACTUALIZAR]
Respondiendo a lo que se refiere el comentario de @DenisHowe, al usar este truco, si desea tener la ruta de la ejecución actual, puede agregar esas líneas al comienzo de la secuencia de comandos:
abspath ()
{
case "${1}" in
[./]*)
local ABSPATH="$(cd ${1%/*}; pwd)/"
echo "${ABSPATH/\/\///}"
;;
*)
echo "${PWD}/"
;;
esac
}
CURRENTPATH=`abspath ${0}`
PATH=$PATH:$CURRENTPATH
#!/bin/bash
sudo
es necesario ejecutar el script? ¿Qué puedo hacer para que el script le pida al usuario la contraseña?YourApplication.app
debe estar cerado en/Applications
--args
funciona. pero, por ejemplo, abrir un documento con la aplicación creada da un error en la ventana del terminal: Unknown command: \Xca\Xfe\Xba\Xbe
(también recibo este error si solo agrego la ubicación del archivo al comando)abspath ${0}
RUTA=$RUTA:$RUTA ACTUAL:pkgbuild: error: Path “<path x>/TestApplication.app" is not a valid bundle component (using destination path “<path x>”)
No es demasiado importante, solo me gustaría un pkg mínimo para probar cosas.La respuesta actualmente aceptada no me funciona del todo. Obtengo el pequeño ícono de la aplicación rota.
Lo siguiente me funciona bajo OSX 10.15.7 (Catalina). Siéntase libre de cambiar YourApplication
el nombre que realmente desea en todas las instrucciones siguientes.
mkdir un directorio con la .app
extensión en la /Applications
carpeta con ay Contents
luego MacOS
subdirectorios.
mkdir -p /Applications/YourApplication.app/Contents/MacOS
Mueva su secuencia de comandos a este directorio y asígnele el mismo nombre que la carpeta superior de la aplicación pero sin la .app
extensión y sin la extensión de la secuencia de comandos de shell:
mv yourscript.sh /Applications/YourApplication.app/Contents/MacOS/YourApplication
Asegúrese de que su script sea ejecutable:
chmod +x /Applications/YourApplication.app/Contents/MacOS/YourApplication
Aquí hay una aplicación de muestra para probar:
#!/bin/sh
result=`osascript -e 'display dialog "Should I beep?" buttons {"Yes", "No"}'`
if [[ "$result" = "button returned:Yes" ]]; then
osascript -e 'beep'
fi
Su aplicación ahora debería estar lista y el script debería ejecutarse cuando haga doble clic en él. Es importante tener en cuenta que si cambia el nombre de la aplicación, deberá cambiar el nombre del script subyacente.
Hacer que LaunchPad viera su aplicación era más difícil de entender. Lo siguiente pareció funcionar. Debe agregar algo como lo siguiente en el /Applications/YourApplication.app/Contents/Info.plist
archivo. Es posible que también deba moverlo a un archivo DMG y volver a Aplicaciones para LaunchPad para notarlo. Ver: https://stackoverflow.com/a/71342335/179850
<?xml version="1.0" encoding="UTF-8" standalone="no"?><plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>My App</string>
<key>CFBundleGetInfoString</key>
<string>My App 1.0</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
</dict>
</plist>
Para agregar un ícono a su nueva aplicación, debe hacer lo siguiente:
Busque o cree un PNG que desee que sea su icono.
Abra la imagen en la aplicación Vista previa; otras aplicaciones de gráficos también pueden funcionar.
Presiona comando-a para seleccionar todo y luego comando-c para copiarlo al portapapeles.
Seleccione su aplicación en el Finder y presione comando-i para obtener información en la ventana.
Haga clic en el icono en la esquina superior izquierda de la ventana de información para seleccionarlo:
Pegue la imagen del portapapeles que debería cambiar el icono.
También puede abrir la ventana Obtener información en otra aplicación, seleccionar su icono y copiarlo para poder pegarlo en su nueva aplicación. Después de asignar cualquier ícono, si busca en su .app
directorio, debería ver un nombre de archivo que comienza con Icon
.
Si se trata de un simple script de shell, entonces no necesita envolverlo en un paquete de aplicaciones; puede hacer doble clic en el propio script. Sin embargo, no podrá tener un ícono personalizado u otras cosas por el estilo.
Creo que hay algunos ayudantes que pueden envolver scripts simples, pero el único con el que tengo experiencia es Platypus , que le permite hacer que los scripts de shell/python/perl/ruby/etc se ejecuten como aplicaciones normales con íconos, I/ O redirecciones, etc.
Donde Platypus difiere aquí es que PUEDE obtener STDIN / STDOUT a través de algunos mecanismos diferentes, así como la interactividad de la barra de menú. Entonces obtiene una ventana donde puede interactuar con cualquier script que se esté ejecutando.
Platypus parece no ser utilizable desde la línea de comando (que es probablemente donde está su script de shell).
Este script https://github.com/andrewp-as-is/mac-appify que se puede instalar con pip para usuarios de python ( pip install mac-appify
) parece llevar a cabo los pasos de la respuesta anterior .
Puede ser útil así
pip install mac-appify
appify script.sh /Applications/$NAME.app
sin ladera
gato bengala
#!/bin/bash ; say "Hi" ; exit 0
(con cada uno de los comandos en diferentes líneas y sin el punto y coma).usuario3439894
gato bengala
gato bengala
usuario3439894
gato bengala
usuario3439894
gato bengala
gato bengala