Comment mettre à jour l'application App Store à partir de la ligne de commande?

18

Je voudrais forcer une mise à jour des applications App Store à partir de la ligne de commande.

Comment puis-je faire ceci?

Sorin
la source
2
Il ne semble pas y avoir d'aide en ligne de commande comme la mise à jour logicielle globale, vous pouvez donc être limité au lancement d'un script qui automatisera les commandes de l'interface graphique. Souhaitez-vous modifier la question pour clarifier si vous vous attendez à ce que la solution "fonctionnelle" soit un terminal uniquement ou si un script Automator qui saisira votre mot de passe lorsque vous y êtes invité correspond à ce que vous recherchez?
bmike
Je cherche quelque chose sans surveillance, mais si cela nécessite l'ID / mot de passe AppleID, je trouve correct de l'inclure dans le script.
sorin
1
Voir également apple.stackexchange.com/questions/42353/… pour une solution qui appelle une application tierce
bmike

Réponses:

6

Apple ne fournit pas d'assistance de ligne de commande ni aucune classe de cacao scriptable sur laquelle vous pouvez vous accrocher pour l'automatisation. Contrairement à la mise à jour logicielle globale, qui permet les mises à jour et les installations hors de la boîte, vous pouvez scripter le processus de clic sur les boutons avec une souris à l'aide d'Automator.

Cependant, l'App Store a été rétroconçue et libérée open source ainsi qu'une forme binaire :

L'installation est rapide et semble être assez fiable sur la version actuelle d'OS X 10.11:

brew install argon/mas/mas 

Avec la source publiée, je m'attendrais à 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 (le gestionnaire de fenêtres est en cours d'exécution), vous pouvez utiliser Automator et la fonction "Watch me do" pour automatiser les mises à jour et stocker le mot de passe de votre magasin dans le script de manière assez peu sûre.

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 commande de ligne de opencommande pour le lancer.

Si l'application App Store expose cette fonction à des scripts, vous aurez plus d'options à partir de la ligne de commande. Il serait facile à utiliser sdef, sdpet gen_bridge_metadatade vider l'ensemble des choses dictionnaire et de script en utilisant scriptable rubis de la ligne de commande, mais à l' heure actuelle la meilleure option serait d'utiliser l' masoutil de ligne de commande.

bmike
la source
1
Wow, c'est vraiment ennuyeux. Les mises à jour logicielles habituelles sont facilement scriptables à l'aide de softwareupdate (8).
Arne
2
Je voulais juste dire pour mémoire - Il est clair qu'Apple a consciemment décidé de rendre difficile / de ne fournir aucun outil ou crochet ou assistance pour automatiser les installations et les mises à jour de l'App Store. Le système de base a toujours le softwareupdateprocessus et il se connecte même à l'App Store sur Mountain Lion - mais c'est uniquement pour les applications non App Store.
bmike
4

L'App Store n'est tout simplement pas adapté à l'administration. À peine un gestionnaire de quasi-packages, il n'est pas aussi utile ou fiable que de vrais gestionnaires de packages comme pkgsrc, les ports FreeBSD, aptitude, RPM, macports ou même softwareupdate. D'après mon expérience, il est imprévisible et une barbe pour les développeurs commerciaux de jurer leurs marchandises. 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 oubliez-le, cela ne vous dérangera plus. ;-)


Utilisez plutôt ARD, mais pas un gestionnaire de packages, il gère les packages, 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 d'administration 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

Installez ensuite:

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 générer une erreur amusante si vous n'exécutez pas 10.9, ou si aucune version précédente d'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 égal (soit / ou ici, pas besoin d'utiliser à la fois pkgutil et xar ... je suis juste en train d'être 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, alors éjectez-la:

hdiutil detach -quiet /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/

Et maintenant ce que vous verrez si vous

cd ARDexpanded/RemoteDesktopAdmin372.pkg/

ls

est

    Bom         PackageInfo Payload     Scripts

Le contenu du fichier Payload, qui est une archive cpio compressée avec gzip, est ce que vous recherchez. Donc, avec quelques commandes canalisées, nous pouvons accéder au bundle d'application:

cat Payload | gzip -d - | cpio -id

ls

Retour:

    Applications Bom          Library      PackageInfo  Payload      Scripts

Et vous avez presque fini.

cp -R Applications/Remote\ Desktop.app /Applications/

Vous avez maintenant 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 du travail.


Pour 10.6 Snow Leopard, vous aurez besoin d'une version légèrement antérieure d'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 cela vous renvoie ceci:

    installer: Cannot install on volume / because it is disabled.
    installer: This update could not find Remote Desktop on this volume.

puis 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

descendre jusqu'à la charge utile:

    cd ARD353/RemoteDesktopAdmin353.pkg/

    ls

Retour:

    Bom         PackageInfo Payload     Scripts

Alors lancez:

cat Payload | gzip -d - | cpio -id

ls

Retour:

Applications Bom          Library      PackageInfo  Payload      Scripts

Et vous avez presque terminé:

cp -R Applications/Remote\ Desktop.app /Applications/

achetez 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.

chillin
la source
1
Excellente réponse, j'ai appris un tas de nouvelles choses que je peux faire dans le terminal. +1
shrx
1

Vous pouvez utiliser l' softwareupdateoutil.

sudo softwareupdate -l

Répertorie toutes les mises à jour disponibles.

sudo softwareupdate -ia

Installe toutes les mises à jour disponibles.

Moritz Petersen
la source
Cela ne fonctionne pas pour les applications Appstore, uniquement pour les packages Apple.
Brice
essayez aussi: man softwareupdate
Billy McCloskey