feat: Implementação completa do NoIdle - Cliente, Backend e Scripts
- 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
This commit is contained in:
280
BUILD_CLIENTE.md
Normal file
280
BUILD_CLIENTE.md
Normal file
@@ -0,0 +1,280 @@
|
||||
# 🔨 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! 🚀**
|
||||
|
||||
Reference in New Issue
Block a user