# 🔨 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! 🚀**