Since most servers either don’t have a Windows Store, or no access to a Windows Store, it was a bit silly from MSFT to release Windows Terminal ONLY to be installed via Windows Store.

If you DO have access to te Windows Store, you can just go to and install it.

However if you want to Windows Terminal on a Server (and let’s be honest, that’s a much more likely use case?) you can do this:

  1. Navigate to and download the latest .msixbundle [do NOT click on it]
  2. Rename the downloaded file to .zip
  3. Extract the “CascadiaPackage_XXXX_x64.msix” and rename that .msix file to .zip
  4. Extract the contents of that package
  5. Run ‘WindowsTerminal.exe’
  6. Get come coffee :¬)

The downside of the method is you have to manually check and re-do this everytime there is a new version.

This is a dirty way of doing it automagically

$webData          = invoke-webrequest "" -UseBasicParsing
$LatestBundle     = "$(($web.links.href -match "msixbundle")[1])"
$downloadLocation = "C:\temp\WindowsTerminal"
$releaseName      = ($LatestBundle -split "/")[-1]
$fileDownload     = "$downloadLocation\$releaseName"

if(-not(test-path $downloadLocation)){new-item $downloadLocation -ItemType Directory -Force}
(New-Object Net.WebClient).DownloadFile($LatestBundle,$fileDownload)
$reName = Rename-Item $fileDownload -NewName ($fileDownload -replace "msixbundle","zip") -PassThru
Expand-Archive $reName.FullName -DestinationPath "$downloadLocation" 
Get-Childitem $downloadLocation | Where-Object {$ -notlike "*x64*"} | Remove-Item -Recurse -Force
$newName = Get-ChildItem $downloadLocation | foreach{ Rename-Item $_.fullname -NewName ($_ -replace "msix","zip") -PassThru}
Expand-Archive $newName.FullName -DestinationPath $downloadLocation