01
Visão geral
O winget é poderoso, mas é uma ferramenta de terminal. O WingetEasy coloca as atualizações do Windows numa interface nativa, discreta e com controle deliberado pelo usuário.
- Verifica e aplica atualizações de todos os apps instalados via winget, com categorias, busca e filtros.
- Resolve os problemas reais do dia a dia: apps abertos, pedidos de administrador, pacotes em loop e fontes corrompidas.
- Guarda snapshots da máquina, gera scripts PowerShell e monta perfis para reinstalar tudo em outro PC.
- Roda discretamente na bandeja ou sem interface nenhuma, pelo Agendador de Tarefas.
02
Telas do aplicativo
Navegação lateral com NavigationView, tema claro/escuro e idioma PT-BR/EN-US alternáveis na barra de título.
| Tela | Para que serve |
|---|---|
| UpdatesPage | Central de atualizações: banner de estado, chips Todos/Apps/Runtimes/Segurança, busca, adiados e barra de progresso do lote. |
| UpdateFlyout | Painel rápido da bandeja com efeito acrílico, checklist com rolagem e botão “Atualizar Selecionados (N)”. |
| HistoryPage | Linha do tempo agrupada por data, filtros 24 h/7 dias/30 dias/Tudo e exportação CSV. |
| BackupPage | Snapshots em cartões: Restaurar, Exportar .json, Exportar .ps1, Transformar em perfil e Excluir. |
| ProfilesPage | Catálogo de perfis com nome, descrição, contagem de pacotes e instalação em lote. |
| SettingsPage | Bandeja e inicialização, automação, notificações, auto-cura de fontes e atualização via Velopack. |
03
Casos de uso
Especificação formal dos cenários que o WingetEasy cobre.
Atualização rápida pela bandeja
Abre o painel pelo ícone, marca/desmarca pacotes e atualiza com o botão dinâmico.
Conflito com apps abertos
Chrome ou VS Code abertos são detectados antes; o usuário escolhe “Fechar e atualizar” ou “Pular pacote”.
Elevação administrativa (UAC)
Pacotes que exigem admin são agrupados e pedem um único consentimento do Windows.
Pacotes problemáticos ou em loop
UpdateLoopDetector identifica versões Unknown ou < 1.0; é possível adiar ou ignorar a versão.
Snapshot antes de formatar
Cria o snapshot, salva localmente e exporta um script .ps1 auto-instalável.
Restauração em nova instalação
Seleciona o snapshot, escolhe só os programas desejados num checklist e restaura em lote.
Perfis temáticos
Cria perfis como “Setup Web Dev” e instala de uma vez tudo que falta na máquina.
Execução agendada headless
schtasks dispara --check ou --update-all sem janela, com auditoria no SQLite e toast.
Auto-cura de repositórios
Na manutenção das Configurações, executa winget source reset --force e valida as fontes.
Inicialização silenciosa
Inicia com o Windows via --minimized, só na bandeja, consumindo ~7–15 MB.
04
Verificação de atualizações
Disparada por F5, pelo botão “Verificar agora”, pelo temporizador periódico, pela tarefa agendada ou por --check.
05
Atualização em lote
Três fases: pré-voo de processos conflitantes, lote de usuário padrão e fallback UAC em lote único.
06
Cancelamento em tempo real
O sinal de cancelamento atravessa todas as camadas até encerrar o instalador em execução.
07
Snapshot e exportação PowerShell
winget export enriquecido com nome da máquina, versão do Windows e data, salvo no SQLite e opcionalmente exportado como script.
#Requires -RunAsAdministrator
Write-Host 'Iniciando instalacao dos programas via Winget...' -ForegroundColor Cyan
winget install --id 'Google.Chrome' --exact --silent --accept-package-agreements --accept-source-agreements
winget install --id 'Git.Git' --exact --silent --accept-package-agreements --accept-source-agreements08
Restauração granular
Todos os pacotes vêm marcados; o usuário desmarca o que não quer e acompanha o progresso item a item.
09
Auto-cura de fontes do WinGet
Quando o catálogo corrompe ou gera timeouts, um clique restaura as fontes oficiais.
10
Modo headless (CLI)
Para scripts, terminal e agendadores — sem carregar a interface WinUI.
| Argumento | Efeito |
|---|---|
| --check | Verifica atualizações silenciosamente. Retorna 0 se tudo estiver atualizado ou 10 se houver pendências. |
| --update-all | Atualiza automaticamente todos os pacotes pendentes. |
| --minimized | Inicia direto na bandeja do sistema, sem janela. |
| --backup <caminho> | Gera um snapshot no arquivo informado. |
| --restore <caminho> | Restaura os pacotes de um snapshot. |
| Código | Significado |
|---|---|
| 0 | Sucesso / nenhuma ação pendente |
| 1 | Erro genérico de execução |
| 2 | Argumentos inválidos |
| 10 | Atualizações disponíveis encontradas (durante --check) |
| 11 | Falha ao executar uma ou mais atualizações |
Ação: WingetEasy.App.exe --check
Gatilho: diário ou repetição configurável (SettingsPage)
Condições: RunOnlyIfNetworkAvailable = true
DisallowStartIfOnBatteries = false
StopIfGoingOnBatteries = false11
Solução de problemas comuns
Como resolver na prática os entraves mais frequentes que você encontra durante o uso do winget.
O winget avisa que o aplicativo está aberto e não consegue atualizar
0x8A150056 (-1978335146)O WingetEasy detecta automaticamente aplicativos em execução (ex: Google Chrome, Visual Studio Code) na fase de pré-voo. Você pode clicar em “Fechar e atualizar” para encerrar o app graciosamente com salvamento de estado, ou escolher “Pular” para continuar os outros.
O Windows pede confirmação de administrador (UAC) várias vezes seguidas
0x8A150014 (-1978335212)No WingetEasy, o aplicativo principal roda sem privilégios. Se vários pacotes exigem elevação, ele os reúne e dispara um único prompt de consentimento UAC através do processo worker isolado (--elevated-update).
Um programa atualiza com sucesso mas volta a aparecer na lista logo em seguida (Loop / Versão Unknown)
Versão Unknown ou < 1.0Alguns manifestos informam versões incorretas. O UpdateLoopDetector identifica quando um programa já foi atualizado nas últimas 24 horas para o mesmo identificador e o move automaticamente para a aba “Adiados”, impedindo notificações repetitivas.
As buscas falham ou o winget trava dizendo que o catálogo está inacessível
Source Timeout / Catálogo corrompidoAbra a aba Configurações e clique em “Auto-cura de fontes”. O WingetEasy executa winget source reset --force, restaura os repositórios oficiais da Microsoft e valida a integridade da conexão.
Erro de assinatura ou hash divergente ao baixar o instalador
0x8A15002B (-1978335189)O instalador fornecido pelo fabricante foi alterado antes do manifesto do winget ser atualizado pela comunidade. Aguarde algumas horas até que o repositório oficial aprove a nova hash, ou adie temporariamente o pacote.
Aparece a mensagem de reinício pendente após a instalação
0x8A15004E (-1978335154)O pacote foi instalado com êxito! O Windows apenas precisa que você reinicie a máquina para substituir bibliotecas DLL que estavam bloqueadas em memória. O WingetEasy trata isso como sucesso.
12
Códigos de erro do winget
O WingetErrorTranslator converte HRESULTs em mensagens em português e decide a próxima ação.
| Hex | Inteiro | Mensagem no WingetEasy |
|---|---|---|
| 0x8A150056 | -1978335146 | O aplicativo está aberto no momento. Feche-o e tente novamente. |
| 0x8A15004E | -1978335154 | Atualização aplicada com sucesso! Reinicie o computador para concluir. (tratado como sucesso) |
| 0x8A150014 | -1978335212 | Esta atualização requer permissões de Administrador. (dispara o fallback UAC) |
| 0x8A15002B | -1978335189 | O arquivo baixado tem assinatura diferente do catálogo. Pode ser um erro temporário do fabricante. |
| 0x8A150011 | -1978335215 | O instalador deste programa não suporta atualização silenciosa. |
| 0x8A15002E | -1978335186 | O pacote já se encontra na versão mais recente compatível. |
13
Configurações e efeito imediato
Cada toggle é gravado atomicamente no SettingsRepository e lido pelo serviço que depende dele.
| Configuração | Onde é avaliada |
|---|---|
| KeepInSystemTray | Em MainWindow.AppWindow_Closing: esconde na bandeja ou encerra o app. |
| AutoStart | Registro em HKCU…Run com --minimized. |
| AutoUpdate | Cria ou remove a tarefa no Agendador de Tarefas do Windows. |
| IncludeBetaVersions | Libera versões beta, rc, preview, canary, insider e nightly na verificação. |
| QuietHours | Em ToastNotificationService, antes de exibir qualquer alerta. |
| NotificationSound | Aplicado na carga da notificação do Windows. |
| WindowBounds | Carregado no construtor de MainWindow para restaurar posição e tamanho. |
14
Próximos passos
Milestone 6 — distribuição.
- Finalização do manifesto MSIX (
).Package.appxmanifest - Pipeline de CI/CD para releases automatizadas (
com Velopack).release.yml - Submissão ao repositório oficial
.microsoft/winget-pkgs
