pregunta de carga del agente de lanzamiento

0

Tengo el siguiente agente de inicio 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 tienda de aplicaciones. A continuación, muestra un mensaje a un usuario después de que se elimina.

#!/bin/bash

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

if [[ $Version -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 is not allowed on computers at this time." with title "Technology Notice" buttons {"OK"} default button "OK" giving up after 30'
fi

Ahora lo voy a empaquetar y luego implementarlo en todas nuestras máquinas Mac. Mi pregunta es: ¿qué agrego al script para que el paquete "cargue" automáticamente el agente de inicio una vez que el paquete esté instalado?

En otras palabras, ¿cómo incorporo este comando?

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

Aquí está el plist

<?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>Label</key>
<string>net.company_name.blocksierra</string>
<key>ProgramArguments</key>
<array>
    <string>/usr/local/bin/blocksierra.sh</string>
</array>
<key>KeepAlive</key>
<dict>
    <key>PathState</key>
    <dict>
        <key>/Applications/Install macOS Sierra Public Beta.app/</key>
        <true/>
    </dict>
</dict>
<key>OnDemand</key>
<true/>
</dict>
</plist>
    
pregunta sql1 14.09.2016 - 10:22

1 respuesta

1

Todos los trabajos relacionados con los elementos instalados por paquetes (es decir, un instalador de pkg) se realizan con scripts de verificación previa o posteriores al vuelo que se incluyen en el paquete.

Un script de verificación previa 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 pkg y establecer sus propietarios y permisos.

En su caso, usaría un script posterior al vuelo como este:

#!/bin/bash

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

BTW: El uso de if [[ $Version -ge 11 ]] descargará y eliminará el agente de inicio cuando se instale El Capitán. Es posible que tengas que cambiar esto a 12.

    
respondido por el klanomath 14.09.2016 - 11:44

Lea otras preguntas en las etiquetas