0 votes

Question sur le chargement de l'agent de lancement

J'ai l'agent de lancement suivant qui fonctionne sur OS X et qui exécute le script ci-dessous pour supprimer une application lorsqu'un utilisateur télécharge une mise à jour du système d'exploitation à partir de l'App store. Il affiche ensuite un message à l'utilisateur après la suppression de l'application.

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

Je vais maintenant l'empaqueter et le déployer sur toutes nos machines Mac. Ma question est la suivante : que dois-je ajouter au script pour que le paquetage "charge" automatiquement l'agent de lancement une fois qu'il est installé ?

En d'autres termes, comment intégrer ce commandement ?

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

Voici la liste de contrôle

<?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>

1voto

klanomath Points 63400

Toutes les tâches liées aux éléments installés par des paquets (c'est-à-dire un installateur de pkg) sont effectuées avec des scripts preflight ou postflight qui sont inclus dans le paquet.

Un script de contrôle en amont peut vérifier si un dossier nécessaire existe et si ses permissions sont correctement définies. Un script postflight peut charger les agents de lancement et les démons installés par le programme d'installation du pkg et définir leurs propriétaires et leurs autorisations.

Dans votre cas, vous utiliserez un script postflight comme celui-ci :

#!/bin/bash

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

BTW : L'utilisation de if [[ $Version -ge 11 ]] déchargera et supprimera l'agent de lancement lors de l'installation d'El Capitan. Il se peut que vous deviez passer à 12.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X