Public Access
The 1MB size-check catches a bad download but gave no way to see why - on a locked-down network something is very likely substituting a small HTML page (proxy/AV block page) for the real zip. Print the first lines of whatever was actually saved so the content is visible without another round trip.
52 lines
2.3 KiB
PowerShell
52 lines
2.3 KiB
PowerShell
# Downloads and unpacks the WinSCP automation package engine.ps1 needs.
|
|
# Called by setup.bat. Safe to re-run.
|
|
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
|
|
$url = "https://winscp.net/download/WinSCP-6.3.6-Automation.zip"
|
|
$zip = Join-Path $env:TEMP "winscp.zip"
|
|
$dest = Join-Path $PSScriptRoot "WinSCP"
|
|
|
|
if (Test-Path $zip) { Remove-Item $zip -Force }
|
|
|
|
Write-Host "Downloading WinSCP from $url ..."
|
|
try {
|
|
Invoke-WebRequest -Uri $url -OutFile $zip -UseBasicParsing
|
|
} catch {
|
|
Write-Host "ERROR: Download failed - $($_.Exception.Message)" -ForegroundColor Red
|
|
Write-Host "Check your internet connection, or ask IT if winscp.net / sourceforge.net are blocked." -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
|
|
$fileInfo = Get-Item $zip
|
|
if ($fileInfo.Length -lt 1MB) {
|
|
Write-Host "ERROR: Downloaded file is only $($fileInfo.Length) bytes - too small to be WinSCP." -ForegroundColor Red
|
|
Write-Host "This usually means antivirus, a firewall, or a web filter intercepted the download and replaced it with a block/warning page instead of letting the real file through." -ForegroundColor Yellow
|
|
|
|
$preview = Get-Content -Path $zip -TotalCount 15 -ErrorAction SilentlyContinue
|
|
if ($preview) {
|
|
Write-Host ""
|
|
Write-Host "--- What was actually downloaded (first 15 lines, for troubleshooting) ---" -ForegroundColor Yellow
|
|
$preview | ForEach-Object { Write-Host $_ }
|
|
Write-Host "--- end ---" -ForegroundColor Yellow
|
|
Write-Host ""
|
|
}
|
|
|
|
Write-Host "Try running setup.bat again. If it keeps happening, ask IT whether winscp.net / sourceforge.net downloads are being blocked, or download WinSCP-6.3.6-Automation.zip manually in a browser and unzip it into:" -ForegroundColor Yellow
|
|
Write-Host " $dest" -ForegroundColor Yellow
|
|
Remove-Item $zip -Force
|
|
exit 1
|
|
}
|
|
|
|
try {
|
|
Expand-Archive -Path $zip -DestinationPath $dest -Force
|
|
} catch {
|
|
Write-Host "ERROR: Could not unzip the download - $($_.Exception.Message)" -ForegroundColor Red
|
|
Write-Host "The downloaded file was likely corrupted or cut short in transit. Try running setup.bat again." -ForegroundColor Yellow
|
|
Write-Host "Left the bad file at $zip in case you want to look at it." -ForegroundColor Yellow
|
|
exit 1
|
|
}
|
|
|
|
Remove-Item $zip -Force
|
|
Write-Host "WinSCP ready." -ForegroundColor Green
|