As instalações e atualizações da Mac App Store podem ser automatizadas?

28

Como script para instalar ou atualizar aplicativos da Mac App Store? Eu preferiria ferramentas de linha de comando, mas AppleScript ou alguma outra API seria suficiente.

Peças de quebra-cabeça relevantes:

  • installer: observe especialmente o -storesinalizador usado para simular instalações da App Store para desenvolvedores de pacotes.
  • systemupdate: capaz de lidar com atualizações de aplicativos da Apple, sinaliza a -iinstalação e -adiz para instalar todas as atualizações disponíveis
Joseph Holsten
fonte
Seus aplicativos foram comprados com um ID Apple ou você está rastreando um ID Apple individual para cada máquina.
Bmike
@bmike: Eu seria confortável usando um ID Apple compartilhada ou um único para cada máquina
Joseph Holsten
Supondo que o MacWorld esteja correto, o Mountain Lion descontinuou o serviço de atualização de software e tudo aconteceu na Mac App Store, gerenciar isso será um desafio para grupos de trabalho e empresas. Gostaria de saber se o Apple Configurator pode se expandir para ajudar a gerenciar contas e a Área de Trabalho Remota pode iniciar atualizações sem incomodar os usuários até que uma reinicialização aplique as atualizações.
bmike

Respostas:

13

A maioria das pessoas pode simplesmente ativar as atualizações automáticas e permitir que a Apple gerencie todas as atualizações. Se houver uma razão para você não poder ou não fazer isso, existe uma ferramenta de linha de comando para automatizar as instalações e atualizações da App Store.

Uma ferramenta notável de código aberto para replicar a Mac App Store a partir da linha de comando é mas :

Para instalar:

brew install mas 

Quando estiver pronto, você poderá atualizar todos os aplicativos disponíveis com:

mas upgrade

Se não quiser confiar em software de terceiros com seu ID Apple, você também pode automatizar sua interface do usuário e pode armazenar o nome da conta e a senha usando chaveiro.

A solução da Apple para atualizações e patches de segurança que não sejam da App Store é executar a softwareupdateferramenta na linha de comando para atualizar todo o software que a Apple pretende instalar sem a intervenção do usuário ou passar pela interface do usuário da App Store.

Atualmente no Lion e Mountain Lion - isso significa que o Mac acessará um servidor OS X local que está armazenando em cache downloads para atualizações do sistema e software instalado fora da App Store. Se você não possui um servidor de atualização de software local, é claro que ele fará o download de arquivos diretamente da Apple.

Para o Mountain Lion 10.8.2 e inferior, - tudo ainda vem através da App Store -, portanto, o software da Apple, como as atualizações do OS X, é totalmente programável usando esta ferramenta para atualizações e atualizações que não são da App Store.

O que não é programável (ainda ou talvez nunca) são aplicativos instalados na App Store, como Xcode e Pages e aplicativos de terceiros. Isso significa que você não pode ter apenas uma ferramenta para atualizar todo o software sem abrir o aplicativo App Store e digitar uma senha na tela da interface do usuário.

O que você pode fazer é baixar os aplicativos uma vez e depois copiá-lo para vários macs, desde que o ID da Apple usado para baixar a primeira cópia do aplicativo também seja usado em todos os Macs que executam o aplicativo.

Conheço várias instituições que compram uma cópia de cada aplicativo para um laboratório de 20 computadores para obter uma licença para cada assento, mas depois implantam um arquivo em todos os Macs para que, uma vez que o download da atualização seja realizado, uma ferramenta como a Apple Remote Desktop ou Caspar ou uma ferramenta caseira como scpou rsyncé usada para mover a versão atualizada do aplicativo para todos os Macs no laboratório.

Se você seguir a rota do Apple ID individual para cada máquina, não poderá criar um script para a instalação das atualizações de aplicativos, pois cada um solicitará a senha para cada conta, a menos que se sinta confortável em saber todas as senhas e executando scripts da interface do usuário onde o AppleScript possa insira o nome de usuário e a senha corretos programaticamente e clique no botão para iniciar o processo de download das atualizações de cada máquina. A maneira como os aplicativos da loja de aplicativos são assinados por código dificulta o deslizamento de uma atualização sem invalidar o pacote ou de alguma forma fazer engenharia reversa / jailbreak de todo o processo da loja de aplicativos e evitar o fluxo normal de permitir que o instalador do aplicativo faça seu trabalho.

bmike
fonte
6

Isso é possível usando o masutilitário de linha de comando de código aberto :

mas-cli

Uma interface simples de linha de comando para a Mac App Store. Projetado para scripts e automação.

Divulgação: Eu sou o criador de mas

argônio
fonte
Muito obrigado por essa ferramenta e publicá-la aqui. Faz muito tempo e espero que a Apple mantenha a API / SDK estável para permitir que a ferramenta continue funcionando com o tempo.
bmike
3

Você pode querer conferir o sprout-wrap e o solista . Você pode instalar pacotes OSX de uma uri usando o dmg_packageprovedor. Confira algumas das receitas em broto para alguns exemplos.

Para atualizar automaticamente as atualizações de segurança, use a receita pivotal_workstation :: osx_updates . ( Observe que isso usasoftwareupdate )

Para aplicativos Homebrew , o brewprovedor tem uma upgradeação.

Até onde eu sei, não há provedor para atualizar automaticamente os aplicativos da App Store. No entanto, você poderá usar o recurso de atualização automática interno de alguns aplicativos em um bloco executeou bashprovedor. Você também pode usar o AppleScript em uma receita de chef para automatizar o aplicativo da App Store. Para alguns exemplos de uso do AppleScript embutido, consulte a receita sprout-osx-settings :: function_keys . (Alguns outros exemplos: sprout-osx-settings :: remove_expose_keyboard_shortcuts , sprout-osx-settings :: set_finder_show_user_home_in_sidebar )

TrinitronX
fonte
1

Não tenho certeza sobre uma solução do tipo AppleScript, mas existem ferramentas para gerenciar um grande número de sistemas OS X.

O que eu estou mais familiarizado é o radmind (que começou na UMich para gerenciar seus laboratórios (site antigo) ).

O radmind é realmente voltado para a implantação de um modelo de sistema operacional padrão em várias máquinas e para mantê-lo atualizado, portanto, para um site pequeno, pode ser um pouco trabalhoso. O fluxo de trabalho básico é:

  • Faça uma "máquina de construção" limpa e instale o radmind e todo o seu software padrão.
  • Crie transcrições radmind para essa máquina de construção.
  • Instale o radmind nas máquinas clientes e puxe / aplique as transcrições para instalá-las.
  • Para atualizações, atualize o servidor de compilação e faça uma transcrição de atualização / patch e aplique-a aos clientes.

… Portanto, no sentido estrito, não está automatizando a instalação, mas você só precisa fazer o bit interativo uma vez e depois distribuir o sistema operacional atualizado para seus clientes.

Obviamente, isso funciona melhor se você puder instalar um conjunto padrão de software em qualquer lugar - Se seus clientes forem todos especiais e únicos, isso pode não ser uma ótima solução.

voretaq7
fonte
11
Estou tentando automatizar esse processo para o chef, que é uma ferramenta de automação de sistema, como o radmind. A questão é que não há como essas ferramentas instalar aplicativos da mac app store.
Joseph Holsten 29/03
11
@JosephHolsten O procedimento com radmindseria "Instale o aplicativo na máquina do seu modelo e atualize a transcrição". (Ainda uma instalação manual, mas uma instalação manual em vez de 1000.)
voretaq7