Uma máquina nova com o Windows 11 limpo, e a primeira hora perde-se em instalações manuais na Store e em sites de terceiros. O winget, o cliente de linha de comandos do Windows Package Manager, corta esse passo: pesquisa o catálogo, instala em silêncio, actualiza as aplicações desfasadas e desinstala por ID.
Este guia corre os comandos do dia-a-dia, o par export e import, as definições e as fontes, e a fronteira com o Intune.
💡 TL;DR
O winget mantém o software de uma máquina: install no passo isolado, upgrade --all na fila de actualização, export e import na reposição. Em imposição central, o Intune entra.
Neste artigo
1. A fronteira com o Intune
O winget actua por máquina: corre na sessão com direitos de administrador e o resultado sai na consola. As apps Win32 do Intune actuam por frota: o instalador empacota-se na consola, a entrega segue anéis e agenda, e o estado de cada equipamento chega ao portal. Na PME com um técnico, o winget cobre instalação e actualização sem licenças a mais.
| Dimensão | winget | Intune (app Win32) |
|---|---|---|
| Escala | Máquina a máquina, à mão ou por script local | Frota inteira com anéis e agenda central |
| Rede | O instalador desce do catálogo e instala na hora | O cliente desce o conteúdo do serviço Intune, com regras de detecção |
| Reporting | O resultado fica na consola | Estado por dispositivo no portal, com falhas |
2. Os comandos do dia-a-dia
Começa no catálogo: o winget search devolve nome, ID, versão e origem, e o -e exige o ID na string completa. Exemplo abreviado:
winget search -e --id Microsoft.PowerToys
Nome Id Versão Origem
PowerToys Microsoft.PowerToys 0.9x.x winget
A instalação leva o --silent e o --accept-package-agreements — o silêncio do UI e os acordos de licença:
winget install -e --id Microsoft.PowerToys --silent --accept-package-agreements
Successfully installed
O winget list mostra todas as aplicações registadas e marca o que tem actualização. O winget upgrade lista as novas versões disponíveis, o --all executa a fila, e o --include-unknown traz as apps que não declaram versão:
winget upgrade
winget upgrade --all --silent
A desinstalação aceita apps fora do winget, pelo desinstalador que o Windows já conhece. O --source winget evita os acordos da fonte msstore no meio do lote:
winget uninstall -e --id Microsoft.PowerToys --source winget
3. Export e import
O par export/import vira a lista de software em ficheiro e volta como fila de instalações:
winget export -o C:\Soft\padrao.json --accept-source-agreements
winget import -i C:\Soft\padrao.json --ignore-unavailable --accept-package-agreements
O export escreve JSON com a secção Sources e a lista Packages por PackageIdentifier — a versão instalada só entra com o --include-versions, e por omissão o import leva a mais recente. Apps sem correspondência geram avisos e ficam de fora. O import corre em série, avisa o que já existe e segue em frente com o --ignore-unavailable.
Software fora do catálogo entra pelo manifest YAML local, na opção -m:
winget install -m C:\Soft\app.yaml
4. O winget no Windows 11 moderno
No Windows 11 actual, o winget faz parte do App Installer, componente de sistema que a Microsoft Store entrega e actualiza por si. O suporte vai do Windows 10 1809 ao Windows Server 2025, via Updates. O comando só responde depois do primeiro login. Se faltar, o PowerShell repõe o registo:
Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe
As fontes por omissão são três:
winget source list
Name Argument Explicit
msstore https://storeedgefd.dsx.mp.microsoft.com/v9.0 false
winget https://cdn.winget.microsoft.com/cache false
winget-font https://cdn.winget.microsoft.com/fonts true
O msstore serve o catálogo da Store, o winget recebe os manifests da comunidade, e o winget-font guarda os tipos de letra — só responde quando o --source o aponta.
ℹ
A actualização do próprio winget corre pela Store: a série estável está na 1.29, a última é a 1.29.380, e a 1.30 seguiu em preview ao fim de Outubro — antes de copiar para outro sítio, reverifica as tags no GitHub.
5. Settings e repositório próprio
O winget settings abre o ficheiro de definições no editor de JSON por omissão, com o schema em linha:
{
"$schema": "https://aka.ms/winget-settings.schema.json",
"source": { "autoUpdateIntervalInMinutes": 60 },
"installBehavior": { "archiveExtractionMethod": "tar" }
}
O intervalo de actualização das fontes entra pela chave source, os comportamentos de instalação pelo installBehavior, e os experimentais pelo experimentalFeatures.
Um catálogo interno entra pelo winget source add, com direitos de administrador:
winget source add -n interno -a https://srv-interno/winget/cache --trust-level trusted
Os tipos de fonte suportados são o Microsoft.PreIndexed.Package e o Microsoft.Rest para índice por REST. O --explicit marca a fonte para só responder quando apontada, e o source reset devolve as três de fábrica.
6. Armadilhas de script
- O ID muda com o publisher: fusões e rebrands voltam a publicar o mesmo software sob outro
PackageIdentifier, e a lista exportada pode encontrar entradas que o import já não apanha. - O silêncio nunca é total: o
--silentsuprime o UI, mas alguns instaladores custom abrem caixas à mesma e param o lote no meio. - O Server não chega sozinho: só a linha 2025 traz o comando de fábrica. Nas versões anteriores, sem suporte oficial — quem o instala à mão fica sem actualizações pelo mesmo canal.
- O upgrade apanha falhas de hash: instaladores de terceiros sem alteração declarada de versão falham a verificação e ficam reprovados na fila do
--all. O--ignore-security-hashsalta a verificação, e nem por omissão: só responde depois dewinget settings --enable InstallerHashOverridenum terminal elevado, e a política EnableHashOverride pode bloquear a entrada toda. Fica com desaconselhado gravado no comando.
7. 15 máquinas numa tarde
A máquina modelo do escritório fornece o padrão:
winget export -o C:\Soft\padrao.json --accept-source-agreements
O ficheiro vai para a partilha do servidor e as apps pessoais saem do JSON, uma linha por app. Em cada máquina, na mesma consola elevada:
winget import -i \\SRV\Soft\padrao.json --ignore-unavailable --accept-package-agreements
winget upgrade --all --silent
winget list
Dez a quinze minutos por máquina, com o winget list a provar o inventário no fim — primeiro o import, depois o upgrade --all, e os IDs que o publisher mudou corrigem-se à mão.
Fontes Oficiais
- Use WinGet to install and manage applications (Microsoft Learn) — App Installer, versões suportadas, comandos.
- install command (winget) (Microsoft Learn) — o -e --exact, o --silent e o manifest local.
- upgrade command (winget) (Microsoft Learn) — o --all e o --include-unknown.
- uninstall command (winget) (Microsoft Learn) — o --source winget e os acordos.
- export command (winget) (Microsoft Learn) — o JSON de saída e o --include-versions.
- import command (winget) (Microsoft Learn) — a fila em série e os flags de tolerância.
- The WinGet source command (Microsoft Learn) — as três fontes, o add e o --explicit.
- settings command (winget) (Microsoft Learn) — o ficheiro de definições e o schema.
- Releases · microsoft/winget-cli (GitHub) — a série estável 1.29 e a 1.30.