From 99b67a8f3f860d22c6285259c6d96e13cfd25ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Petter=20Sk=C3=A5lerud?= Date: Tue, 24 Feb 2026 21:20:20 +0100 Subject: [PATCH] Windows, OpenSSH: Include .zip file extension when downloading This script currently downloads the .zip file from the web into a local file with no file extension. This can cause issues for 7-zip when unarchiving. This patch fixes this. As a drive-by, we improve the names of some variables. Pick-to: 6.11 6.8 Change-Id: Icb1b24646b54d75d825764d30a268fa6e55d0183 Reviewed-by: Artem Dyomin --- .../common/windows/install-openssh.ps1 | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/coin/provisioning/common/windows/install-openssh.ps1 b/coin/provisioning/common/windows/install-openssh.ps1 index 1f746b14..4380cf02 100644 --- a/coin/provisioning/common/windows/install-openssh.ps1 +++ b/coin/provisioning/common/windows/install-openssh.ps1 @@ -10,17 +10,17 @@ $temp = "$env:tmp" $cpu_arch = Get-CpuArchitecture switch ($cpu_arch) { arm64 { - $zipPackage = "OpenSSH-ARM64" + $base_file_name = "OpenSSH-ARM64" $sha1 = "ca3e8f44a550b7ae71c8e122acd4ed905d66feb0" Break } x64 { - $zipPackage = "OpenSSH-Win64" + $base_file_name = "OpenSSH-Win64" $sha1 = "1397d40d789ae0911b3cc818b9dcd9321fed529b" Break } x86 { - $zipPackage = "OpenSSH-Win32" + $base_file_name = "OpenSSH-Win32" $sha1 = "4642C62F72C108C411E27CE282A863791B63329B" Break } @@ -29,20 +29,27 @@ switch ($cpu_arch) { } } -Write-Host "Fetching $zipPackage $version..." -$url_cache = "http://ci-files01-hki.ci.qt.io/input/windows/openssh/" + $version + "/" + $zipPackage + ".zip" -$url_official = "https://github.com/PowerShell/Win32-OpenSSH/releases/download/" + $version + "/" + $zipPackage + ".zip" -Download $url_official $url_cache "$temp\$zipPackage" -Verify-Checksum "$temp\$zipPackage" $sha1 +Write-Host "Fetching $base_file_name $version..." +$url_cache = "http://ci-files01-hki.ci.qt.io/input/windows/openssh/$version/$base_file_name.zip" +$url_official = "https://github.com/PowerShell/Win32-OpenSSH/releases/download/$version/$base_file_name.zip" +$output_zip_file = "$temp\$base_file_name.zip" +Download $url_official $url_cache $output_zip_file +Verify-Checksum $output_zip_file $sha1 Write-Host "Extracting the package" -Extract-7Zip "$temp\$zipPackage" C:\"Program Files" +Extract-7Zip $output_zip_file "C:\Program Files" +# We assume the incoming zip contains exactly one directory, named the same +# as the base file name of th zip. +$output_dir = "C:\Program Files\$base_file_name" +if (-not (Test-Path $output_dir -PathType Container)) { + throw "Error. Expected output directory '$output_dir' does not exist." +} -Write-Host "Installing $zipPackage $version..." -$path = "C:\Program Files\" + $zipPackage + "\install-sshd.ps1" +Write-Host "Installing $base_file_name $version..." +$install_script = "$output_dir\install-sshd.ps1" # Installation done as shown at https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH -powershell.exe -ExecutionPolicy Bypass -File $path +powershell.exe -ExecutionPolicy Bypass -File $install_script netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22 net start sshd Set-Service sshd -StartupType Automatic