Je voudrais forcer une mise à jour des applications App Store à partir de la ligne de commande.
Comment puis-je le faire ?
Je voudrais forcer une mise à jour des applications App Store à partir de la ligne de commande.
Comment puis-je le faire ?
Apple ne fournit pas d'aide en ligne de commande ni de classes de cacao scriptables auxquelles vous pouvez vous raccrocher pour l'automatisation. Contrairement à la mise à jour globale du logiciel, qui permet des mises à jour et des installations d'emblée, vous pouvez scriptle processus de cliquer sur des boutons avec une souris en utilisant Automator.
Cependant, le magasin d'applications a fait l'objet d'une ingénierie inverse et a été publié en open source. ainsi qu'une forme binaire :
L'installation est rapide et il semble être assez fiable sur la version actuelle d'OS X 10.11 :
brew install argon/mas/mas
Avec la publication des sources, je m'attends à ce que d'autres implémentations de cet outil apparaissent, peut-être même une scriptée avec Python.
Si quelqu'un est connecté au mac (windowmanager est en cours d'exécution), vous pouvez utiliser Automator et la fonction "watch me do" pour automatiser les mises à jour et le stockage du mot de passe de votre magasin dans le script de manière assez peu sécurisée.
Voici deux tutoriels pour vous aider à démarrer si cela répond à vos besoins.
http://www.tuaw.com/2009/01/19/mac-automation-creating-watch-me-do-workflows/
http://automator.us/leopard/features/virtual-user.html
Une fois que vous avez un script fonctionnel, vous pouvez utiliser la ligne de commande open
pour le lancer.
Si l'application App Store expose un jour cette fonction aux scripts, vous aurez davantage d'options à partir de la ligne de commande. Il serait facile d'utiliser sdef
, sdp
y gen_bridge_metadata
à vider tout le dictionnaire scriptable et des choses en utilisant ruby à partir de la ligne de commande, mais pour l'instant, la meilleure option serait d'utiliser la fonction mas
outil de ligne de commande.
Wow, c'est vraiment ennuyeux. Les mises à jour habituelles du logiciel sont facilement scriptables en utilisant softwareupdate(8).
Je voulais juste déclarer pour le dossier - Il est clair qu'Apple a consciemment décidé de rendre difficile / de ne pas fournir d'outil ou de crochet ou d'assistance pour automatiser les installations et les mises à jour de l'App Store. Le système de base a toujours le softwareupdate
et il se connecte même à l'App Store sur Mountain Lion, mais uniquement pour les applications qui n'appartiennent pas à l'App Store.
L'App Store n'est tout simplement pas adapté à l'administration. A peine un quasi gestionnaire de paquets, il est loin d'être aussi utile ou fiable que les vrais gestionnaires de paquets comme pkgsrc, FreeBSD ports, aptitude, RPM, macports ou même softwareupdate. D'après mon expérience, il est imprévisible et permet aux développeurs commerciaux de vendre leurs produits. Il n'y a donc vraiment qu'une seule façon rationnelle et responsable, en tant qu'administrateur compétent, de travailler avec l'App Store :
sudo launchctl unload -w /System/Library/LaunchAgents/com.apple.store_helper.plist
sudo launchctl unload -w /System/Library/LaunchAgents/com.apple.storeagent.plist
sudo mkdir /System/Library/LaunchAgents\ \(disabled\)/
sudo mv /System/Library/LaunchAgents/com.apple.store* /System/Library/LaunchAgents\ \(disabled\)/
Et sortez-la de votre esprit, elle ne vous troublera plus ;-)
Utilisez ARD à la place, bien que ce ne soit pas un gestionnaire de paquets, il gère les paquets, les installations, les mises à jour et les mises à niveau, il fera ce que vous voulez, vous fera gagner du temps et ne vous laissera pas tomber :
Pour Apple Remote Desktop 3, pour 10.9 :
Consultez d'abord le guide de l'administrateur pour vous convaincre que c'est la voie à suivre :
curl -Ok http://images.apple.com/ca/fr/remotedesktop/pdf/ARD3_AdminGuide.pdf
open ARD3_AdminGuide.pdf
Puis installez :
curl -Ok http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/031-2845.20140313.rerft/RemoteDesktopAdmin372.dmg
hdiutil attach -quiet -noverify -nobrowse -noautoopen RemoteDesktopAdmin372.dmg
sudo installer -pkg /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg -target /
mais cela peut donner lieu à une drôle d'erreur si la version 10.9 n'est pas utilisée, ou si aucune version précédente de ARD n'est installée, et si c'est le cas, essayez :
pkgutil --expand /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg ARDexpanded/
ou pour un effet équivalent (soit l'un soit l'autre ici, il n'est pas nécessaire d'utiliser à la fois pkgutil et xar.... Je suis juste minutieux) :
mkdir ARDexpanded
cd ARDexpanded
xar -xf /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg
Et nous n'avons plus besoin de l'image disque attachée, donc éjectez-la :
hdiutil detach -quiet /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/
Et maintenant, ce que vous allez voir si vous
cd ARDexpanded/RemoteDesktopAdmin372.pkg/
ls
est
Bom PackageInfo Payload Scripts
Ce que contient le fichier Payload, qui est une archive cpio compressée avec gzip, est ce que vous recherchez. Donc, avec quelques commandes pipées, nous pouvons accéder au paquet d'applications :
cat Payload | gzip -d - | cpio -id
ls
retours :
Applications Bom Library PackageInfo Payload Scripts
Et vous avez presque fini.
cp -R Applications/Remote\ Desktop.app /Applications/
Maintenant vous avez installé Apple Remote Desktop Admin 3.7.2
Il ne vous reste donc plus qu'à acheter votre licence :
open http://store.apple.com/us_smb_78313/product/D6020Z/A/apple-remote-desktop-3-volume-licenses-20-seats-price-is-per-seat
Lancez /Applications/Remote\ Desktop.app et sérialisez. Et faites votre travail.
Pour 10.6 Snow Leopard, vous aurez besoin d'une version légèrement antérieure de ARD :
curl -Ok http://images.apple.com/ca/fr/remotedesktop/pdf/ARD3_AdminGuide.pdf
curl -Ok http://supportdownload.apple.com/download.info.apple.com/Apple_Support_Area/Apple_Software_Updates/Mac_OS_X/downloads/041-6789.20120917.xD6TR/RemoteDesktopAdmin353.dmg
hdiutil attach -quiet -noverify -nobrowse -noautoopen RemoteDesktopAdmin353.dmg
sudo installer -pkg /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update/RemoteDesktopAdmin353.pkg -target /
et si elle vous renvoie ça :
installer: Cannot install on volume / because it is disabled.
installer: This update could not find Remote Desktop on this volume.
alors essayez :
pkgutil --expand /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update/RemoteDesktopAdmin353.pkg ARD353
hdiutil detach -quiet /Volumes/Apple\ Remote\ Desktop\ 3.5.3\ Admin\ Update
descendez jusqu'à la charge utile :
cd ARD353/RemoteDesktopAdmin353.pkg/
ls
retours :
Bom PackageInfo Payload Scripts
Alors cours :
cat Payload | gzip -d - | cpio -id
ls
retours :
Applications Bom Library PackageInfo Payload Scripts
Et vous avez presque fini :
cp -R Applications/Remote\ Desktop.app /Applications/
acheter votre licence :
open http://store.apple.com/us_smb_78313/product/D6020Z/A/apple-remote-desktop-3-volume-licenses-20-seats-price-is-per-seat
Lancez /Applications/Remote\ Desktop.app et sérialisez. Et faites quelque chose.
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.
2 votes
Il ne semble pas y avoir d'aide en ligne de commande comme la mise à jour globale du logiciel, donc vous pouvez être limité à lancer un script qui automatisera les commandes de l'interface graphique. Pourriez-vous modifier la question pour préciser si vous attendez que la solution "fonctionnelle" soit un terminal uniquement ou si un script d'Automator qui saisira votre mot de passe lorsqu'il vous sera demandé est ce que vous recherchez.
0 votes
Je cherche quelque chose de non surveillé, néanmoins si cela nécessite l'identifiant AppleID/mot de passe je trouve ok de l'inclure dans le script.
1 votes
Voir aussi apple.stackexchange.com/questions/42353/ pour une solution qui appelle une application tierce