Files
NoIdle/BUILD_NOIDLE.ps1

237 lines
8.1 KiB
PowerShell
Raw Normal View History

# 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 ""