237 lines
8.1 KiB
PowerShell
237 lines
8.1 KiB
PowerShell
|
|
# 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 ""
|
||
|
|
|