2 votos

Hacer que el agente launchd se desinstale solo

Tengo un agente launchd que acompaña a otra herramienta. Cuando se ejecuta, comprueba si la herramienta está lista antes de continuar. Quiero añadir un caso extra en el que el launchd también se elimine a sí mismo si la herramienta ya no existe.

Esta metodología se utiliza en una serie de herramientas distintas. Por ello, las hago lo más uniformes posible.

Puedo decirle al plist del agente launchd que se borre a sí mismo añadiendo su ruta completa y editándolo cada vez para cada herramienta, pero ¿hay alguna forma mejor? ¿Hay (por ejemplo) una variable que podría agarrar donde el launchd devuelve su propio nombre o ruta?

También estoy abierto a otros métodos que permitan a un agente launchd desinstalarse a sí mismo. Es importante que no tenga que llamar a una herramienta que no se incluye con una instalación estándar de MacOS, ya que eso iría en contra del objetivo.

0voto

Douglas Puntos 10417

Puedo decirle al plist del agente launchd que se borre a sí mismo añadiendo su ruta completa y editándola cada vez para cada herramienta, pero ¿hay alguna forma mejor?

No tengo conocimiento de launchd .plist que le permitirá "borrarse a sí mismo".

Cuando tu Mac arranca y cuando cargas un .plist, launchd escaneos (según proceda): /Library/LaunchAgents , ~/Library/LaunchAgents , /Library/LaunchDaemons , /System/Library/LaunchAgents y /System/Library/LaunchDaemons . Si el .plist no está, no se carga.

Por lo tanto, si "comprueba si la herramienta existe y se elimina" tendrá que incorporar esa lógica como parte del script que es lanzado por launchd.

¿Existe (por ejemplo) una variable que pueda coger donde el launchd devuelva su propio nombre o ruta?

launchd no devuelve "su propio nombre o ruta"; carga/descarga/lanza/detine un trabajo definido por un .plist en una ruta. Por lo tanto, si quieres que esa variable esté disponible, tendrás que establecerla como parte del entorno definido en el .plist.

Dicho esto, no creo que sea posible que ambos puedan tener un trabajo funcionando y descargarlo simultáneamente especialmente por sí mismo; más aún si requiere privilegios elevados para hacerlo. Esta es probablemente la razón por la que instalar/desinstalar requiere la intervención del usuario.

Además, según la para launchd.plist se dirige a los agentes/demonios que acceden a archivos/carpetas "protegidos":

PRECAUCIONES

Los daemons y agentes gestionados por launchd están sujetos a las protecciones de privacidad del usuario de MacOS. Es posible que la especificación de archivos y carpetas sensibles a la privacidad en un plist de launchd no tenga el efecto deseado y evite que el trabajo se ejecute.

Haciendo que un agente llame a un script que en efecto se borra a sí mismo (de uno de los directorios listados arriba) puede tener consecuencias no deseadas y puede que ni siquiera se ejecute.

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