Skip to content

Instantly share code, notes, and snippets.

@MarkTiedemann
Last active September 11, 2024 06:01
Show Gist options
  • Save MarkTiedemann/c0adc1701f3f5c215fc2c2d5b1d5efd3 to your computer and use it in GitHub Desktop.
Save MarkTiedemann/c0adc1701f3f5c215fc2c2d5b1d5efd3 to your computer and use it in GitHub Desktop.
Download latest GitHub release via Powershell
# Download latest dotnet/codeformatter release from github
$repo = "dotnet/codeformatter"
$file = "CodeFormatter.zip"
$releases = "https://api.github.com/repos/$repo/releases"
Write-Host Determining latest release
$tag = (Invoke-WebRequest $releases | ConvertFrom-Json)[0].tag_name
$download = "https://github.com/$repo/releases/download/$tag/$file"
$name = $file.Split(".")[0]
$zip = "$name-$tag.zip"
$dir = "$name-$tag"
Write-Host Dowloading latest release
Invoke-WebRequest $download -Out $zip
Write-Host Extracting release files
Expand-Archive $zip -Force
# Cleaning up target dir
Remove-Item $name -Recurse -Force -ErrorAction SilentlyContinue
# Moving from temp dir to target dir
Move-Item $dir\$name -Destination $name -Force
# Removing temp files
Remove-Item $zip -Force
Remove-Item $dir -Recurse -Force
@gabriel-vanca
Copy link

@andyneff You are right. curl.exe -LO https://github.com/%repo%/releases/latest/download/%file% should be the preferred way for downloading the latest release these days (curl is available by default on Windows and it's faster than PowerShell's Invoke-WebRequest, so I'd recommend using it instead).

Invoke-WebRequest is fine to be used with PowerShell Core. In older versions you have to use it with $progressPreference = 'silentlyContinue' , otherwise it will be very slow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment