From 4de2ef7d8d2b460b23febe18f244f33121d45f04 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 1 Mar 2024 00:01:00 +0100 Subject: [PATCH] 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). --- dist/setup/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dist/setup/index.js b/dist/setup/index.js index dddc7ec..e176c27 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -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',