- Cliente Windows com modo silencioso e auto-start robusto - Backend Node.js + API REST - Frontend Next.js + Dashboard - Scripts PowerShell de configuração e diagnóstico - Documentação completa - Build scripts para Windows e Linux - Solução de auto-start após reinicialização Resolução do problema: Cliente não voltava ativo após reboot Solução: Registro do Windows + Task Scheduler + Modo silencioso
5.9 KiB
5.9 KiB
🔨 Como Compilar o Cliente NoIdle Atualizado
📋 Pré-requisitos
No Windows (Recomendado para compilar para Windows):
-
Python 3.8 ou superior
python --version -
Instalar dependências:
pip install pyinstaller pywin32 psutil requests pystray pillow schedule
🚀 Método 1: Compilação Simples (Windows)
Passo 1: Instalar PyInstaller
pip install pyinstaller
Passo 2: Compilar
pyinstaller --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py
Passo 3: Resultado
O executável estará em: dist\NoIdle.exe
🎯 Método 2: Compilação com Configurações Otimizadas
Criar arquivo de spec personalizado:
# Gerar spec inicial
pyi-makespec --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py
# Editar NoIdle.spec conforme necessário (ver abaixo)
# Compilar usando o spec
pyinstaller NoIdle.spec
📄 Arquivo NoIdle.spec (Personalizado)
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
['CLIENTE_CORRIGIDO.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[
'win32timezone',
'pystray._win32',
'PIL._tkinter_finder',
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='NoIdle',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False, # Sem janela de console
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=None, # Adicione caminho do ícone se tiver: 'icon.ico'
version_file=None, # Adicione arquivo de versão se tiver
)
🎨 Método 3: Com Ícone Personalizado
Se você tiver um ícone (noidle.ico):
pyinstaller --onefile --windowed --name NoIdle --icon=noidle.ico CLIENTE_CORRIGIDO.py
🔧 Método 4: Build Script PowerShell (Automatizado)
Use o script BUILD_NOIDLE.ps1 (criado abaixo):
.\BUILD_NOIDLE.ps1
📦 Compilação Cross-Platform (Linux → Windows)
Se você está no Linux e quer compilar para Windows:
Opção A: Wine + PyInstaller (Complexo)
# Instalar Wine
sudo apt install wine wine64
# Instalar Python no Wine
wine python-installer.exe
# Compilar (pode ter problemas)
wine python -m PyInstaller --onefile --windowed CLIENTE_CORRIGIDO.py
Opção B: Docker (Recomendado)
# Usar container Windows
docker run --rm -v $(pwd):/src cdrx/pyinstaller-windows:python3 \
"pip install pywin32 psutil requests pystray pillow schedule && \
pyinstaller --onefile --windowed --name NoIdle /src/CLIENTE_CORRIGIDO.py"
Opção C: GitHub Actions (Automático)
Use o workflow criado em .github/workflows/build.yml (ver abaixo)
🧪 Testar o Executável
Teste 1: Executar normalmente
.\NoIdle.exe
Deve abrir janela de ativação (se não estiver ativado)
Teste 2: Modo silencioso
.\NoIdle.exe --silent
Deve rodar em segundo plano (só funciona se já ativado)
Teste 3: Verificar processo
Get-Process -Name "NoIdle"
Teste 4: Verificar tamanho
Get-Item .\NoIdle.exe | Select-Object Name, Length, LastWriteTime
Tamanho esperado: 15-30 MB (dependendo das dependências)
🐛 Troubleshooting
Erro: "Module not found"
# Instalar todas as dependências novamente
pip install --force-reinstall pywin32 psutil requests pystray pillow schedule
Erro: "Failed to execute script"
# Compilar com console para ver erros
pyinstaller --onefile --console --name NoIdle-debug CLIENTE_CORRIGIDO.py
.\NoIdle-debug.exe
Erro: "Access denied" ao compilar
# Executar PowerShell como Administrador
# Ou desabilitar antivírus temporariamente
Executável muito grande
# Usar UPX para comprimir
pip install pyinstaller[encryption]
pyinstaller --onefile --windowed --name NoIdle --upx-dir=C:\upx CLIENTE_CORRIGIDO.py
📊 Comparação de Métodos
| Método | Tamanho | Velocidade | Dificuldade |
|---|---|---|---|
| PyInstaller --onefile | ~20 MB | Médio | Fácil ⭐ |
| PyInstaller + UPX | ~15 MB | Médio | Fácil ⭐ |
| PyInstaller + spec | ~20 MB | Rápido | Médio ⭐⭐ |
| Docker | ~20 MB | Lento | Difícil ⭐⭐⭐ |
🎯 Recomendação
Para build rápido e simples:
pip install pyinstaller pywin32 psutil requests pystray pillow schedule
pyinstaller --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py
Resultado: dist\NoIdle.exe pronto para distribuir!
📝 Checklist de Build
- Python instalado (3.8+)
- Todas as dependências instaladas
- PyInstaller instalado
- CLIENTE_CORRIGIDO.py está na pasta atual
- Executar comando de build
- Testar o executável gerado
- Verificar tamanho do arquivo
- Testar em máquina limpa (sem Python)
- Testar modo normal e
--silent
🚀 Distribuição
Após compilar:
- Teste local: Execute em sua máquina
- Teste em VM: Teste em Windows limpo
- Distribua: Envie para clientes
- Forneça scripts: Junto com
VERIFICAR_E_CORRIGIR_NOIDLE.ps1
📦 Empacotamento Completo
Para distribuir um pacote completo:
NoIdle-v1.0/
├── NoIdle.exe
├── CONFIGURAR_AUTOSTART_NOIDLE.ps1
├── VERIFICAR_E_CORRIGIR_NOIDLE.ps1
├── GUIA_RAPIDO_AUTOSTART.md
└── LEIA_PRIMEIRO.md
Comprimir em: NoIdle-v1.0.zip
Pronto para compilar! 🚀