Pour une raison quelconque, Dropbox se termine (se bloque ou se ferme) après avoir été en ligne quelques jours, sans explication.LaunchAgent plist ne trouve pas le chemin vers AppleScript dans iCloud
J'ai donc commencé à chercher un moyen pour AppleScript
de redémarrer automatiquement l'application quand elle se termine.
Cela m'a conduit à ce script:
repeat
delay 120 #Run every two minutes
tell application "System Events"
if name of every process does not contain "Dropbox" then tell application "Dropbox" to launch
end tell
delay 5
end repeat
Je veux aussi le script à exécuter en arrière-plan, donc je mis en œuvre ma propre variante de cette Ask Different solution pour launchctl
.
Dans ~/Library/LaunchAgents/
, je crée un fichier nommé dropbox-keep-alive.plist
avec ce contenu:
<?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>dropbox-keep-alive.job</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>/Users/xxx/Library/Mobile\ Documents/com\~apple\~ScriptEditor2/Documents/dropbox-keep-alive.scpt</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Le chemin vers l'AppleScript est donnée dans le <array>
ci-dessus, et une étiquette .job
pour launchutil
est attribué dans le <key>
.
je puis charger le .plist
:
launchctl load -w ~/Library/LaunchAgents/dropbox-keep-alive.plist
Et puis il commence:
launchctl start dropbox-keep-alive.job
Pour les tests, je quit Dropbox puis attendre 2 + minutes, mais rien ne se passe.
Si j'essaie à nouveau launchctl load -w
, le message m'indique qu'il est déjà chargé. launchctl start
ne donne aucun message de réponse.
Je sais que l'AppleScript fonctionne car il est fonctionnel lorsqu'il est exécuté directement avec osascript
. Mais quelque part dans le .plist
- ou ma gestion de launchctl
- il y a quelque chose qui ne fonctionne pas.
J'ai essayé de launchctl unload -w
le script et de refaire le processus. Des idées?
En fait, vous n'avez pas besoin d'un script. 'launchctl.plist' a une clé' KeepAlive' – vadian
@vadian Merci pour votre suggestion!Donc, je n'aurais besoin d'inclure « KeepAlive » et une sorte d'identifiant pour l'application Dropbox (pas sûr comment)? N'hésitez pas à laisser une réponse si vous connaissez la solution. –
Winterflags
Vous devez spécifier le chemin d'accès complet à l'exécutable Dropbox (pas à l'ensemble d'applications) dans le tableau 'ProgramArguments'. – vadian