Files
NoIdle/BUILD_CLIENTE.md
root 6086c13be7 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
2025-11-16 22:56:35 +00:00

5.9 KiB

🔨 Como Compilar o Cliente NoIdle Atualizado

📋 Pré-requisitos

No Windows (Recomendado para compilar para Windows):

  1. Python 3.8 ou superior

    python --version
    
  2. 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:

  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! 🚀