$ErrorActionPreference = 'Stop' Write-Host '' Write-Host '=============================================' Write-Host ' FASTCLAW ONE-COMMAND INSTALLER' Write-Host '=============================================' Write-Host '' $license = Read-Host "Enter your FastClaw license key (FC-...)" if (-not $license) { Write-Host "License key required."; exit 1 } $manifestResp = Invoke-RestMethod -Method POST -Uri "https://fastclaw.live/api/install/windows-manifest" -ContentType "application/json" -Body (@{license_key=$license} | ConvertTo-Json -Compress) if (-not $manifestResp.ok) { throw "Installer manifest request failed." } $setupUrl = [string]$manifestResp.setup_url $expectedSha = ([string]$manifestResp.sha256).ToLower().Trim() if (-not $setupUrl) { throw "Installer URL missing in manifest." } $tmp = Join-Path $env:TEMP "FastClaw-Setup.exe" Write-Host "Downloading installer..." Invoke-WebRequest -Uri $setupUrl -OutFile $tmp -UseBasicParsing if ($expectedSha) { $actualSha = (Get-FileHash -Algorithm SHA256 -Path $tmp).Hash.ToLower() if ($actualSha -ne $expectedSha) { throw "Installer checksum mismatch. Aborting." } } Write-Host "Launching FastClaw setup..." Start-Process -FilePath $tmp -Wait Write-Host "Install flow finished."