Come si legge nel titolo, "Impossibile uscire dall'app lanciata tramite launchd" -o più precisamente, posso lasciarlo, ma poi si riavvia automaticamente.
Sfondo : preferisco usare BusyCal, non iCal, ma ci sono alcune cose di calendario che devono essere fatte da iCal prima che BusyCal possa ottenere i risultati. Ho pensato di creare due script di avvio: uno per lanciare iCal ogni giorno alle 5 del mattino e un altro per chiuderlo pochi minuti dopo.
Ecco i plist da avviare (in ~/Library/LaunchAgents/com.dori.iCalLaunch.plist
):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>com.dori.iCalLaunch</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Applications/iCal.app/Contents/MacOS/iCal</string>
</array>
<key>ServiceDescription</key>
<string>iCal Launcher</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
</dict>
</dict>
</plist>
Ho capito che non avevo bisogno delle chiavi KeepAlive
e OnDemand
, ma le ho comunque inserite per cercare di fermare il rilancio.
Ecco i plist da chiudere (in ~/Library/LaunchAgents/com.dori.iCalQuit.plist
):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.dori.iCalQuit</string>
<key>Program</key>
<string>/usr/bin/osascript</string>
<key>ProgramArguments</key>
<array>
<string>osascript</string>
<string>-e</string>
<string>tell application "iCal" to quit</string>
</array>
<key>ServiceDescription</key>
<string>iCal Quitter</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
In base ai miei file di registro, entrambi funzionano bene, ma dopo che Quit è stato eseguito, iCal si rilancia.
Qualche idea per cose da provare o cose che potrebbero causare questo?