# prospect by obliq: instala o app no Windows (agente + interface num programa só) $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $base = 'https://prospect.obliqstudios.com.br' Write-Host '' Write-Host ' prospect by obliq.' -ForegroundColor White Write-Host ' Instalando o app. Leva uns 2 minutos, sem janela: acompanhe por aqui.' -ForegroundColor DarkGray Write-Host '' $yml = (Invoke-WebRequest "$base/app/latest.yml" -UseBasicParsing).Content if ($yml -is [byte[]]) { $yml = [Text.Encoding]::UTF8.GetString($yml) } $arquivo = ([regex]'(?m)^path:\s*(.+)$').Match($yml).Groups[1].Value.Trim() $sha = ([regex]'(?m)^sha512:\s*(.+)$').Match($yml).Groups[1].Value.Trim() $versao = ([regex]'(?m)^version:\s*(.+)$').Match($yml).Groups[1].Value.Trim() $mb = [math]::Round([double]([regex]'(?m)^\s*size:\s*(\d+)').Match($yml).Groups[1].Value / 1MB) if (-not $arquivo -or -not $sha) { throw 'O servidor não informou o instalador. Fale com a obliq.' } $destino = Join-Path $env:TEMP $arquivo Write-Host " Baixando a versão $versao ($mb MB)..." -ForegroundColor DarkGray Invoke-WebRequest "$base/app/$([uri]::EscapeDataString($arquivo))" -OutFile $destino -UseBasicParsing $sha512 = [System.Security.Cryptography.SHA512]::Create() $obtido = [Convert]::ToBase64String($sha512.ComputeHash([IO.File]::ReadAllBytes($destino))) if ($obtido -ne $sha) { Remove-Item $destino -Force; throw 'O arquivo baixado não confere com o publicado. Nada foi instalado.' } Write-Host ' Conferido.' -ForegroundColor DarkGray if ($env:OBLIQ_SO_BAIXAR) { Write-Host " Baixado e conferido em $destino (não instalado)."; return } # o instalador roda sem janela; um ponto a cada 2 segundos mostra que ele está andando Write-Host ' Instalando' -NoNewline -ForegroundColor DarkGray $inicio = Get-Date $instalador = Start-Process $destino -ArgumentList '/S' -PassThru while (-not $instalador.HasExited) { Start-Sleep -Seconds 2; Write-Host '.' -NoNewline -ForegroundColor DarkGray } Write-Host (" {0} s" -f [int]((Get-Date) - $inicio).TotalSeconds) -ForegroundColor DarkGray $app = Get-ChildItem (Join-Path $env:LOCALAPPDATA 'Programs') -Recurse -Filter 'Obliq Prospect.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 Remove-Item $destino -Force -ErrorAction SilentlyContinue if (-not $app) { throw 'O instalador rodou, mas o app não apareceu. Fale com a obliq.' } Write-Host '' Write-Host ' Pronto. Abrindo o prospect by obliq: entre com o seu usuário e o agente liga sozinho.' -ForegroundColor Green Write-Host '' Start-Process $app.FullName