# Instalador de Kapiz 1.0.4 para Windows. # # irm https://www.kapiz.dev/install.ps1 | iex # # Descarga el instalador de https://www.kapiz.dev, comprueba su huella SHA-256 y lo ejecuta # en silencio. Lo que baja PowerShell no lleva la marca de "descargado de # internet", así que no salta el aviso de SmartScreen. # # Todo va dentro de una función: con `irm | iex`, un `exit` cerraría la ventana # de PowerShell del usuario. # # La propia app lo lanza al pulsar "Actualizar ahora", con KAPIZ_WAIT_PID (su # proceso: espera a que se cierre) y KAPIZ_RELAUNCH (el .exe que abrir al acabar). function Install-Kapiz { $ErrorActionPreference = 'Stop' # La barra de progreso de Invoke-WebRequest hace la descarga muchísimo más lenta. $ProgressPreference = 'SilentlyContinue' $version = '1.0.4' $url = 'https://www.kapiz.dev/downloads/kapiz-1.0.4-x64.exe' if (-not $version) { Write-Host 'Todavía no hay una versión de Kapiz publicada.' -ForegroundColor Red; return } if (-not $url) { Write-Host 'Todavía no hay versión para Windows.' -ForegroundColor Red; return } $exe = Join-Path $env:TEMP "kapiz-$version-setup.exe" $hashFile = "$exe.sha256" try { Write-Host "Descargando Kapiz $version para Windows..." Invoke-WebRequest -Uri $url -OutFile $exe -UseBasicParsing Invoke-WebRequest -Uri "$url.sha256" -OutFile $hashFile -UseBasicParsing $want = ((Get-Content $hashFile -Raw).Trim() -split '\s+')[0].ToLower() $got = (Get-FileHash -Algorithm SHA256 $exe).Hash.ToLower() if ($want -ne $got) { Write-Host 'La huella no coincide: el archivo llegó dañado o alterado. No se instaló nada.' -ForegroundColor Red return } if ($env:KAPIZ_WAIT_PID) { # Que se cierre antes de reemplazarla; el instalador falla con la app abierta. Wait-Process -Id ([int]$env:KAPIZ_WAIT_PID) -Timeout 60 -ErrorAction SilentlyContinue Start-Sleep -Seconds 2 } Write-Host 'Instalando...' $proc = Start-Process -FilePath $exe -ArgumentList '/S' -Wait -PassThru if ($proc.ExitCode -ne 0) { Write-Host "El instalador terminó con código $($proc.ExitCode)." -ForegroundColor Red return } Write-Host '' Write-Host "Kapiz $version instalado. Ábrelo desde el menú Inicio." -ForegroundColor Green if ($env:KAPIZ_RELAUNCH -and (Test-Path -LiteralPath $env:KAPIZ_RELAUNCH)) { Start-Process -FilePath $env:KAPIZ_RELAUNCH } } catch { Write-Host "No se pudo instalar Kapiz: $($_.Exception.Message)" -ForegroundColor Red } finally { # -LiteralPath: con -Path, PowerShell interpreta comodines y algunas rutas de # usuario fallaban. Que limpiar falle no es un error para quien instala. foreach ($f in @($exe, $hashFile)) { try { if (Test-Path -LiteralPath $f) { Remove-Item -LiteralPath $f -Force -ErrorAction Stop } } catch { } } } } Install-Kapiz