Windows Terminal on Windows Server
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 https://aka.ms/terminal 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:
- Navigate to https://github.com/microsoft/terminal/releases and download the latest .msixbundle [do NOT click on it]
- Rename the downloaded file to .zip
- Extract the “CascadiaPackage_XXXX_x64.msix” and rename that .msix file to .zip
- Extract the contents of that package
- Run ‘WindowsTerminal.exe’
- 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 "https://github.com/microsoft/terminal/releases" -UseBasicParsing
$LatestBundle = "https://github.com$(($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 {$_.name -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