Crie scripts de pós instalação com o Winget

 Por Ciro Mota |  9, Agosto 2021 |  Tempo de leitura aproximadamente 4 minutos.
 Edições: Revisão textual. Em 26, Fevereiro 2022.

Olá amigos, tudo bem?

Em várias oportunidades eu citei aqui no blog sobre possibilidades de automatização em pós instalação de sistemas, seja nos nossos como usuários domésticos ou seja em um setor de suporte de uma empresa onde as máquinas precisam ser entregues no menor tempo possível. Dentre as várias formas de automatizar, existem os Shell Script em que eu particularmente prefiro, mas para o Windows até então não havia uma solução que preenchesse essa lacuna, até a chegada do Chocolatey (que já falei dele aqui no blog).

Com o passar dos anos a Microsoft se tornou mais próxima do mundo Open Source, com a disponibilidade de distros no Azure ou, seja trazendo um Linux para dentro do Windows e por fim copiando uma das coisas que as distros Linux tem de melhor: Um gerenciador de pacotes. Assim veio ao mundo o Winget, que no momento da escrita deste artigo ele ainda esteja em Beta.

A proposta do Winget é ser um gerenciador de pacotes simples a exemplo do apt ou dnf mas igualmente tão poderoso quanto e trazendo automatizações importantes no uso do sistema, não mais sendo necessário ter que recorrer aos sites dos desenvolvedores (ou a loja do Windows que promete ser completa nesse sentido no Windows 11) para download e instalação guiada das aplicações. Para mim tanto o Chocolatey quanto o Winget substituem de longe essa longa caminhada para instalar um aplicativo no Windows.

O Winget suportará no futuro basicamente as mesmas funções que um gerenciador de pacotes no Linux, como winget source update e winget upgrade --all para atualizar listas e atualizar aplicativos respectivamente. Neste link você poderá consultar a lista de sintaxes disponíveis para instalação de aplicativos. Como o Winget ainda está em estágio Beta, algumas coisas ainda não estão disponíveis como por exemplo o download e instalação de aplicações com locales em nosso idioma, um exemplo disso que cito é o Firefox, que demanda uma instalação neste estilo, apesar de que pode facilmente ser alterado no próprio navegador após instalado.

Mas ainda assim não nos impede de já preparar o terreno para o que está por vir, abaixo uma simulação de como ficaria um pequeno script com de pós instalação. Por ser uma ferramenta Microsoft, o arquivo precisará ser no formato do PowerShell com a extensão .ps1. Se faz necessário liberar a execução de scripts, neste caso execute Set-ExecutionPolicy unrestricted para liberá-la e ao final Set-ExecutionPolicy restricted para travar a execução de scripts de terceiros. Em produção jamais libere a execução de scripts de terceiros.

Eis um script simples com um laço de repetição para a instalação de vários aplicativos em sequência:

(
"Google.Chrome",
"Mozilla.Firefox",
"RARLab.WinRAR"
) | foreach {winget install -e -h --id $_}

Winget em execução

Como cito acima, algumas coisas ainda não estão disponíveis devido ao seu estágio Beta, contudo alguns ajustes já podem ser pré-configurados, como a possibilidade de ter ou não telemetria, a linguagem padrão e se queremos ou não que a ferramenta faça ou não a atualização das fontes (semelhante ao apt update). Digite em uma janela do PowerShell (admin) o comando winget settings onde será aberto um arquivo .json, basta então alguns ajustes simples como estes:

{

    "source": {
        "autoUpdateIntervalInMinutes": 0
    },
    
    "installBehavior": {
        "preferences": {
            "locale": [ "en-US", "fr-FR" ]
        }
    },
    	
    "telemetry": {
        "disable": false
   	},
   	 
} 

Para mais detalhes do que cada linha faz e demais configurações em que você poderá adotar no seu cenário, consulte este link.

E para os preguiçosos de plantão, a ferramenta também suporta importação e exportação, ou seja, a partir de um PC pronto será possível exportar uma lista dos aplicativos instalados e exportar no PC de destino e lá, realizar a instalação dos mesmos aplicativos que estão no PC de origem. Para tanto basta executar winget export -o C:\packages.json na origem e no destino winget import -i C:\packages.json e a instalação será executada com as aplicações da lista, mais uma opção ao script de instalação. Bem legal não é mesmo?! Finalmente hein Windows!!

E você já conhecia a Winget? Já fez algum teste de implantação com ela? Me deixe saber logo abaixo nos comentários.

Espero que mais essa dica seja útil para vocês.

Até a próxima!