3 votos

¿Cómo se descomprime y se ejecuta el .app?

Estoy intentando ejecutar una aplicación AppleScript que está comprimida.

unzip -p file.app.zip | open -

o

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

¿Es esto posible?

1voto

user3439894 Puntos 5883

Como se trata de un zip comprimido aplicación .app que es un paquete de aplicaciones con muchos archivos en ella, creo que tendrás que extraer la aplicación al disco primero para abrirla, porque el open comando para abrir una aplicación es en forma de open -a ... y no toma entrada de stdout .

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

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

Lo anterior línea de comandos compuesta extrae el file.app.zip a /tmp y luego lo abre, espera un segundo y borra el /tmp/file.app . Tenga en cuenta que el valor de la sleep comando puede ser necesario ajustar para que no se borre 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 borra automáticamente al reiniciar. Por lo tanto, el línea de comandos compuesta podría acortarse si no le importa que la aplicación permanezca en /tmp' hasta el próximo reinicio:

unzip -oq "file.app.zip" -d /tmp; open -a "/tmp/file.app"

1voto

ephsmith Puntos 1627

Usted está preguntando al open para abrir el contenido de stdin . open puede hacerse para leer desde stdin pero abrirá el contenido en un editor de texto, que no es lo que quieres.

Pruebe a utilizar osascript directamente: Si el archivo comprimido es simplemente AppleScript, entonces se logra esto con lo siguiente.

unzip -p file.zip | osascript - 

Desde el osascript página de manual:

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

  1. Se especifica línea por línea utilizando los interruptores -e en la línea de comandos.

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

  3. Pasado a través de la entrada estándar. Esto funciona sólo si no hay argumentos de nombre de archivo; para pasar argumentos a un script de lectura STDIN, debe especificar explícitamente '-' para el nombre de script.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X