0 votos

Lanzar pregunta de carga de agente

Tengo el siguiente agente de lanzamiento que se ejecuta en OS X y ejecuta el siguiente script para eliminar una aplicación cuando un usuario descarga una actualización del sistema operativo desde la App Store. Luego muestra un mensaje a un usuario después de que se elimina.

#!/bin/bash

Versión=$(sw_vers | grep ProductVersion | tail -c 7 | cut -d . -f 2)    

if [[ $Versión -ge 11 ]]
then  
    launchctl unload /Library/LaunchAgents/net.company_name.blocksierra.plist
    rm -f /Library/LaunchAgents/net.company_name.blocksierra.plist
    rm -f /usr/local/bin/blocksierra.sh
exit 0

else
    rm -rf /Applications/Install\ macOS\ Sierra\ Public\ Beta.app/
    osascript -e 'display dialog "macOS Sierra no está permitido en computadoras en este momento." with title "Aviso de tecnología" buttons {"OK"} default button "OK" giving up after 30'
fi

Ahora voy a empaquetarlo y luego desplegarlo en todas nuestras máquinas Mac. Mi pregunta es ¿qué debo agregar al script para que el paquete "cargue" automáticamente el agente de lanzamiento una vez que se instale el paquete?

Entonces, en otras palabras, ¿cómo incorporo este comando?

sudo launchctl load /Library/LaunchAgents/net.company_name.blocksierra.plist

Aquí está el plist

Label
net.company_name.blocksierra
ProgramArguments

    /usr/local/bin/blocksierra.sh

KeepAlive

    PathState

        /Applications/Install macOS Sierra Public Beta.app/

OnDemand

1voto

klanomath Puntos 19587

Todos los trabajos relacionados con los elementos instalados por paquetes (es decir, un instalador de paquetes) se realizan con scripts de preflight o postflight que se incluyen en el paquete.

Un script de preflight puede verificar si existe una carpeta necesaria y si sus permisos están configurados correctamente. Un script de postflight puede cargar agentes de inicio y demonios instalados por el instalador de paquetes y establecer sus propietarios y permisos.

En tu caso, usarías un script de postflight como este:

#!/bin/bash

sudo /bin/launchctl load /Library/LaunchAgents/net.company_name.blocksierra.plist

Por cierto: Usar if [[ $Version -ge 11 ]] descargará y eliminará el agente de inicio cuando se instale El Capitan. Es posible que tengas que cambiar esto a 12.

0 votos

El script postflight que proporcionaste funciona y el Launchagent elimina la aplicación, sin embargo, al descargar la aplicación nuevamente NO la elimina. He verificado que el plist se carga escribiendo launch list. ¿Puedes aconsejarme?

0 votos

En mi prueba es 10.10.5. La versión de los demás oscila entre 10.8 y 10.11.

0 votos

Para bloquear tanto Sierra como la beta de Sierra. No necesitamos bloquear El Capitán. El objetivo es bloquear la actualización a Sierra desde cualquier sistema operativo previo en el que el usuario esté, por ejemplo, si el usuario está en 10.8/10.9/10.10 o 10.11.

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