Est-ce que cela a été lancé ou est-ce juste?

Je lisais un article sur l' utilisation de Bittorrent Sync sur OS X, qui inclut un pli de lancement qui est supposé maintenir l'application en état de fonctionnement en cas de plantage. Il ne semble pas fonctionner, cependant, depuis que j'ai eu le crash de l'application et ne pas relancer. Je cherche de l'aide pour réparer la plaie.

La gaine ressemble à ceci:

<?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> <dict> <key>Crashed</key> <true/> <key>SuccessfulExit</key> <false/> </dict> <key>Label</key> <ssortingng>sync.com.tjluoma.bittorrentsync</ssortingng> <key>ProgramArguments</key> <array> <ssortingng>/usr/bin/open</ssortingng> <ssortingng>-W</ssortingng> <ssortingng>-a</ssortingng> <ssortingng>BitTorrent Sync</ssortingng> </array> <key>RunAtLoad</key> <true/> </dict> </plist> 

Le bit "intelligent" utilise /usr/bin/open pour lancer l'application, avec -W pour s'assurer que l' open attend que l'application se ferme. Mais je pense que c'est aussi pourquoi cela ne fonctionne pas vraiment. Si je lis ce droit, l'application ne relancera que si /usr/bin/open bloque, pas si Bittorrent Sync se bloque. Pour que l'approche ci-dessus fonctionne, open devrait renvoyer le statut d'erreur si l'application qu'il avait ouverte s'était écrasée (et cela n'arrive pas).

Je sais que je pourrais résoudre ce problème en lâchant et en codant le path vers l'exécutable en tant que /Applications/BitTorrent Sync.app/Contents/MacOS/BitTorrent Sync . Mais existe-t-il une alternative qui ne nécessite pas de coder en dur le path complet? Utiliser open serait élégant, si ça marchait.

C'était comme prévu. La version de la question ne permet pas de relancer l'application, car /usr/bin/open ne renvoie pas d'erreur lorsque l'application se bloque. Je n'ai pas réussi à find un meilleur moyen que de coder en dur le path de l'exécutable, donc j'utilise maintenant ce qui suit.

 <!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> <dict> <key>Crashed</key> <true/> <key>SuccessfulExit</key> <false/> </dict> <key>Label</key> <ssortingng>com.getsync.bittorrentsync</ssortingng> <key>Program</key> <ssortingng>/Applications/BitTorrent Sync.app/Contents/MacOS/BitTorrent Sync</ssortingng> <key>RunAtLoad</key> <true/> </dict> </plist> 

Je l'ai vérifié que cela relance avec succès l'application si elle se bloque.

Une version plus facilement téléchargeable de ceci peut être trouvée à https://gist.github.com/atomicbird/ff2de46a594cdb5c8e69