Come aggiornare l'applicazione App Store dalla riga di comando?


18

Vorrei forzare un aggiornamento delle applicazioni dell'App Store dalla riga di comando.

Come posso fare questo?


2
Non sembra esserci un aiuto da linea di comando come l'aggiornamento generale del software, quindi potresti essere limitato all'avvio di uno script che automatizzerà i comandi della GUI. Modificheresti la domanda per chiarire se ti aspetti che la soluzione "funzionante" sia solo un terminale o se uno script di Automator che inserirà la tua password quando ti viene chiesto è quello che stai cercando.
bmike

Sto cercando qualcosa di incustodito, tuttavia se questo richiede l'ID / password AppleID trovo ok per includerlo nello script.
sorin,

1
Vedi anche apple.stackexchange.com/questions/42353/… per una soluzione che chiama un'app di terze parti
bmike

Risposte:


6

Apple non fornisce un aiuto da riga di comando o classi di cacao gestibili tramite script a cui puoi affidarti per l'automazione. A differenza dell'aggiornamento software complessivo, che consente aggiornamenti e installazioni predefiniti, è possibile eseguire lo script del processo di clic sui pulsanti con il mouse utilizzando Automator.

Tuttavia, l'app store è stato decodificato e rilasciato open source , nonché un modulo binario :

L'installazione è rapida e sembra essere abbastanza affidabile sulla versione corrente di OS X 10.11:

brew install argon/mas/mas 

Con il rilascio della fonte, mi aspetto che appaiano altre implementazioni di questo strumento, forse anche una sceneggiata con Python.

Se qualcuno ha effettuato l'accesso al mac (windowmanager è in esecuzione), puoi utilizzare Automator e la funzione "guardami fare" per automatizzare gli aggiornamenti e archiviare la password del tuo negozio nello script in modo abbastanza insicuro.

Ecco due tutorial per iniziare se questo soddisfa le tue esigenze.

http://www.tuaw.com/2009/01/19/mac-automation-creating-watch-me-do-workflows/

http://automator.us/leopard/features/virtual-user.html

Una volta che hai uno script funzionante, puoi usare il comando da riga di opencomando per avviarlo.

Se l'app App Store espone mai quella funzione allo scripting avrai più opzioni dalla riga di comando. Sarebbe facile da usare sdef, sdpe gen_bridge_metadatadi discarica l'intero cose dizionario script e script utilizzando rubino dalla linea di comando, ma al momento l'opzione migliore sarebbe quella di utilizzare lo masstrumento da riga di comando.


1
Wow, questo è davvero fastidioso. I soliti aggiornamenti software sono facilmente gestibili tramite script utilizzando softwareupdate (8).
Arne,

2
Volevo solo dichiarare per la cronaca - È chiaro che Apple ha consapevolmente deciso di renderlo difficile / non fornire alcun strumento o hook o assistenza per automatizzare le installazioni e gli aggiornamenti dell'App Store. Il sistema principale ha ancora il softwareupdateprocesso e si collega persino all'App Store su Mountain Lion, ma è solo per le app non App Store.
bmike

4

L'App Store non è semplicemente adatto per l'amministrazione. A malapena un gestore di quasi-pacchetti, non è così utile o affidabile come i veri gestori di pacchetti come pkgsrc, porte FreeBSD, aptitude, RPM, macports o persino l'aggiornamento del software. Nella mia esperienza, è imprevedibile e una barba per gli sviluppatori commerciali impegnare le loro merci. Quindi c'è davvero solo un modo razionale e responsabile, come amministratore competente, di lavorare con 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\)/

E tienilo fuori di testa, non ti disturberà più. ;-)


Usa invece ARD, sebbene non sia un gestore di pacchetti, gestisce pacchetti, installazioni, aggiornamenti e upgrade, farà ciò che desideri, risparmia tempo e non ti deluderà:

Per Apple Remote Desktop 3, per 10.9:

Consulta prima la guida dell'amministratore per convincerti che questa è la strada da percorrere:

curl -Ok http://images.apple.com/ca/fr/remotedesktop/pdf/ARD3_AdminGuide.pdf

    open ARD3_AdminGuide.pdf

Quindi installare:

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 /

ma ciò potrebbe generare un errore divertente se non è in esecuzione 10.9 o se non è installata alcuna versione precedente di ARD e, in caso affermativo, provare:

pkgutil --expand /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg ARDexpanded/

o a parità di effetto (o / o qui, non è necessario utilizzare sia pkgutil che xar ... Sto solo facendo attenzione):

mkdir ARDexpanded

cd ARDexpanded

xar -xf /Volumes/Apple\ Remote\ Desktop\ 3.7.2\ Admin\ Update/RemoteDesktopAdmin372.pkg

E non abbiamo più bisogno dell'immagine del disco collegata, quindi espellila:

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

E ora cosa vedrai se tu

cd ARDexpanded/RemoteDesktopAdmin372.pkg/

ls

è

    Bom         PackageInfo Payload     Scripts

Cosa c'è nel file Payload, che è un archivio cpio compresso con gzip, è ciò che stai cercando. Quindi con alcuni comandi convogliati possiamo arrivare al bundle dell'app:

cat Payload | gzip -d - | cpio -id

ls

ritorna:

    Applications Bom          Library      PackageInfo  Payload      Scripts

E hai quasi finito.

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

Ora hai installato Apple Remote Desktop Admin 3.7.2

Quindi non resta che acquistare la licenza:

open http://store.apple.com/us_smb_78313/product/D6020Z/A/apple-remote-desktop-3-volume-licenses-20-seats-price-is-per-seat

Avvia / Applicazioni / Remote \ Desktop.app e serializza. E fai un po 'di lavoro.


Per 10.6 Snow Leopard, avrai bisogno di una versione leggermente precedente di 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 /

e se ti restituisce questo:

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

quindi prova:

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

eseguire il drill-down fino al payload:

    cd ARD353/RemoteDesktopAdmin353.pkg/

    ls

ritorna:

    Bom         PackageInfo Payload     Scripts

Quindi corri:

cat Payload | gzip -d - | cpio -id

ls

ritorna:

Applications Bom          Library      PackageInfo  Payload      Scripts

E hai quasi finito:

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

acquista la tua licenza:

open http://store.apple.com/us_smb_78313/product/D6020Z/A/apple-remote-desktop-3-volume-licenses-20-seats-price-is-per-seat

Avvia / Applicazioni / Remote \ Desktop.app e serializza. E fai qualcosa.


1
Ottima risposta, ho imparato un sacco di nuove cose che posso fare nel Terminal. +1
shrx

1

Puoi usare lo softwareupdatestrumento.

sudo softwareupdate -l

Elenca tutti gli aggiornamenti disponibili.

sudo softwareupdate -ia

Installa tutti gli aggiornamenti disponibili.


Questo non funziona per le applicazioni Appstore, solo per i pacchetti Apple.
Brice,

prova anche: man softwareupdate
Billy McCloskey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.