¿Esta lista de lanzamiento está rota o solo soy yo?

1

Estaba leyendo una publicación sobre utilizando Bittorrent Sincronización en OS X que incluye una lista de lanzamiento que se supone que debe mantener la aplicación en ejecución en caso de que se bloquee. Sin embargo, no parece funcionar, ya que la aplicación se bloqueó y no se reinició. Estoy buscando ayuda para arreglar el error.

El plist se ve así:

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

El bit "inteligente" está utilizando /usr/bin/open para iniciar la aplicación, con -W para asegurarse de que open espera a que la aplicación salga. Pero creo que por eso tampoco funciona. Si estoy leyendo esto correctamente, la aplicación solo se reiniciará si /usr/bin/open se bloquea, no si Bittorrent Sync se bloquea. Para que funcione el enfoque anterior, open tendría que devolver el estado de error si la aplicación que se abrió se bloqueó (y esto no ocurre).

Sé que podría solucionar este problema eliminando open y, en cambio, codificando la ruta al ejecutable como /Applications/BitTorrent Sync.app/Contents/MacOS/BitTorrent Sync . Pero, ¿hay alguna alternativa que no requiera la codificación completa de la ruta? Usar open sería elegante, si funcionara.

    
pregunta Tom Harrington 26.02.2015 - 21:53

1 respuesta

1

Fue como esperaba. La versión en la pregunta no vuelve a iniciar la aplicación, porque /usr/bin/open no devuelve un estado de error cuando la aplicación falla. No pude encontrar una manera mejor que codificar el camino al ejecutable, por lo que ahora estoy usando lo siguiente.

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

He verificado que vuelve a iniciar la aplicación correctamente si se bloquea.

Puede encontrar una versión más fácilmente descargable de esto en enlace

    
respondido por el Tom Harrington 03.03.2015 - 22:16

Lea otras preguntas en las etiquetas