¿Se pueden automatizar las instalaciones y actualizaciones de Mac App Store?

28

¿Cómo puedo crear scripts para instalar o actualizar aplicaciones desde Mac App Store? Prefiero las herramientas de línea de comandos, pero AppleScript o alguna otra API sería suficiente.

Piezas de rompecabezas relevantes:

  • installer: tenga en cuenta especialmente el -storeindicador que se utiliza para simular las instalaciones de App Store para desarrolladores de paquetes.
  • systemupdate: capaz de manejar actualizaciones de aplicaciones de Apple, marca las -iinstalaciones y -ale dice que instale todas las actualizaciones disponibles
Joseph Holsten
fuente
¿Sus aplicaciones se compran con una ID de Apple o está rastreando una ID de Apple individual para cada máquina?
bmike
@bmike: me sentiría cómodo usando una ID de Apple compartida o una única para cada máquina
Joseph Holsten
Asumiendo que MacWorld es correcto, Mountain Lion desprecia el servicio de actualización de software y todo es a través de Mac App Store, gestionar esto será un desafío para grupos de trabajo y empresas. Me pregunto si Apple Configurator podría expandirse para ayudar a administrar las cuentas y Remote Desktop podría iniciar las actualizaciones sin molestar a los usuarios hasta que un reinicio aplique las actualizaciones.
bmike

Respuestas:

13

La mayoría de las personas pueden activar las actualizaciones automáticas y dejar que Apple administre todas las actualizaciones. Si hay una razón por la que no puede o no quiere hacer eso, existe una herramienta de línea de comandos para automatizar las instalaciones y actualizaciones de la App Store.

Una herramienta notable de código abierto para replicar la Mac App Store desde la línea de comandos es mas :

Instalar:

brew install mas 

Una vez que esté activado, puede actualizar todas las aplicaciones que están disponibles con:

mas upgrade

Si no desea confiar en el software de terceros con su ID de Apple, también puede automatizar su interfaz de usuario y puede almacenar el nombre de cuenta y la contraseña utilizando el llavero.

La solución de Apple para los parches y actualizaciones de seguridad que no son de la App Store es ejecutar la softwareupdateherramienta desde la línea de comandos para actualizar todo el software que Apple pretende instalar sin la intervención del usuario o la interfaz de usuario de la App Store.

Actualmente en Lion y Mountain Lion, esto significa que la Mac llegará a un servidor OS X local que está almacenando en caché las descargas para las actualizaciones del sistema y el software instalado fuera de la tienda de aplicaciones. Si no tiene un servidor de actualización de software local, por supuesto descargará archivos directamente de Apple.

Para Mountain Lion 10.8.2 y versiones anteriores, todo sigue llegando a través de la App Store, por lo que el software de Apple, como las actualizaciones de OS X, es totalmente programable utilizando esta herramienta solo para actualizaciones y actualizaciones que no son de la App Store.

Lo que no es programable (todavía o tal vez nunca) son aplicaciones que se instalan desde la App Store como Xcode y Pages y aplicaciones de terceros. Esto significa que no puede simplemente tener una herramienta para actualizar todo el software sin abrir la aplicación App Store e ingresar una contraseña en la pantalla de la interfaz de usuario.

Lo que puede hacer es descargar las aplicaciones una vez y luego copiar la aplicación en varios Mac, siempre que la ID de Apple utilizada para descargar la primera copia de la aplicación también se use en todos los Macs que ejecutarán la aplicación.

Sé de varias instituciones que compran una copia de cada aplicación para un laboratorio de 20 computadoras para obtener una licencia para cada asiento, pero luego implementan un archivo en todos los Mac para que una vez que se realice una descarga de actualización, una herramienta como Apple Remote Desktop o Caspar o una herramienta casera como scpo rsyncse utiliza para mover la versión actualizada de la aplicación a todos los Mac en el laboratorio.

