Come decomprimere ed eseguire .app?

1

Sto cercando di eseguire un AppleScript .app che è compresso.

unzip -p file.app.zip | open -

o

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

È possibile?

    
posta lily 29.09.2018 - 03:29
fonte

2 risposte

1

Poiché hai a che fare con un'applicazione compressa .app compresso da zip, che è un pacchetto di applicazioni con molti file al suo interno, credo che dovrai estrarre il prima su disco per aprirlo, perché il comando open per aprire un'applicazione è sotto forma di open -a ... e non prende input da stdout .

Quanto segue presuppone che il nome dell'app in file.app.zip sia file o il nome esatto dell'app all'interno del file .zip :

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

La precedente riga di comando composta estrae file.app.zip in /tmp e poi lo apre, attende un secondo e poi elimina /tmp/file.app . Nota che il valore del comando sleep potrebbe dover essere regolato per evitare che l'app venga eliminata prima che venga aperta e terminata.

Si noti che il contenuto di /tmp , che in realtà è /private/tmp , viene automaticamente cancellato al riavvio. Quindi la riga di comando composta potrebbe essere abbreviata se non ti interessa se l'app rimane in /tmp' fino al successivo riavvio:

unzip -oq "file.app.zip" -d /tmp; open -a "/tmp/file.app"
    
risposta data 29.09.2018 - 15:37
fonte
0

Stai chiedendo il comando open per aprire il contenuto da stdin . open può essere fatto leggere da stdin , ma aprirà i contenuti nell'editor di testo - che non è quello che vuoi.

Prova a utilizzare osascript direttamente: Se il file zippato è semplicemente AppleScript, esegui questo con il seguente.

unzip -p file.zip | osascript - 

Dalla manpage osascript :

osascript will look for the script in one of the following three places:

  1. Specified line by line using -e switches on the command line.

  2. Contained in the file specified by the first filename on the command line. This file may be plain text or a compiled script.

  3. Passed in using standard input. This works only if there are no filename arguments; to pass arguments to a STDIN-read script, you must explicitly specify '-' for the script name.

    
risposta data 29.09.2018 - 13:33
fonte

Leggi altre domande sui tag