-
Notifications
You must be signed in to change notification settings - Fork 511
added 64bit support & vscode-insiders install support #1137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
dfca251
0efcc33
ffa97ff
7c79005
91b9c5f
ff50f74
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
<#PSScriptInfo | ||
|
||
.VERSION 1.0 | ||
.VERSION 1.1 | ||
|
||
.GUID 539e5585-7a02-4dd6-b9a6-5dd288d0a5d0 | ||
|
||
|
@@ -25,6 +25,9 @@ | |
.EXTERNALSCRIPTDEPENDENCIES | ||
|
||
.RELEASENOTES | ||
28/12/2017 - added functionality to support 64-bit versions of VSCode | ||
& support for installation of VSCode Insiders Edition. | ||
-- | ||
Initial release. | ||
#> | ||
|
||
|
@@ -44,6 +47,15 @@ | |
|
||
https://github.com/PowerShell/vscode-powershell/blob/develop/scripts/Install-VSCode.ps1 | ||
|
||
.PARAMETER Architecture | ||
A validated string defining the bit version to download. Values can be either 64-bit or 32-bit. | ||
If 64-bit is chosen and the OS Architecture does not match, then the 32-bit build will be | ||
downloaded instead. If parameter is not used, then 64-bit is used as default. | ||
|
||
.PARAMETER BuildEdition | ||
A validated string defining which build edition or "stream" to download - stable or | ||
insiders edition. If the parameter is not used, then stable is downloaded as default. | ||
|
||
.PARAMETER AdditionalExtensions | ||
An array of strings that are the fully-qualified names of extensions to be | ||
installed in addition to the PowerShell extension. The fully qualified | ||
|
@@ -55,18 +67,28 @@ | |
When present, causes Visual Studio Code to be launched as soon as installation | ||
has finished. | ||
|
||
.EXAMPLE | ||
Install-VSCode.ps1 -Architecture 32-bit | ||
|
||
Installs Visual Studio Code (32-bit) and the powershell extension. | ||
.EXAMPLE | ||
Install-VSCode.ps1 -LaunchWhenDone | ||
|
||
Installs Visual Studio Code and the PowerShell extension and then launches | ||
Installs Visual Studio Code (64-bit) and the PowerShell extension and then launches | ||
the editor after installation completes. | ||
|
||
.EXAMPLE | ||
Install-VSCode.ps1 -AdditionalExtensions 'eamodio.gitlens', 'vscodevim.vim' | ||
|
||
Installs Visual Studio Code, the PowerShell extension, and additional | ||
Installs Visual Studio Code (64-bit), the PowerShell extension, and additional | ||
extensions. | ||
|
||
.EXAMPLE | ||
Install-VSCode.ps1 -BuildEdition Insider -LaunchWhenDone | ||
|
||
Installs Visual Studio Code Insiders Edition (64-bit) and then launches the editor | ||
after installation completes. | ||
|
||
.NOTES | ||
This script is licensed under the MIT License: | ||
|
||
|
@@ -92,6 +114,14 @@ | |
#> | ||
[CmdletBinding()] | ||
param( | ||
[parameter()] | ||
[ValidateSet(,"64-bit","32-bit")] | ||
[string]$Architecture = "64-bit", | ||
|
||
[parameter()] | ||
[ValidateSet("stable","insider")] | ||
[string]$BuildEdition = "stable", | ||
|
||
[Parameter()] | ||
[ValidateNotNull()] | ||
[string[]]$AdditionalExtensions = @(), | ||
|
@@ -100,22 +130,50 @@ param( | |
) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What if you added an There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yep - easy inclusion. I'll add it now. Another option would be to simply install based on a OSArchitecture check - but if the goal is to allow custom installs, then I suppose it's better to give the end user the option to chose arch? |
||
|
||
if (!($IsLinux -or $IsOSX)) { | ||
|
||
$codeCmdPath = "C:\Program Files (x86)\Microsoft VS Code\bin\code.cmd" | ||
|
||
switch ($Architecture) { | ||
"64-bit" { | ||
if ((Get-CimInstance -ClassName Win32_OperatingSystem).OSArchitecture -eq "64-bit") { | ||
$codePath = $env:ProgramFiles | ||
$bitVersion = "win32-x64" | ||
} | ||
else { | ||
$codePath = ${env:ProgramFiles(x86)} | ||
$bitVersion = "win32" | ||
$Architecture = "32-bit" | ||
} | ||
break; | ||
} | ||
"32-bit" { | ||
$codePath = ${env:ProgramFiles(x86)} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oops, missed this ... sorry. I'm pretty sure on a 32-bit OS you'd use just ${env:ProgramFiles}. ${env:ProgramFiles(x86)} is unique to the 64-bit version of Windows. See https://en.wikipedia.org/wiki/Environment_variable#Windows There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oh yes. of course. I'll add in the idiot proofing for 32-bit on 64-bit now. |
||
$bitVersion = "win32" | ||
break; | ||
} | ||
} | ||
switch ($BuildEdition) { | ||
"Stable" { | ||
$codeCmdPath = "$codePath\Microsoft VS Code\bin\code.cmd" | ||
$appName = "Visual Studio Code ($($Architecture))" | ||
break; | ||
} | ||
"Insider" { | ||
$codeCmdPath = "$codePath\Microsoft VS Code Insiders\bin\code-insiders.cmd" | ||
$appName = "Visual Studio Code - Insiders Edition ($($Architecture))" | ||
break; | ||
} | ||
} | ||
try { | ||
$ProgressPreference = 'SilentlyContinue' | ||
|
||
if (!(Test-Path $codeCmdPath)) { | ||
Write-Host "`nDownloading latest stable Visual Studio Code..." -ForegroundColor Yellow | ||
Remove-Item -Force $env:TEMP\vscode-stable.exe -ErrorAction SilentlyContinue | ||
Invoke-WebRequest -Uri https://vscode-update.azurewebsites.net/latest/win32/stable -OutFile $env:TEMP\vscode-stable.exe | ||
Write-Host "`nDownloading latest $appName..." -ForegroundColor Yellow | ||
Remove-Item -Force "$env:TEMP\vscode-$($BuildEdition).exe" -ErrorAction SilentlyContinue | ||
Invoke-WebRequest -Uri "https://vscode-update.azurewebsites.net/latest/$($bitVersion)/$($BuildEdition)" -OutFile "$env:TEMP\vscode-$($BuildEdition).exe" | ||
|
||
Write-Host "`nInstalling Visual Studio Code..." -ForegroundColor Yellow | ||
Start-Process -Wait $env:TEMP\vscode-stable.exe -ArgumentList /silent, /mergetasks=!runcode | ||
Write-Host "`nInstalling $appName..." -ForegroundColor Yellow | ||
Start-Process -Wait "$env:TEMP\vscode-$($BuildEdition).exe" -ArgumentList /silent, /mergetasks=!runcode | ||
} | ||
else { | ||
Write-Host "`nVisual Studio Code is already installed." -ForegroundColor Yellow | ||
Write-Host "`n$appName is already installed." -ForegroundColor Yellow | ||
} | ||
|
||
$extensions = @("ms-vscode.PowerShell") + $AdditionalExtensions | ||
|
@@ -125,7 +183,7 @@ if (!($IsLinux -or $IsOSX)) { | |
} | ||
|
||
if ($LaunchWhenDone) { | ||
Write-Host "`nInstallation complete, starting Visual Studio Code...`n`n" -ForegroundColor Green | ||
Write-Host "`nInstallation complete, starting $appName...`n`n" -ForegroundColor Green | ||
& $codeCmdPath | ||
} | ||
else { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please separate each parameter with a blank line - ditto between lines 113 and 114 - for consistency (see Start-EditorServices.ps1).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes made as per comment