Si sigue la ruta de la ID de Apple individual para cada máquina, no podrá ejecutar la instalación de las actualizaciones de la aplicación, ya que cada una solicitará la contraseña de cada cuenta a menos que se sienta cómodo conociendo todas las contraseñas y realizando scripts de interfaz de usuario donde AppleScript pueda ingrese el nombre de usuario y contraseña correctos mediante programación y luego haga clic en el botón para comenzar el proceso de descarga de las actualizaciones de cada máquina. La forma en que las aplicaciones de la tienda de aplicaciones están firmadas con código hace que sea difícil simplemente deslizar una actualización sin invalidar el paquete o de alguna manera aplicar ingeniería inversa / jailbreak a todo el proceso de la tienda de aplicaciones y evitar el flujo normal de permitir que el instalador de la aplicación haga su trabajo.

bmike
fuente
6

Esto es posible utilizando la masutilidad de línea de comandos de código abierto :

mas-cli

Una interfaz de línea de comandos simple para Mac App Store. Diseñado para scripting y automatización.

Divulgación: soy el creador de mas

argón
fuente
Muchas gracias por esa herramienta y publicarla aquí. Ha pasado mucho tiempo y espero que Apple mantenga estable el API / SDK para que la herramienta siga funcionando con el tiempo.
bmike
3

Es posible que desee ver brotes de envoltura y solista . Puede instalar paquetes OSX desde una uri utilizando el dmg_packageproveedor. Echa un vistazo a algunas de las recetas en Sprout para ver algunos ejemplos.

Para actualizar automáticamente las actualizaciones de seguridad, use la receta pivotal_workstation :: osx_updates . ( Tenga en cuenta que esto utilizasoftwareupdate )

Para las aplicaciones Homebrew , el brewproveedor tiene una upgradeacción.

Hasta donde yo sé, no hay un proveedor para actualizar automáticamente las aplicaciones de la App Store. Sin embargo, es posible que pueda usar la función de actualización automática incorporada de algunas aplicaciones dentro de un bloque executeo bashproveedor. También puede usar AppleScript dentro de una receta de chef para automatizar la aplicación App Store. Para ver algunos ejemplos del uso de AppleScript en línea, eche un vistazo a la receta sprout-osx-settings :: function_keys . (Algunos otros ejemplos: sprout-osx-settings :: remove_expose_keyboard_shortcuts , sprout-osx-settings :: set_finder_show_user_home_in_sidebar )

TrinitronX
fuente
1

No estoy seguro acerca de una solución de tipo AppleScript, pero existen herramientas para administrar grandes cantidades de sistemas OS X.

El que estoy más familiarizado es radmind (que comenzó en UMich para administrar sus laboratorios (sitio antiguo) ).

Radmind está realmente orientado a implementar una plantilla de sistema operativo estándar en un montón de máquinas y mantenerla actualizada, por lo que para un sitio pequeño puede ser demasiado trabajo. El flujo de trabajo básico es:

  • Haga una "máquina de compilación" limpia e instale radmind y todo su software estándar.
  • Cree transcripciones radmind para esa máquina de compilación.
  • Instale radmind en sus máquinas cliente y extraiga / aplique las transcripciones para instalarlas.
  • Para actualizaciones, actualice el servidor de compilación y haga una transcripción de actualización / parche, luego aplíquelo a los clientes.

… Entonces, en el sentido más estricto, no está automatizando la instalación, sino que solo tiene que hacer el bit interactivo una vez y luego distribuir el sistema operativo actualizado a sus clientes.

Obviamente, esto funciona mejor si puede instalar un conjunto estándar de software en todas partes. Si sus clientes son todos especiales y únicos, esta podría no ser una gran solución.

voretaq7
fuente
1
Estoy tratando de automatizar este proceso para dentro de chef, que es una herramienta de automatización del sistema como radmind. El problema es que no hay forma de que estas herramientas instalen aplicaciones desde la tienda de aplicaciones mac.
Joseph Holsten
1
@JosephHolsten El procedimiento con radmindsería "Instalar la aplicación en su máquina de plantillas y actualizar la transcripción". (Sigue siendo una instalación manual, pero una instalación manual en lugar de 1000.)
voretaq7