AppleScript si esegue nuovamente da solo dopo un riavvio avviato. Come evitarlo?

1

Ho uno script di shell che viene eseguito da un'app AppleScript. Lo script di shell riavvia la macchina a un certo punto con shutdown -r now .

Come posso evitare che l'applicazione AppleScript si avvii automaticamente dopo il riavvio?

  • L'app non è inclusa negli elementi di avvio
  • L'app viene riavviata come qualsiasi altra app aperta quando lo script della shell riavvia OS X

La sequenza è questa:

  1. Faccio doppio clic sull'app AppleScript
  2. AppleScript lancia uno script di shell in Terminal
  3. Lo script della shell, ad un certo punto, riavvia il sistema
  4. L'app AppleScript si riavvia dopo il riavvio
posta DavidD 09.12.2014 - 16:46
fonte

4 risposte

1

Fai in modo che AppleScript scriva un file vuoto in una posizione predefinita e verifichi la sua esistenza all'avvio dello script. Se il file è già lì, eliminalo e chiudi lo script; altrimenti procedi normalmente e riavvia.

    
risposta data 09.12.2014 - 17:20
fonte
1

Puoi provare a reindirizzare il comando della shell con

do shell script "insert_your_command &>/dev/null &"

e poi dirti all'app di uscire

EDIT
È possibile aggiungere un ritardo prima di reindirizzare il comando.

 do shell script "(sleep 5 ; insert_your_command) &>/dev/null &"
    
risposta data 09.12.2014 - 18:15
fonte
0

La mia ipotesi è che OS X sta ripristinando lo stato dell'app Apple Script dopo il suo riavvio. Si potrebbe provare e fare in modo che Apple Script cancelli il proprio stato dell'applicazione proprio prima del comando restart, anche se non ho verificato che funzioni o sia possibile. Dovrebbe trovarsi in, ~ / Library / Saved Application State /.

    
risposta data 09.12.2014 - 17:21
fonte
0

Ok trovato.

Lo script della shell doveva contenere le seguenti righe:

osascript -e 'tell app "System Events" to restart'
killall "Terminal"

I comandi della shell sopra iniziano il riavvio attraverso un comando Apple Script ad hoc, ma uccidono il terminale subito dopo. Questo ha l'effetto di uscire dall'app Apple Script appena prima che il processo di riavvio di OS X lo faccia. Pertanto, OS X non inserisce l'app Apple Script nell'elenco di app aperte che devono essere riaperte dopo il riavvio.

Due effetti collaterali dell'utilizzo di questo metodo:

  • il riavvio attraverso il comando di Apple Script lascia all'utente la possibilità di salvare il lavoro non salvato da app aperte, a differenza del comando shutdown -r now shell che forza il riavvio immediato.
  • Il terminale viene ancora interrotto bruscamente, il che potrebbe essere un problema se i processi sono in esecuzione in altre finestre / schede di Terminale
risposta data 10.12.2014 - 13:36
fonte

Leggi altre domande sui tag