Terminal window showing WinGet Desired State Configuration view.

Eu configurei um muito de máquinas de desenvolvimento em minha vida. Tradicionalmente, isso leva muito tempo para fazer tudo certo, mas agora existe uma maneira mais rápida com Configuração do WinGet arquivos. Deixe-me mostrar como passar de uma nova instalação do Windows para um ambiente de desenvolvimento totalmente configurado com um único comando e como CLI do GitHub Copilot pode ajudá-lo a construir essas configurações.

O que é configuração do WinGet?

A configuração do WinGet permite descrever seu ambiente de desenvolvimento ideal em um arquivo YAML e aplicá-lo com um comando. Em vez de executar um monte de winget install comandos manualmente, você declara o que deseja e deixa o WinGet fazer o resto.

Começando

Antes de poder usar winget configurevocê precisará instalar o módulo WinGet DSC. Abra o PowerShell como administrador e execute:

Install-Module Microsoft.WinGet.DSC -Force

Depois de instalado, você pode executar arquivos de configuração com:

winget configure -f configuration.winget

WinGet lê seu arquivo, instala todas as suas ferramentas, define suas configurações e deixa você pronto para codificar.

A melhor parte é que essas configurações são idempotenteo que significa que você pode executá-los várias vezes e eles só mudarão o que precisa ser mudado. Por exemplo, se você já tem o VS Code instalado, ele ignora e segue em frente.

Dica:

Adicionar --accept-configuration-agreements para ignorar os prompts de confirmação para cenários automatizados.

Como isso é diferente da importação/exportação do WinGet?

Se você já usou o WinGet antes, pode estar pensando “espere, já não posso fazer isso com winget export e winget import?” Esta é uma ótima pergunta e eles foram projetados para resolver diferentes problemas.

winget import/export cria uma lista JSON simples de pacotes instalados:

# Export your installed packages
winget export -o packages.json
# Import on another machine
winget import -i packages.json

Isso funciona, mas apenas lida com a instalação do pacote. É basicamente um script de instalação em lote.

winget configure é muito mais poderoso:

Recursoimportar/exportarconfigurar
Instalar pacotes
Definir configurações do Windows
Ativar modo de desenvolvedor
Instalar cargas de trabalho do VS
Definir variáveis ​​de ambiente
Definir dependências
Verifique os requisitos do sistema operacional
Execute recursos do PowerShell DSC

Pense em import/export como uma lista de compras e configure como uma receita completa. A lista de compras diz o que comprar, mas a receita diz o que comprar e como juntar tudo.

Para cenários simples de instalação de aplicativos, winget import é ótimo. Mas se você quiser um ambiente de desenvolvimento totalmente configurado com o modo de desenvolvedor habilitado, cargas de trabalho do VS instaladas e configurações definidas, use winget configure.

Seu primeiro arquivo de configuração

Vamos começar de forma simples. Crie um arquivo chamado dev-setup.winget:

# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
properties:
  configurationVersion: 0.2.0
  resources:
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Visual Studio Code Insiders
        securityContext: elevated
      settings:
        id: Microsoft.VisualStudioCode.Insiders
        source: winget

    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Git
        securityContext: elevated
      settings:
        id: Git.Git
        source: winget

    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Node.js LTS
        securityContext: elevated
      settings:
        id: OpenJS.NodeJS.LTS
        source: winget

    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Windows Terminal Preview
      settings:
        id: Microsoft.WindowsTerminal.Preview
        source: winget

Execute-o com:

winget configure -f dev-setup.winget

O WinGet solicita a aprovação do administrador uma vez e, em seguida, cuida de todas as instalações. Vá tomar um café e volte para uma máquina configurada. ☕

Adicionando configurações do Windows

Você pode fazer mais do que instalar pacotes, você pode configurar o próprio Windows. Veja como ativar o modo de desenvolvedor e o modo escuro automaticamente:

- resource: Microsoft.Windows.Settings/WindowsSettings
  directives:
    description: Enable Developer Mode
    allowPrerelease: true
    securityContext: elevated
  settings:
    DeveloperMode: true

