FIX: Extract zip win

Related to https://github.com/actions/setup-python/issues/819

Changes consist in reordering extract utils to first attemps
ExtractToDirectory and then Expand-Archive. For some
reason the download CPython release was not correctly
handled by Expand-Archive. This could be happening if the
zip file was compressed using an unsupported
compression method (e.g. through `zip` with Unix/linux).
This commit is contained in:
Sebastien Morais 2024-03-01 00:01:00 +01:00
parent 871daa956c
commit 4de2ef7d8d

5
dist/setup/index.js vendored
View File

@ -9877,11 +9877,12 @@ function extractZipWin(file, dest) {
yield exec_1.exec(`"${pwshPath}"`, args);
}
else {
//attempt to use pwsh with ExtractToDirectory, if this fails attempt Expand-Archive
const powershellCommand = [
`$ErrorActionPreference = 'Stop' ;`,
`try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`,
`if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force }`,
`else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`
`try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`,
`catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force } else { throw $_ } } ;`
].join(' ');
const args = [
'-NoLogo',