param([string]$Server='https://mcp.penrouz.com') $ErrorActionPreference='Stop' if (-not $Server.StartsWith('https://')) { throw 'The download server must use HTTPS.' } if (-not [Environment]::Is64BitOperatingSystem) { throw 'MCPENROUZ requires 64-bit Windows 10 or later.' } $Architecture = if ($env:PROCESSOR_ARCHITEW6432) { $env:PROCESSOR_ARCHITEW6432 } else { $env:PROCESSOR_ARCHITECTURE } if ($Architecture -eq 'ARM64') { $File='MCPENROUZ-0.5.18-r1-windows-arm64.exe'; $Route='/downloads/releases/0.5.18/MCPENROUZ-0.5.18-r1-windows-arm64.exe'; $Expected='432b946309cead5b548ca78c1dc203086312f7a2d963014a505c8339a29e71ad' } else { $File='MCPENROUZ-0.5.18-r1-windows-x64.exe'; $Route='/downloads/releases/0.5.18/MCPENROUZ-0.5.18-r1-windows-x64.exe'; $Expected='7971fb880e9136359649926df80217f5ae45ba9fd98f868ad3d896248d85ca7f' } $TaskDir=Join-Path $env:TEMP ('mcpenrouz-download-'+[guid]::NewGuid().ToString()) New-Item -ItemType Directory -Path $TaskDir | Out-Null try { $Target=Join-Path $TaskDir $File Invoke-WebRequest -UseBasicParsing -Uri ($Server.TrimEnd('/')+$Route) -OutFile $Target if ((Get-FileHash -Algorithm SHA256 $Target).Hash.ToLowerInvariant() -ne $Expected) { throw 'Installer checksum verification failed.' } $Process=Start-Process -FilePath $Target -PassThru $Process.WaitForExit() if ($Process.ExitCode -ne 0) { throw 'MCPENROUZ installation did not complete.' } } finally { Remove-Item -Recurse -Force $TaskDir -ErrorAction SilentlyContinue }