Project

General

Profile

Bug #4944 » Chrome-Limpo.ps1

Vladmir Tostoeki, 02/14/2026 02:14 PM

 
# Iniciar-Chrome-PowerApps.ps1
# Abre o Chrome com perfil dedicado, limpando cache a cada execução,
# mantendo preferências, definindo pt-BR e permitindo pop-ups.
# Requer Windows + PowerShell 5+ e Google Chrome instalado.

# ========= CONFIGURAÇÕES =========
# URL de destino (usei & ao invés de &):
$TargetUrl = 'https://apps.powerapps.com/play/e/95203756-a24d-e221-aee4-040d2fcb80ea/a/25ae4e14-7c4c-4d30-8f9e-6a9b71d0b12d?tenantId=f1336bbd-288a-4586-b8d3-97841f4b5b97&sourcetime=1768431412364'

# Pasta do perfil dedicado (se preferir, altere o nome da pasta):
$UserDataDir = Join-Path $env:LOCALAPPDATA 'Google\Chrome\PowerApps_Profile'
$ProfileDir = Join-Path $UserDataDir 'Default'

# Se quiser *também* apagar dados locais das apps (IndexedDB, Local Storage, etc.),
# mude para $true (atenção: isso pode deslogar aplicativos web):
$AggressiveSiteDataCleanup = $false
# =================================


Write-Host ">> Preparando ambiente do Chrome para Power Apps..." -ForegroundColor Cyan

# 1) Localiza o executável do Chrome
$chromeCandidates = @(
Join-Path $env:ProgramFiles 'Google\Chrome\Application\chrome.exe'),
(Join-Path ${env:ProgramFiles(x86)} 'Google\Chrome\Application\chrome.exe'),
(Join-Path $env:LOCALAPPDATA 'Google\Chrome\Application\chrome.exe')
) | Where-Object { $_ -and (Test-Path $_) }

$ChromePath = $chromeCandidates | Select-Object -First 1

if (-not $ChromePath) {
Write-Error "Google Chrome não encontrado nas pastas padrão. Instale o Chrome ou ajuste o caminho no script."
exit 1
}

# 2) Garante que o perfil dedicado exista
New-Item -ItemType Directory -Path $ProfileDir -Force | Out-Null

# 3) Encerra instâncias do Chrome que estejam usando ESTE perfil (se houver)
try {
$procs = Get-CimInstance Win32_Process -Filter 'Name = "chrome.exe"' -ErrorAction SilentlyContinue |
Where-Object { $_.CommandLine -and ($_.CommandLine -match [Regex]::Escape($UserDataDir)) }
if ($procs) {
Write-Host ">> Encerrando instâncias do Chrome com o perfil dedicado..." -ForegroundColor Yellow
$procs | ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue }
Start-Sleep -Milliseconds 300
}
} catch { }

# 4) Limpa apenas cache (preserva cookies, logins e preferências)
$cachePaths = @(
Join-Path $ProfileDir 'Cache',
Join-Path $ProfileDir 'Code Cache',
Join-Path $ProfileDir 'GPUCache',
Join-Path $ProfileDir 'Service Worker\CacheStorage',
Join-Path $ProfileDir 'Service Worker\Database'
)

foreach ($p in $cachePaths) {
if (Test-Path -LiteralPath $p) {
try {
Write-Host ">> Limpando cache: $p" -ForegroundColor DarkGray
Remove-Item -LiteralPath $p -Recurse -Force -ErrorAction Stop
} catch {
Write-Warning "Não foi possível limpar: $p. Motivo: $($_.Exception.Message)"
}
}
}

# 5) (Opcional) Limpeza agressiva de dados das aplicações (pode deslogar sites)
if ($AggressiveSiteDataCleanup) {
$siteDataPaths = @(
Join-Path $ProfileDir 'Local Storage',
Join-Path $ProfileDir 'IndexedDB',
Join-Path $ProfileDir 'WebStorage',
Join-Path $ProfileDir 'File System',
Join-Path $ProfileDir 'Databases',
Join-Path $ProfileDir 'Storage',
Join-Path $ProfileDir 'BlobStorage'
)

foreach ($p in $siteDataPaths) {
if (Test-Path -LiteralPath $p) {
try {
Write-Host ">> (Agressivo) Removendo dados de aplicação: $p" -ForegroundColor DarkYellow
Remove-Item -LiteralPath $p -Recurse -Force -ErrorAction Stop
} catch {
Write-Warning "Não foi possível remover: $p. Motivo: $($_.Exception.Message)"
}
}
}
}

# 6) Argumentos do Chrome:
# - --user-data-dir => usa o perfil dedicado, preserva configurações do usuário
# - --lang=pt-BR => interface/idioma pt-BR
# - --disable-popup-blocking => permite pop-ups
# - --no-first-run => evita telas iniciais
# - --start-maximized => janela maximizada
$chromeArgs = @(
"--user-data-dir=""$UserDataDir""",
'--no-first-run',
'--disable-popup-blocking',
'--lang=pt-BR',
'--start-maximized',
$TargetUrl
)

Write-Host ">> Iniciando Chrome..." -ForegroundColor Green
Start-Process -FilePath $ChromePath -ArgumentList $chromeArgs
(1-1/2)