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 -ForceDepois de instalado, você pode executar arquivos de configuração com:
winget configure -f configuration.wingetWinGet 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.jsonIsso funciona, mas apenas lida com a instalação do pacote. É basicamente um script de instalação em lote.
winget configure é muito mais poderoso:
| Recurso | importar/exportar | configurar |
| 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: wingetExecute-o com:
winget configure -f dev-setup.wingetO 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: trueUsando 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.ManagedDesktopO 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: wingetAgora, 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:
copilotEntã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.

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.VisualStudioCodeIsso é ó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.wingetDessa 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: wingetSinta-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

Perito em Computação Forense e Crimes Cibernéticos
Investigação Digital | Laudos Técnicos | Resposta a Incidentes
Bacharel em Sistemas da Informação, Certificado Microsoft Azure IA e MOS. Trabalho como Administrador de Redes, Firewall e Servidores Windows e Linux!
Minhas atividades favoritas são: Caminhar, Fazer Trilhas, Natureza, Insetos e claro ler sobre Tecnologia.

