Lancia la domanda di caricamento dell'agente

0

Ho il seguente agente di avvio che gira su OS X ed esegue lo script seguente per eliminare un'app quando un utente scarica un aggiornamento del SO dall'App store. Quindi visualizza un messaggio per un utente dopo che è stato cancellato.

#!/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

Ora lo comprimo e poi lo distribuisco su tutte le nostre macchine Mac. La mia domanda è: cosa aggiungo allo script per fare in modo che il pacchetto "carichi" automaticamente il launchagent una volta installato il pacchetto?

Quindi, in altre parole, come faccio a incorporare questo comando?

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

Ecco il 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>
    
posta sql1 14.09.2016 - 10:22
fonte

1 risposta

1

Tutti i lavori relativi agli elementi installati dai pacchetti (ad esempio un programma di installazione pkg) vengono eseguiti con script preflight o postflight inclusi nel pacchetto.

Uno script di preflight può verificare se esiste una cartella necessaria e se le sue autorizzazioni sono impostate correttamente. Uno script postflight può caricare gli agenti di lancio e i daemon installati dal programma di installazione di pkg e impostare i relativi proprietari e permessi.

Nel tuo caso useresti uno script postflight come questo:

#!/bin/bash

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

BTW: l'utilizzo di if [[ $Version -ge 11 ]] scaricherà ed eliminerà l'agente di lancio quando El Capitan è installato. Potrebbe essere necessario cambiare questo a 12.

    
risposta data 14.09.2016 - 11:44
fonte

Leggi altre domande sui tag