# Script Automatizado para Compilar NoIdle # Execute no Windows com PowerShell param( [switch]$Clean, [switch]$Test, [string]$Icon = "" ) $ErrorActionPreference = "Stop" Write-Host "========================================" -ForegroundColor Cyan Write-Host "NoIdle - Build Script" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "" # Verificar se está no Windows if ($PSVersionTable.Platform -eq "Unix") { Write-Host "❌ Este script deve ser executado no Windows!" -ForegroundColor Red exit 1 } # Verificar Python Write-Host "[1/6] Verificando Python..." -ForegroundColor Yellow try { $pythonVersion = python --version 2>&1 Write-Host " ✅ Python encontrado: $pythonVersion" -ForegroundColor Green } catch { Write-Host " ❌ Python não encontrado!" -ForegroundColor Red Write-Host " Instale Python 3.8+ de: https://www.python.org/downloads/" -ForegroundColor Yellow exit 1 } Write-Host "" # Verificar arquivo fonte Write-Host "[2/6] Verificando arquivo fonte..." -ForegroundColor Yellow $sourceFile = "CLIENTE_CORRIGIDO.py" if (-not (Test-Path $sourceFile)) { Write-Host " ❌ Arquivo não encontrado: $sourceFile" -ForegroundColor Red exit 1 } Write-Host " ✅ Arquivo encontrado: $sourceFile" -ForegroundColor Green $fileSize = (Get-Item $sourceFile).Length Write-Host " Tamanho: $([math]::Round($fileSize / 1KB, 2)) KB" -ForegroundColor Gray Write-Host "" # Limpar builds anteriores se solicitado if ($Clean) { Write-Host "[CLEAN] Limpando builds anteriores..." -ForegroundColor Yellow Remove-Item -Path "build" -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path "dist" -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path "*.spec" -Force -ErrorAction SilentlyContinue Write-Host " ✅ Diretórios limpos" -ForegroundColor Green Write-Host "" } # Instalar/Atualizar dependências Write-Host "[3/6] Instalando dependências..." -ForegroundColor Yellow $dependencies = @( "pyinstaller", "pywin32", "psutil", "requests", "pystray", "pillow", "schedule" ) foreach ($dep in $dependencies) { Write-Host " Instalando $dep..." -ForegroundColor Gray try { python -m pip install --quiet --upgrade $dep } catch { Write-Host " ⚠️ Erro ao instalar $dep" -ForegroundColor Yellow } } Write-Host " ✅ Dependências instaladas" -ForegroundColor Green Write-Host "" # Compilar Write-Host "[4/6] Compilando NoIdle.exe..." -ForegroundColor Yellow Write-Host " Isso pode demorar alguns minutos..." -ForegroundColor Gray Write-Host "" $buildCommand = "pyinstaller --onefile --windowed --name NoIdle" # Adicionar ícone se fornecido if ($Icon -and (Test-Path $Icon)) { $buildCommand += " --icon=`"$Icon`"" Write-Host " Usando ícone: $Icon" -ForegroundColor Cyan } $buildCommand += " $sourceFile" try { Invoke-Expression $buildCommand | Out-Null Write-Host " ✅ Compilação concluída!" -ForegroundColor Green } catch { Write-Host " ❌ Erro na compilação!" -ForegroundColor Red Write-Host " $_" -ForegroundColor Red exit 1 } Write-Host "" # Verificar resultado Write-Host "[5/6] Verificando executável..." -ForegroundColor Yellow $exePath = "dist\NoIdle.exe" if (Test-Path $exePath) { $exeInfo = Get-Item $exePath Write-Host " ✅ Executável criado com sucesso!" -ForegroundColor Green Write-Host " Localização: $exePath" -ForegroundColor Cyan Write-Host " Tamanho: $([math]::Round($exeInfo.Length / 1MB, 2)) MB" -ForegroundColor Cyan Write-Host " Data: $($exeInfo.LastWriteTime)" -ForegroundColor Gray } else { Write-Host " ❌ Executável não foi criado!" -ForegroundColor Red exit 1 } Write-Host "" # Testar se solicitado if ($Test) { Write-Host "[6/6] Testando executável..." -ForegroundColor Yellow # Teste 1: Verificar se executa Write-Host " Teste 1: Iniciar e parar processo..." -ForegroundColor Gray try { $process = Start-Process -FilePath $exePath -ArgumentList "--silent" -PassThru -WindowStyle Hidden Start-Sleep -Seconds 3 $running = Get-Process -Id $process.Id -ErrorAction SilentlyContinue if ($running) { Write-Host " ✅ Processo iniciou corretamente" -ForegroundColor Green Stop-Process -Id $process.Id -Force } else { Write-Host " ⚠️ Processo não está rodando" -ForegroundColor Yellow } } catch { Write-Host " ⚠️ Erro ao testar: $_" -ForegroundColor Yellow } # Teste 2: Verificar tamanho Write-Host " Teste 2: Verificar tamanho..." -ForegroundColor Gray $sizeInMB = [math]::Round($exeInfo.Length / 1MB, 2) if ($sizeInMB -lt 50) { Write-Host " ✅ Tamanho OK ($sizeInMB MB)" -ForegroundColor Green } else { Write-Host " ⚠️ Tamanho grande ($sizeInMB MB)" -ForegroundColor Yellow } Write-Host "" } # Resumo final Write-Host "========================================" -ForegroundColor Green Write-Host "✅ BUILD CONCLUÍDO COM SUCESSO!" -ForegroundColor Green Write-Host "========================================" -ForegroundColor Green Write-Host "" Write-Host "📦 Executável: $exePath" -ForegroundColor Cyan Write-Host "" Write-Host "📋 Próximos passos:" -ForegroundColor Yellow Write-Host " 1. Teste o executável em uma máquina limpa" -ForegroundColor White Write-Host " 2. Execute: .\dist\NoIdle.exe --silent" -ForegroundColor Gray Write-Host " 3. Verifique se o processo está rodando:" -ForegroundColor White Write-Host " Get-Process -Name 'NoIdle'" -ForegroundColor Gray Write-Host " 4. Distribua junto com os scripts de configuração" -ForegroundColor White Write-Host "" Write-Host "📄 Arquivos para distribuir:" -ForegroundColor Yellow Write-Host " - dist\NoIdle.exe" -ForegroundColor White Write-Host " - CONFIGURAR_AUTOSTART_NOIDLE.ps1" -ForegroundColor White Write-Host " - VERIFICAR_E_CORRIGIR_NOIDLE.ps1" -ForegroundColor White Write-Host " - GUIA_RAPIDO_AUTOSTART.md" -ForegroundColor White Write-Host "" # Oferecer criar pacote de distribuição $criarPacote = Read-Host "Deseja criar um pacote ZIP para distribuição? (S/N)" if ($criarPacote -eq "S" -or $criarPacote -eq "s") { Write-Host "" Write-Host "Criando pacote de distribuição..." -ForegroundColor Cyan $packageDir = "NoIdle-Package" $zipFile = "NoIdle-v1.0.zip" # Criar diretório temporário New-Item -ItemType Directory -Path $packageDir -Force | Out-Null # Copiar arquivos Copy-Item -Path $exePath -Destination $packageDir Copy-Item -Path "CONFIGURAR_AUTOSTART_NOIDLE.ps1" -Destination $packageDir -ErrorAction SilentlyContinue Copy-Item -Path "VERIFICAR_E_CORRIGIR_NOIDLE.ps1" -Destination $packageDir -ErrorAction SilentlyContinue Copy-Item -Path "GUIA_RAPIDO_AUTOSTART.md" -Destination $packageDir -ErrorAction SilentlyContinue Copy-Item -Path "LEIA_PRIMEIRO.md" -Destination $packageDir -ErrorAction SilentlyContinue # Criar README para o pacote $readmeContent = @" # NoIdle - Pacote de Instalação v1.0 ## Conteúdo: - NoIdle.exe - Cliente principal - CONFIGURAR_AUTOSTART_NOIDLE.ps1 - Script de configuração - VERIFICAR_E_CORRIGIR_NOIDLE.ps1 - Script de diagnóstico - GUIA_RAPIDO_AUTOSTART.md - Guia do usuário - LEIA_PRIMEIRO.md - Documentação completa ## Instalação Rápida: 1. Execute NoIdle.exe 2. Insira a chave de ativação 3. Reinicie o computador 4. O NoIdle iniciará automaticamente! ## Resolver Problemas: Se não iniciar automaticamente após reiniciar: 1. Execute: VERIFICAR_E_CORRIGIR_NOIDLE.ps1 -AutoFix 2. Reinicie novamente ## Suporte: Leia LEIA_PRIMEIRO.md para mais informações. "@ $readmeContent | Out-File -FilePath "$packageDir\README.txt" -Encoding UTF8 # Criar ZIP Compress-Archive -Path $packageDir\* -DestinationPath $zipFile -Force # Limpar diretório temporário Remove-Item -Path $packageDir -Recurse -Force Write-Host "✅ Pacote criado: $zipFile" -ForegroundColor Green Write-Host "" } Write-Host "Pronto! 🚀" -ForegroundColor Green Write-Host ""