AppleScript se executa novamente após uma reinicialização iniciada. Como evitar isso?


1

Eu tenho um script de shell que é executado por um aplicativo AppleScript. Esse shell script reinicia a máquina em algum momento com shutdown -r now.

Como evitar que o aplicativo AppleScript se inicie automaticamente novamente após a reinicialização?

  • O aplicativo não está incluído nos itens de inicialização
  • O aplicativo é iniciado novamente, como qualquer outro aplicativo aberto, quando o shell script reinicia o OS X

A sequência é esta:

  1. Clico duas vezes no aplicativo AppleScript
  2. AppleScript lança um script de shell no Terminal
  3. O script shell, em algum momento, reinicia o sistema
  4. O aplicativo AppleScript é iniciado novamente após a reinicialização

Precisa de mais informações ... como o aplicativo está sendo lançado agora? Você adicionou o aplicativo aos itens de inicialização?
Flying Trashcan

Respostas:


1

Faça com que seu AppleScript grave um arquivo vazio em um local predefinido e teste sua existência quando o script iniciar. Se o arquivo já estiver lá, exclua-o e feche o script; caso contrário, proceda normalmente e reinicie.


1

Você pode tentar redirecionar o comando shell com

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

e, em seguida, diga ao aplicativo para sair

EDIT
Você também pode adicionar um atraso antes de redirecionar o comando.

 do shell script "(sleep 5 ; insert_your_command) &>/dev/null &"

O aplicativo pode não ter tempo para sair. Talvez o script shell o encerre com osascript -e 'diga ao aplicativo "Script Editor" para encerrar' antes de encerrar. Mas você ainda precisa desanexar o shell script com o & à direita, ou ele será morto quando o aplicativo sair.
9788 ganglustein

O aplicativo AppleScript do OP precisa ser informado para sair, não o "Editor de scripts".
precisa saber é o seguinte

0

Meu palpite é que o OS X está restaurando o estado do Apple Script App após a reinicialização. Você pode tentar fazer com que o Apple Script exclua seu próprio estado de aplicativo antes do comando restart, embora eu não tenha verificado se isso funciona ou é possível. Ele deve estar localizado em ~ / Library / Saved Application State /.


Eu não acho que o AppleScript possa saber quando excluir seu estado antes da reinicialização, pois a reinicialização é iniciada por meio de um comando shell.
DavidD

Mas, como você disse, o script de shell é executado pelo aplicativo Applescript. O aplicativo ainda está aberto quando o script do shell é executado? Nesse caso, pode estar restaurando seu estado após a reinicialização.
Flying Trashcan

Sim, o aplicativo ainda está aberta quando o shell script é lançado (em uma janela do Terminal)
DavidD

0

Ok, encontrei.

O script de shell precisava ter as seguintes linhas:

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

Os comandos do shell acima iniciam a reinicialização através de um comando ad hoc do Apple Script, mas acabam com o Terminal imediatamente após. Isso tem o efeito de sair do aplicativo Apple Script antes do processo de reinicialização do OS X. Portanto, o OS X não coloca o aplicativo Apple Script na lista de aplicativos abertos que precisam ser reabertos após a reinicialização.

Dois efeitos colaterais do uso desse método:

  • A reinicialização por meio do comando Apple Script deixa ao usuário a possibilidade de salvar trabalhos não salvos em aplicativos abertos, ao contrário do shutdown -r nowcomando shell que força uma reinicialização imediata.
  • O terminal ainda é interrompido abruptamente, o que pode ser um problema se processos estiverem sendo executados em outras janelas / guias do terminal
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.