| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <#
- .SYNOPSIS
- Installs or updates Visual Studio on a local developer machine.
- .DESCRIPTION
- This installs Visual Studio along with all the workloads required to contribute to this repository.
- .PARAMETER InstallPath
- The location of Visual Studio
- .PARAMETER Passive
- Run the installer without requiring interaction.
- .LINK
- https://visualstudio.com
- https://github.com/aspnet/AspNetCore/blob/master/docs/BuildFromSource.md
- .EXAMPLE
- To install VS 2019 Preview, run this command in PowerShell:
- .\InstallVisualStudio.ps1
- #>
- [CmdletBinding(DefaultParameterSetName = 'Default')]
- param(
- # TODO - once VS 2019 16.0 RTM is released, make this a parameter again
- # .PARAMETER Edition
- # Must be one of these values:
- # Community
- # Professional
- # Enterprise
- # Selects which 'offering' of Visual Studio to install.
- # [ValidateSet('Community', 'Professional', 'Enterprise')]
- # [string]$Edition,
- [string]$InstallPath,
- [switch]$Passive
- )
- # VS previews are only available publicly as 'Enterprise' versions. They should be available to the community to use without a paid license.
- $Edition = 'Enterprise'
- if (-not $Edition) {
- Write-Host "You must specify a value for the -Edition parameter which selects the kind of Visual Studio to install." -f Red
- Write-Host "Run ``Get-Help $PSCommandPath`` for more details." -f Red
- Write-Host ""
- Write-Host "Example: ./InstallVisualStudio -Edition Community" -f Red
- Write-Host ""
- exit 1
- }
- $ErrorActionPreference = 'Stop'
- Set-StrictMode -Version 1
- $intermedateDir = "$PSScriptRoot\obj"
- mkdir $intermedateDir -ErrorAction Ignore | Out-Null
- $bootstrapper = "$intermedateDir\vsinstaller.exe"
- $ProgressPreference = 'SilentlyContinue' # Workaround PowerShell/PowerShell#2138
- Invoke-WebRequest -Uri "https://aka.ms/vs/16/pre/vs_$($Edition.ToLowerInvariant()).exe" -OutFile $bootstrapper
- if (-not $InstallPath) {
- # $InstallPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\$Edition"
- $InstallPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Preview"
- }
- # no backslashes - this breaks the installer
- $InstallPath = $InstallPath.TrimEnd('\')
- [string[]] $arguments = @()
- if (Test-path $InstallPath) {
- $arguments += 'modify'
- }
- $arguments += `
- '--productId', "Microsoft.VisualStudio.Product.$Edition", `
- '--installPath', "`"$InstallPath`"", `
- '--in', "$PSScriptRoot\vs.json", `
- '--norestart'
- if ($Passive) {
- $arguments += '--passive'
- }
- Write-Host ""
- Write-Host "Installing Visual Studio 2019 $Edition" -f Magenta
- Write-Host ""
- Write-Host "Running '$bootstrapper $arguments'"
- & $bootstrapper @arguments
|