¿Cómo actualizar la aplicación App Store desde la línea de comandos?

18

Me gustaría forzar una actualización de las aplicaciones de la tienda de aplicaciones desde la línea de comandos.

¿Cómo puedo hacer esto?

Sorin
fuente
2
No parece haber un asistente de línea de comando como la actualización general del software, por lo que puede estar limitado a iniciar un script que automatizará los comandos de la GUI. ¿Editaría la pregunta para aclarar si espera que la solución "funcional" sea solo un terminal o si un script de Automator que ingresará su contraseña cuando se le pregunte es lo que está buscando?
bmike
Estoy buscando algo desatendido, aún si esto requiere la identificación / contraseña de AppleID, creo que está bien incluirlo en el script.
sorin
1
Consulte también apple.stackexchange.com/questions/42353/… para obtener una solución que llama a una aplicación de terceros
bmike

Respuestas:

6

Apple no proporciona un asistente de línea de comando ni ninguna clase de cacao programable a la que pueda engancharse para la automatización. A diferencia de la actualización general del software, que permite actualizaciones e instalaciones listas para usar, puede ejecutar el proceso de hacer clic en los botones con un mouse usando Automator.

Sin embargo, la tienda de aplicaciones ha sido modificada y lanzada en código abierto , así como también en forma binaria :

La instalación es rápida y parece ser bastante confiable en la versión actual de OS X 10.11:

brew install argon/mas/mas 

Con la fuente publicada, esperaría que aparezcan algunas otras implementaciones de esta herramienta, tal vez incluso una programada con python.

Si alguien ha iniciado sesión en el mac (windowmanager se está ejecutando), puede usar Automator y la función "verme hacer" para automatizar las actualizaciones y almacenar la contraseña de su tienda en el script de manera bastante insegura.

Aquí hay dos tutoriales para comenzar si esto satisface sus necesidades.

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

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

Una vez que tenga un script de trabajo, puede usar el comando de línea de opencomando para iniciarlo.

Si la aplicación App Store expone esa función a secuencias de comandos, tendrá más opciones desde la línea de comandos. Sería fácil de usar sdef, sdpy gen_bridge_metadataal volcar el diccionario de secuencias de comandos y scripts cosas usando rubí desde la línea de comandos, pero en la actualidad la mejor opción sería utilizar la masherramienta de línea de comandos.

bmike
fuente
1
Wow, esto es realmente molesto. Las actualizaciones de software habituales son fácilmente programables mediante la actualización de software (8).
Arne
2
Solo quería declarar para el registro: está claro que Apple decidió conscientemente hacer que sea difícil / no proporcionar ninguna herramienta o gancho o asistencia para automatizar las instalaciones y actualizaciones de la tienda de aplicaciones. El sistema central todavía tiene el softwareupdateproceso e incluso se conecta a la App Store en Mountain Lion, pero es solo para aplicaciones que no son de la App Store.
bmike
4

La App Store simplemente no es adecuada para la administración. Apenas un administrador de paquetes cuasi, no es tan útil o confiable como los administradores de paquetes reales como pkgsrc, puertos FreeBSD, aptitude, RPM, macports o incluso actualización de software. En mi experiencia, es impredecible y una barba para los desarrolladores comerciales atesorar sus productos. Por lo tanto, en realidad solo hay una forma racional y responsable, como administrador competente, de trabajar 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\)/

Y solo quítalo de tu mente, ya no te molestará. ;-)


Use ARD en su lugar, aunque no es un administrador de paquetes, administra paquetes, instalaciones, actualizaciones y actualizaciones, hará lo que quiera, le ahorrará tiempo y no lo decepcionará:

Para Apple Remote Desktop 3, para 10.9:

Consulte la guía del administrador primero para convencerse de que este es el camino a seguir:

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

    open ARD3_AdminGuide.pdf

Luego instale:

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 /

pero eso podría arrojar un error gracioso si no está ejecutando 10.9, o si no hay instalada una versión anterior de ARD, y si lo hace, intente:

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

o para obtener el mismo efecto (ya sea / o aquí, no es necesario usar pkgutil y xar ... Solo estoy siendo exhaustivo):

mkdir ARDexpanded

cd ARDexpanded

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

Y ya no necesitamos adjuntar la imagen del disco, así que expúlsela:

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

Y ahora lo que verás si

cd ARDexpanded/RemoteDesktopAdmin372.pkg/

ls

es

    Bom         PackageInfo Payload     Scripts

Lo que está en el archivo Payload, que es un archivo cpio comprimido con gzip, es lo que busca. Entonces, con algunos comandos canalizados podemos llegar al paquete de aplicaciones:

cat Payload | gzip -d - | cpio -id

ls

devoluciones:

    Applications Bom          Library      PackageInfo  Payload      Scripts

Y ya casi has terminado.

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

Ahora ha instalado Apple Remote Desktop Admin 3.7.2

Entonces, todo lo que queda por hacer es comprar su licencia:

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

Inicie / Aplicaciones / Remote \ Desktop.app y serialice. Y hacer un poco de trabajo.


Para 10.6 Snow Leopard, necesitará una versión ligeramente anterior 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 /

y si te devuelve esto:

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

entonces intenta:

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

profundizar en la carga útil:

    cd ARD353/RemoteDesktopAdmin353.pkg/

    ls

devoluciones:

    Bom         PackageInfo Payload     Scripts

Entonces corre:

cat Payload | gzip -d - | cpio -id

ls

devoluciones:

Applications Bom          Library      PackageInfo  Payload      Scripts

Y ya casi has terminado:

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

compra tu licencia:

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

Inicie / Aplicaciones / Remote \ Desktop.app y serialice. Y haz algo.

chillin
fuente
1
Gran respuesta, aprendí un montón de cosas nuevas que puedo hacer en la Terminal. +1
shrx
1

Puedes usar la softwareupdateherramienta.

sudo softwareupdate -l

Enumera todas las actualizaciones disponibles.

sudo softwareupdate -ia

Instala todas las actualizaciones disponibles.

Moritz Petersen
fuente
Esto no funciona para aplicaciones de Appstore, solo para paquetes de Apple.
Brice
pruebe también: man softwareupdate
Billy McCloskey