$ErrorActionPreference = "Stop" $Arch = if ([Environment]::Is64BitOperatingSystem) { "amd64" } else { throw "Unsupported architecture" } $Version = if ($env:X4RGE_CLI_VERSION) { $env:X4RGE_CLI_VERSION } else { "latest" } $Base = "https://4rged.ai/downloads/cli" $Artifact = "4rged-$Version-windows-$Arch.zip" $Temp = Join-Path ([System.IO.Path]::GetTempPath()) ([System.Guid]::NewGuid().ToString()) New-Item -ItemType Directory -Path $Temp | Out-Null try { Invoke-WebRequest "$Base/$Artifact" -OutFile (Join-Path $Temp $Artifact) Invoke-WebRequest "$Base/$Artifact.sha256" -OutFile (Join-Path $Temp "$Artifact.sha256") $Expected = ((Get-Content (Join-Path $Temp "$Artifact.sha256")) -split " ")[0].ToLowerInvariant() $Actual = (Get-FileHash (Join-Path $Temp $Artifact) -Algorithm SHA256).Hash.ToLowerInvariant() if ($Expected -ne $Actual) { throw "Checksum verification failed" } Expand-Archive -Path (Join-Path $Temp $Artifact) -DestinationPath $Temp -Force $InstallDir = if ($env:X4RGE_CLI_INSTALL_DIR) { $env:X4RGE_CLI_INSTALL_DIR } else { Join-Path $env:LOCALAPPDATA "Programs\4RGED\bin" } New-Item -ItemType Directory -Path $InstallDir -Force | Out-Null Copy-Item (Join-Path $Temp "4rged.exe") (Join-Path $InstallDir "4rged.exe") -Force Write-Host "4RGED installed at $InstallDir\4rged.exe" Write-Host "Run: 4rged login" Write-Host "Then: 4rged" } finally { Remove-Item -Recurse -Force $Temp -ErrorAction SilentlyContinue }