- resource: Microsoft.Windows.Developer/EnableDarkMode
  directives:
    description: Enable dark mode
    allowPrerelease: true
  settings:
    Ensure: Present
    RestartExplorer: true

Usando asserções para requisitos

As asserções permitem verificar os requisitos do sistema antes de executar sua configuração. Por exemplo, você pode verificar se a máquina atende a uma versão mínima do sistema operacional:

properties:
  configurationVersion: 0.2.0
  
  assertions:
    - resource: Microsoft.Windows.Developer/OsVersion
      directives:
        description: Require Windows 11 22H2 or later
        allowPrerelease: true
      settings:
        MinVersion: '10.0.22621'
  
  resources:
    # Install your tools...

Se a verificação da versão do sistema operacional falhar, a configuração será interrompida antecipadamente com uma mensagem clara, em vez de travar no meio. Isso é útil quando suas ferramentas exigem recursos específicos do Windows, disponíveis apenas em versões mais recentes.

Dependências entre recursos

Às vezes você precisa de coisas instaladas em uma ordem específica. Usar dependsOn para encadear recursos:

- resource: Microsoft.WinGet.DSC/WinGetPackage
  id: vsPackage
  directives:
    description: Install Visual Studio 2026 Community
    securityContext: elevated
  settings:
    id: Microsoft.VisualStudio.Community
    source: winget

- resource: Microsoft.VisualStudio.DSC/VSComponents
  dependsOn:
    - vsPackage
  directives:
    description: Install .NET workload
    allowPrerelease: true
    securityContext: elevated
  settings:
    productId: Microsoft.VisualStudio.Product.Community
    channelId: VisualStudio.18.Release
    components:
      - Microsoft.VisualStudio.Workload.ManagedDesktop

O vsPackage é instalado primeiro e depois a carga de trabalho é adicionada.

Usando GitHub Copilot CLI para gerar configurações

É aqui que fica divertido. Primeiro, vamos garantir que o Copilot CLI faça parte da nossa configuração! Você pode inicializá-lo diretamente no seu arquivo de configuração:

- resource: Microsoft.WinGet.DSC/WinGetPackage
  id: copilotCli
  directives:
    description: Install GitHub Copilot CLI
  settings:
    id: GitHub.Copilot
    source: winget

Agora, quando você executa sua configuração em uma máquina nova, o Copilot CLI é instalado automaticamente. Depois de instalado, você pode usá-lo para gerar mais configurações.

Em vez de escrever YAML manualmente, peço ao Copilot CLI para gerar configurações para mim:

copilot

Então eu pergunto:

“Crie um arquivo de configuração winget para um desenvolvedor de ciência de dados Python. Inclua Python 3.12, VS Code, Git e Anaconda.”

O Copilot gera uma configuração completa que posso ajustar e salvar. Isso é muito mais rápido do que procurar IDs de pacotes manualmente.

Encontrando IDs de pacotes

Não tem certeza de qual é o ID exato do pacote? Pergunte ao Copiloto:

“Qual é o ID do pacote winget para o Python mais recente?”

Isso vai te dizer Python.Python.3.12 (ou qualquer versão atual).

Convertendo scripts existentes

Você tem um script antigo do PowerShell que instala suas ferramentas? O Copilot pode convertê-lo:

“Converta este script em um arquivo de configuração winget:

winget instalar Microsoft.VisualStudioCode

winget instalar Git.Git

winget instalar OpenJS.NodeJS.22″

Ele cria a estrutura YAML adequada com descrições e tudo mais.

Explicando configurações

Encontrou um arquivo de configuração em um repositório e não tem certeza do que ele faz? Cole e pergunte:

“Explique o que esta configuração do winget faz e o que será instalado”

Isso é muito útil quando você está integrando um novo projeto.

Janela do terminal mostrando a visualização WinGet Desired State Configuration.

O comando de exportação: faça engenharia reversa em sua configuração

Um dos meus recursos favoritos é winget configure export. Ele captura o estado atual da sua máquina para que você possa recriá-la mais tarde:

