Skip to content

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

Merged
merged 6 commits into from
Dec 28, 2017
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 32 additions & 6 deletions scripts/Install-VSCode.ps1
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

Expand All @@ -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.
#>

Expand All @@ -44,6 +47,10 @@

https://github.com/PowerShell/vscode-powershell/blob/develop/scripts/Install-VSCode.ps1

.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
Expand All @@ -67,6 +74,12 @@
Installs Visual Studio Code, the PowerShell extension, and additional
extensions.

.EXAMPLE
Install-VSCode.ps1 -BuildEdition Insider -LaunchWhenDone

Installs Visual Studio Code Insiders Edition and then launches the editor
after installation completes.

.NOTES
This script is licensed under the MIT License:

Expand All @@ -92,6 +105,10 @@
#>
[CmdletBinding()]
param(
[parameter()]
[ValidateSet("stable","insider")]
[string]$BuildEdition = "stable",
Copy link
Contributor

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).

Copy link
Contributor Author

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


[Parameter()]
[ValidateNotNull()]
[string[]]$AdditionalExtensions = @(),
Expand All @@ -100,19 +117,28 @@ param(
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if you added an Architecture parameter that defaults to 64bit but also allows a 32bit value. Then you could test the specific install path (either under Program Files or Program Files (x86) and download the specified bit-version to install.

Copy link
Contributor Author

@tabs-not-spaces tabs-not-spaces Dec 28, 2017

Choose a reason for hiding this comment

The 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)) {
switch ($BuildEdition) {
"Stable" {
$codeCmdPath = "C:\Program*\Microsoft VS Code\bin\code.cmd"
break;
}
"Insider" {
$codeCmdPath = "C:\Program*\Microsoft VS Code Insiders\bin\code-insiders.cmd"
break;
}
}

$codeCmdPath = "C:\Program Files (x86)\Microsoft VS Code\bin\code.cmd"

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 $($BuildEdition) Visual Studio Code..." -ForegroundColor Yellow
Remove-Item -Force "$env:TEMP\vscode-$($BuildEdition).exe" -ErrorAction SilentlyContinue
Invoke-WebRequest -Uri "https://vscode-update.azurewebsites.net/latest/win32-x64/$($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
Start-Process -Wait "$env:TEMP\vscode-$($BuildEdition).exe" -ArgumentList /silent, /mergetasks=!runcode
}
else {
Write-Host "`nVisual Studio Code is already installed." -ForegroundColor Yellow
Expand Down