Versão: 0.02
Desenvolvido por: Pablo Murad
Contato: pablomurad@pm.me
Ano: 2026
Aplicativo gráfico avançado para Windows que automatiza a atualização de pacotes instalados via Windows Package Manager (winget). O aplicativo oferece uma interface gráfica moderna, totalmente responsiva, com funcionalidades avançadas de gerenciamento, logs detalhados e notificações do sistema.
- ✅ Interface gráfica moderna e totalmente responsiva (janela arrastável e redimensionável)
- ✅ ListView com colunas detalhadas (Nome, Versão Atual, Versão Nova, Status, Progresso)
- ✅ Progresso visual individual por pacote
- ✅ Barra de progresso global com percentual
- ✅ Cores visuais por status (verde=sucesso, vermelho=erro, azul=atualizando)
- ✅ Painel de logs expansível/collapsável
- ✅ Painel de título profissional
- ✅ Botão "Atualizar Tudo" para iniciar atualizações
- ✅ Botão "Pausar/Retomar" para controlar o processo
- ✅ Botão "Cancelar" para interromper atualizações
- ✅ Seleção individual de pacotes (checkbox)
- ✅ Filtros de visualização
- ✅ Operações assíncronas usando Runspaces (UI nunca trava)
- ✅ Thread-safe para atualizações seguras da interface
- ✅ Solicitação de UAC única (via manifesto embutido)
- ✅ Atualização silenciosa e não-interativa
- ✅ Suporte a pacotes com pin e versões desconhecidas
- ✅ Tratamento de erros robusto com retry automático
- ✅ Retry com backoff exponencial (3 tentativas por padrão)
- ✅ Timeout configurável por operação
- ✅ Detecção e tratamento de pacotes problemáticos
- ✅ Mensagens de erro claras e acionáveis
- ✅ Logs detalhados em arquivo (um arquivo por dia)
- ✅ Visualização de logs na interface
- ✅ Histórico completo de atualizações (sucesso/falha)
- ✅ Timestamps em todas as entradas de log
- ✅ Sistema de configuração via arquivo JSON (
config.json) - ✅ Lista de pacotes excluídos (blacklist)
- ✅ Timeouts configuráveis
- ✅ Número de tentativas configurável
- ✅ Modo silencioso/verboso
- ✅ Notificações toast do Windows quando atualizações disponíveis
- ✅ Notificação ao concluir todas atualizações
- ✅ Alertas de erros críticos
- ✅ Fallback para balões do sistema se toast não disponível
- Windows 10 ou Windows 11
- PowerShell 7+ (pwsh.exe)
- Windows Package Manager (winget) instalado
- Privilégios de Administrador (solicitados automaticamente)
-
Execute o script de build para compilar o executável:
.\build.ps1
-
O script irá:
- Instalar o módulo PS2EXE automaticamente (se necessário)
- Compilar
atualizador.ps1ematualizador.exe - Embutir o manifesto UAC
-
Execute
atualizador.exe- o UAC será solicitado uma única vez.
Execute o script PowerShell diretamente:
pwsh -NoProfile -ExecutionPolicy Bypass -File .\atualizador.ps1- Execute o aplicativo (
atualizador.exeouatualizador.ps1) - Aprove o UAC quando solicitado (apenas na primeira execução)
- Aguarde enquanto o aplicativo obtém a lista de pacotes disponíveis para atualização
- Revise a lista de pacotes encontrados na interface
- Clique em "Atualizar Tudo" para iniciar o processo de atualização
- Monitore o progresso em tempo real:
- ✓ = Concluído com sucesso (fundo verde)
- ✗ = Erro durante atualização (fundo vermelho)
- → = Atualizando no momento (fundo azul)
- ⏳ = Aguardando atualização
- Use os controles:
- Pausar/Retomar: Pausa ou retoma o processo de atualização
- Cancelar: Interrompe todas as atualizações pendentes
- Mostrar Logs: Expande/oculta o painel de logs detalhados
- Receba notificações do sistema quando:
- Atualizações são encontradas
- Todas as atualizações são concluídas
- Ocorrem erros críticos
skullgrade/
├── atualizador.ps1 # Script principal com interface gráfica moderna
├── build.ps1 # Script de compilação para EXE
├── release.ps1 # Script para preparar releases
├── app.manifest # Manifesto UAC para elevação de privilégios
├── config.json # Arquivo de configuração (criado automaticamente)
├── logs/ # Diretório de logs (criado automaticamente)
│ └── atualizador_YYYY-MM-DD.log
├── instrução.txt # Instruções de execução (legado)
└── README.md # Este arquivo
Para compilar o executável, execute:
.\build.ps1O script de build:
- Verifica e instala o módulo PS2EXE se necessário
- Compila o script PowerShell em executável
- Configura o aplicativo como GUI (sem console)
- Embuti o manifesto UAC (se mt.exe estiver disponível)
- Adiciona metadados (versão, autor, copyright)
- Módulo PS2EXE: Instalado automaticamente pelo
build.ps1 - mt.exe (opcional): Para embutir manifesto manualmente (Windows SDK)
O aplicativo utiliza duas estratégias para obter a lista de pacotes:
- Formato JSON (preferencial): Mais confiável e estruturado
- Formato de texto (fallback): Parse do output tabular do winget
Cada pacote é atualizado individualmente com as seguintes flags:
--silent: Instalação silenciosa--disable-interactivity: Evita prompts interativos--accept-package-agreements: Aceita acordos automaticamente--accept-source-agreements: Aceita acordos de fontes--include-unknown: Inclui pacotes sem versão detectável--include-pinned: Inclui pacotes com pin
O aplicativo sempre tenta atualizar o Zotero explicitamente, mesmo que não apareça na lista geral (requer targeting explícito).
O aplicativo cria automaticamente um arquivo config.json na primeira execução. Você pode editá-lo para personalizar o comportamento:
{
"ExcludedPackages": [
"Publisher.PackageName"
],
"TimeoutSeconds": 300,
"SilentMode": false,
"RetryAttempts": 3,
"RetryDelaySeconds": 5,
"LogLevel": "Info"
}- ExcludedPackages: Lista de IDs de pacotes que devem ser excluídos das atualizações
- TimeoutSeconds: Tempo máximo (em segundos) para cada operação de atualização (padrão: 300)
- SilentMode: Se
true, reduz a verbosidade dos logs (padrão:false) - RetryAttempts: Número de tentativas em caso de falha (padrão: 3)
- RetryDelaySeconds: Delay base entre tentativas, com backoff exponencial (padrão: 5)
- LogLevel: Nível de log (Info, Warning, Error) - atualmente todos os níveis são registrados
Os logs são salvos automaticamente no diretório logs/ com o formato atualizador_YYYY-MM-DD.log. Cada entrada inclui:
- Timestamp completo
- Nível de log (Info, Warning, Error)
- Mensagem detalhada
Os logs também podem ser visualizados na interface do aplicativo através do botão "Mostrar Logs".
- Verifique se o manifesto foi embutido corretamente
- Execute
mt.exe -manifest app.manifest -outputresource:atualizador.exe;1manualmente - Certifique-se de que o PS2EXE foi compilado com
-requireAdmin
- Verifique se o winget está instalado:
winget --version - Execute
winget upgrademanualmente para verificar se há atualizações - Alguns pacotes podem não aparecer se não tiverem versão detectável
- Certifique-se de que o PowerShell 7+ está instalado
- Verifique se há conexão com a internet (para instalar PS2EXE)
- Execute como administrador se necessário
- Verifique se o PowerShell 7+ está instalado
- Certifique-se de que está executando em Windows (não Linux/Mac)
- Verifique os logs de erro no console (se executar o .ps1 diretamente)
Este é um falso positivo comum com executáveis compilados a partir de scripts PowerShell. O aplicativo é seguro e não contém malware.
- Executáveis gerados por PS2EXE podem ser detectados como suspeitos por alguns antivírus
- Isso ocorre porque o código PowerShell é empacotado dentro do executável
- É um problema conhecido com ferramentas de compilação de scripts
-
Adicionar exceção no antivírus:
- Adicione o arquivo
atualizador.exeà lista de exceções do seu antivírus - Ou adicione a pasta onde o executável está localizado
- Adicione o arquivo
-
Verificar integridade:
- Após compilar, o script gera um arquivo
atualizador.exe.sha256com o hash SHA256 - Você pode verificar a integridade do arquivo executando:
Get-FileHash -Path atualizador.exe -Algorithm SHA256
- Compare com o hash no arquivo
.sha256
- Após compilar, o script gera um arquivo
-
Executar o script diretamente:
- Se preferir, você pode executar o script PowerShell diretamente:
pwsh -NoProfile -ExecutionPolicy Bypass -File .\atualizador.ps1
- Se preferir, você pode executar o script PowerShell diretamente:
-
Reportar falso positivo:
- Se o seu antivírus continuar bloqueando, considere reportar como falso positivo
- Isso ajuda a melhorar a detecção do antivírus
O executável inclui metadados completos para identificação:
- Produto: Atualizador de Pacotes Winget
- Empresa: Pablo Murad
- Versão: 0.0.0.1
- Copyright: Copyright (C) 2026 Pablo Murad
- Descrição: Aplicativo gráfico para atualização automática de pacotes instalados via Windows Package Manager (winget)
- Funções principais:
Ensure-Admin: Verifica e eleva privilégiosGet-WingetPath: Localiza o executável do wingetGet-PackagesToUpgrade: Obtém lista de pacotes para atualizarUpdate-Package: Atualiza um pacote individualShow-UpdaterGUI: Cria e gerencia a interface gráfica
Para modificar o comportamento:
- Flags do winget: Edite o array
$commonna funçãoShow-UpdaterGUI - Pacotes especiais: Modifique a lógica de adição do Zotero
- Interface: Ajuste os controles Windows Forms na função
Show-UpdaterGUI
Copyright (C) 2026 Pablo Murad
Este projeto é fornecido "como está", sem garantias de qualquer tipo.
Para questões, sugestões ou problemas, entre em contato:
- Email: pablomurad@pm.me
- MAJOR: Interface completamente refatorada e modernizada
- FIX: Janela agora é totalmente arrastável e responsiva (corrigido problema de janela estática)
- NEW: Sistema de runspaces para operações assíncronas (UI nunca trava)
- NEW: ListView moderna com colunas detalhadas (Nome, Versão Atual, Versão Nova, Status, Progresso)
- NEW: Controles avançados (Pausar/Retomar, Cancelar, Seleção individual)
- NEW: Sistema de logs detalhado com arquivos diários
- NEW: Visualização de logs na interface (expansível/collapsável)
- NEW: Notificações toast do Windows
- NEW: Sistema de configuração via JSON
- NEW: Retry automático com backoff exponencial
- NEW: Cores visuais por status (verde=sucesso, vermelho=erro, azul=atualizando)
- NEW: Painel de título profissional
- IMPROVED: Parsing melhorado de pacotes (JSON prioritário, fallback robusto)
- IMPROVED: Tratamento de erros mais robusto
- IMPROVED: Thread-safe para todas operações de UI
- Versão inicial
- Interface gráfica com Windows Forms
- Progresso por pacote individual
- Compilação para executável com PS2EXE
- Manifesto UAC embutido
- Suporte a pacotes com pin e versões desconhecidas