# Export your entire package configuration
winget configure export -o my-machine.winget --all
# Export just one package's config
winget configure export -o vscode.winget --package-id Microsoft.VisualStudioCode

Isso é ótimo para:

  • Fazendo backup de sua configuração atual antes de uma nova instalação
  • Criando uma configuração a partir de uma máquina que já está “perfeita”
  • Compartilhando seu ambiente exato com colegas de equipe

Armazene configurações em seus repositórios

Para configurações específicas do projeto, armazene sua configuração no repositório em .config/configuration.winget. Quando novos contribuidores clonam seu projeto, eles podem executar:

winget configure -f .config/configuration.winget

Dessa forma, eles terão exatamente o mesmo ambiente que todos os outros.

Meu arquivo de configuração

Esta é a aparência da minha configuração pessoal de desenvolvimento:

# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
properties:
  configurationVersion: 0.2.0
  
  resources:
    # Enable Developer Mode and dark mode
    - resource: Microsoft.Windows.Settings/WindowsSettings
      directives:
        description: Enable Developer Mode
        allowPrerelease: true
        securityContext: elevated
      settings:
        DeveloperMode: true
    
    - resource: Microsoft.Windows.Developer/EnableDarkMode
      directives:
        description: Enable dark mode
        allowPrerelease: true
      settings:
        Ensure: Present
        RestartExplorer: true
    
    # Terminal and shell
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Windows Terminal Preview
      settings:
        id: Microsoft.WindowsTerminal.Preview
        source: winget
    
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install PowerShell 7
        securityContext: elevated
      settings:
        id: Microsoft.PowerShell
        source: winget
    
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Oh My Posh
      settings:
        id: JanDeDobbeleer.OhMyPosh
        source: winget
    
    # Development tools
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Visual Studio Code Insiders
        securityContext: elevated
      settings:
        id: Microsoft.VisualStudioCode.Insiders
        source: winget

    - resource: Microsoft.WinGet.DSC/WinGetPackage
      id: vsPackage
      directives:
        description: Install Visual Studio 2026
        securityContext: elevated
      settings:
        id: Microsoft.VisualStudio.Enterprise
        source: winget

    - resource: Microsoft.VisualStudio.DSC/VSComponents
      dependsOn:
        - vsPackage
      directives:
        description: Install .NET workload
        allowPrerelease: true
        securityContext: elevated
      settings:
        productId: Microsoft.VisualStudio.Product.Enterprise
        channelId: VisualStudio.18.Release
        components:
          - Microsoft.VisualStudio.Workload.ManagedDesktop
    
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install .NET SDK 10
        securityContext: elevated
      settings:
        id: Microsoft.DotNet.SDK.10
        source: winget
    
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Azure Developer CLI
      settings:
        id: Microsoft.Azd
        source: winget
    
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Git
        securityContext: elevated
      settings:
        id: Git.Git
        source: winget
    
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install Node.js
        securityContext: elevated
      settings:
        id: OpenJS.NodeJS.LTS
        source: winget

    # AI tools
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      directives:
        description: Install GitHub Copilot CLI
      settings:
        id: GitHub.Copilot
        source: winget

Sinta-se à vontade para usar isso como ponto de partida e personalizá-lo de acordo com suas necessidades!

Saúde!

A configuração do WinGet mudou genuinamente a forma como penso sobre a configuração da máquina. É controlado por versão, repetível e compartilhável. Combinado com GitHub Copilot CLI para gerar e compreender configurações, nunca foi tão fácil preparar uma nova máquina para desenvolvimento.

Se você tiver dúvidas ou quiser compartilhar seus próprios arquivos de configuração, encontre-me no Bluesky (@kaylacinnamon) ou X (@cinnamon_msft)!

Tem alguma dica importante sobre como lidar com a configuração da máquina de desenvolvimento? Deixe-nos saber nos comentários!

Deseja saber mais sobre Programação e Desenvolvimento Clique Aqui!

GitHub Copilot CLI,WinGet

Deixe um comentário

Translate »