- 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
281 lines
5.9 KiB
Markdown
281 lines
5.9 KiB
Markdown
# 🔨 Como Compilar o Cliente NoIdle Atualizado
|
|
|
|
## 📋 Pré-requisitos
|
|
|
|
### No Windows (Recomendado para compilar para Windows):
|
|
|
|
1. **Python 3.8 ou superior**
|
|
```powershell
|
|
python --version
|
|
```
|
|
|
|
2. **Instalar dependências:**
|
|
```powershell
|
|
pip install pyinstaller pywin32 psutil requests pystray pillow schedule
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Método 1: Compilação Simples (Windows)
|
|
|
|
### Passo 1: Instalar PyInstaller
|
|
```powershell
|
|
pip install pyinstaller
|
|
```
|
|
|
|
### Passo 2: Compilar
|
|
```powershell
|
|
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:
|
|
|
|
```powershell
|
|
# 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)
|
|
|
|
```python
|
|
# -*- 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`):
|
|
|
|
```powershell
|
|
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):
|
|
|
|
```powershell
|
|
.\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)
|
|
```bash
|
|
# 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)
|
|
```bash
|
|
# 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
|
|
```powershell
|
|
.\NoIdle.exe
|
|
```
|
|
Deve abrir janela de ativação (se não estiver ativado)
|
|
|
|
### Teste 2: Modo silencioso
|
|
```powershell
|
|
.\NoIdle.exe --silent
|
|
```
|
|
Deve rodar em segundo plano (só funciona se já ativado)
|
|
|
|
### Teste 3: Verificar processo
|
|
```powershell
|
|
Get-Process -Name "NoIdle"
|
|
```
|
|
|
|
### Teste 4: Verificar tamanho
|
|
```powershell
|
|
Get-Item .\NoIdle.exe | Select-Object Name, Length, LastWriteTime
|
|
```
|
|
Tamanho esperado: 15-30 MB (dependendo das dependências)
|
|
|
|
---
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Erro: "Module not found"
|
|
```powershell
|
|
# Instalar todas as dependências novamente
|
|
pip install --force-reinstall pywin32 psutil requests pystray pillow schedule
|
|
```
|
|
|
|
### Erro: "Failed to execute script"
|
|
```powershell
|
|
# Compilar com console para ver erros
|
|
pyinstaller --onefile --console --name NoIdle-debug CLIENTE_CORRIGIDO.py
|
|
.\NoIdle-debug.exe
|
|
```
|
|
|
|
### Erro: "Access denied" ao compilar
|
|
```powershell
|
|
# Executar PowerShell como Administrador
|
|
# Ou desabilitar antivírus temporariamente
|
|
```
|
|
|
|
### Executável muito grande
|
|
```powershell
|
|
# 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:**
|
|
```powershell
|
|
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:
|
|
|
|
1. **Teste local:** Execute em sua máquina
|
|
2. **Teste em VM:** Teste em Windows limpo
|
|
3. **Distribua:** Envie para clientes
|
|
4. **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! 🚀**
|
|
|