1 votos

Es este launchd plist roto o es sólo a mí?

Estaba leyendo un post sobre el uso de Bittorrent Sync en OS X que incluye un launchd plist que se supone que va a mantener la aplicación en funcionamiento en el caso de que se bloquea. No parece funcionar, a pesar de que, desde que he tenido el bloqueo de la aplicación y no relanzamiento. Estoy buscando ayuda para arreglar el plist.

El plist se parece a esto:

<?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 "inteligente" poco es el uso de /usr/bin/open el lanzamiento de la app, -W para asegurarse de que open espera a que la aplicación para salir. Pero creo que esa es la razón por la que no trabaja realmente. Si estoy leyendo este derecho, la aplicación solo va a relanzar si /usr/bin/open se bloquea, no se si Bittorrent Sync se bloquea. Para que el enfoque anterior para el trabajo, open tendría que devolver el estado de error si la aplicación se abre había estrellado (y esto no sucede).

Sé que podría solucionar este cayendo open y en lugar de codificar la ruta de acceso al archivo ejecutable de la /Applications/BitTorrent Sync.app/Contents/MacOS/BitTorrent Sync. Pero hay una alternativa que no requiere codificar la ruta completa? El uso de open sería elegante, si funcionó.

1voto

Tom Harrington Puntos 187

Era como yo esperaba. La versión en la pregunta no re-lanzamiento de la aplicación, porque /usr/bin/open no devuelve un estado de error cuando la aplicación se bloquea. Yo no era capaz de encontrar una mejor manera de codificar la ruta de acceso al ejecutable, así que ahora estoy utilizando el 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 comprobado que este hace con éxito re-lanzamiento de la aplicación, si se bloquea.

Más fácilmente la versión descargable de este se puede encontrar en https://gist.github.com/atomicbird/ff2de46a594cdb5c8e69

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X