¿Cómo descomprimir y ejecutar .app?

1

Estoy intentando ejecutar un archivo .app de AppleScript comprimido.

unzip -p file.app.zip | open -

o

open < $(unzip -p file.app.zip)

¿Es esto posible?

    
pregunta lily 29.09.2018 - 03:29

2 respuestas

1

Como está tratando con una aplicación .app comprimida en zip, que es un paquete de aplicaciones con muchos archivos, creo que tendrá que extraer el la aplicación al disco primero para abrirla, porque el comando open para abrir una aplicación tiene la forma de open -a ... y no toma input de stdout .

Lo siguiente asume que el nombre de la aplicación en file.app.zip es file o el nombre exacto de la aplicación dentro del archivo .zip :

unzip -oq "file.app.zip" -d /tmp; open -a "/tmp/file.app"; sleep 1; rm -r "/tmp/file.app"

La línea de comando compuesta anterior extrae el file.app.zip a /tmp y luego lo abre, espera un segundo y luego elimina el /tmp/file.app . Tenga en cuenta que es posible que sea necesario ajustar el valor del comando sleep para que no se elimine la aplicación antes de que se abra y termine de ejecutarse.

Tenga en cuenta que el contenido de /tmp , que en realidad es /private/tmp , se elimina automáticamente al reiniciar. Por lo tanto, la línea de comando compuesta podría reducirse si no le importa si la aplicación permanece en /tmp' hasta el próximo reinicio:

unzip -oq "file.app.zip" -d /tmp; open -a "/tmp/file.app"
    
respondido por el user3439894 29.09.2018 - 15:37
0

Le está pidiendo al comando open que abra contenido desde stdin . Se puede hacer que open lea desde stdin pero abrirá los contenidos en el editor de texto, que no es lo que desea.

Intente usar osascript directamente: Si el archivo comprimido es simplemente AppleScript, realice esto con lo siguiente.

unzip -p file.zip | osascript - 

Desde la página de manual de osascript :

  

osascript buscará el script en uno de los siguientes tres lugares:

     
  1. Línea por línea especificada usando los conmutadores -e en la línea de comando.

  2.   
  3. Contenido en el archivo especificado por el primer nombre de archivo en la línea de comandos. Este archivo puede ser texto sin formato o un script compilado.

  4.   
  5. Pasó usando la entrada estándar. Esto funciona solo si no hay argumentos de nombre de archivo; para pasar argumentos a un script STDIN-read, debe especificar explícitamente '-' para el nombre del script.

  6.   
    
respondido por el ephsmith 29.09.2018 - 13:33

Lea otras preguntas en las etiquetas