diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2018-05-19 17:54:12 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2018-05-19 19:23:32 -0700 |
| commit | 555fa8d7cc25f409fea9626383dfc38c5d5db6b4 (patch) | |
| tree | 2ab55a2880cbc035f1d5f0499abbff4e10f71f1f /scripts/bootstrap.ps1 | |
| parent | 9e4196d49524d41959e84f27b4080a0ec2cb37e6 (diff) | |
| download | vcpkg-555fa8d7cc25f409fea9626383dfc38c5d5db6b4.tar.gz vcpkg-555fa8d7cc25f409fea9626383dfc38c5d5db6b4.zip | |
Merge getVisualStudioInstances into bootstrap.ps1
Diffstat (limited to 'scripts/bootstrap.ps1')
| -rw-r--r-- | scripts/bootstrap.ps1 | 72 |
1 files changed, 71 insertions, 1 deletions
diff --git a/scripts/bootstrap.ps1 b/scripts/bootstrap.ps1 index 970fa0488..a2d9103dd 100644 --- a/scripts/bootstrap.ps1 +++ b/scripts/bootstrap.ps1 @@ -26,9 +26,79 @@ if (!(Test-Path $vcpkgSourcesPath)) return } +function getVisualStudioInstances() +{ + $programFiles = getProgramFiles32bit + $results = New-Object System.Collections.ArrayList + $vswhereExe = "$programFiles\Microsoft Visual Studio\Installer\vswhere.exe" + if (Test-Path $vswhereExe) + { + $output = & $vswhereExe -prerelease -legacy -products * -format xml + [xml]$asXml = $output + + foreach ($instance in $asXml.instances.instance) + { + $installationPath = $instance.InstallationPath -replace "\\$" # Remove potential trailing backslash + $installationVersion = $instance.InstallationVersion + + $isPrerelease = -7 + if (vcpkgHasProperty -object $instance -propertyName "isPrerelease") + { + $isPrerelease = $instance.isPrerelease + } + + if ($isPrerelease -eq 0) + { + $releaseType = "PreferenceWeight3::StableRelease" + } + elseif ($isPrerelease -eq 1) + { + $releaseType = "PreferenceWeight2::PreRelease" + } + else + { + $releaseType = "PreferenceWeight1::Legacy" + } + + # Placed like that for easy sorting according to preference + $results.Add("<sol>::${releaseType}::${installationVersion}::${installationPath}::<eol>") > $null + } + } + else + { + Write-Verbose "Could not locate vswhere at $vswhereExe" + } + + if ("$env:vs140comntools" -ne "") + { + $installationPath = Split-Path -Parent $(Split-Path -Parent "$env:vs140comntools") + $clExe = "$installationPath\VC\bin\cl.exe" + $vcvarsallbat = "$installationPath\VC\vcvarsall.bat" + + if ((Test-Path $clExe) -And (Test-Path $vcvarsallbat)) + { + $results.Add("<sol>::PreferenceWeight1::Legacy::14.0::$installationPath::<eol>") > $null + } + } + + $installationPath = "$programFiles\Microsoft Visual Studio 14.0" + $clExe = "$installationPath\VC\bin\cl.exe" + $vcvarsallbat = "$installationPath\VC\vcvarsall.bat" + + if ((Test-Path $clExe) -And (Test-Path $vcvarsallbat)) + { + $results.Add("<sol>::PreferenceWeight1::Legacy::14.0::$installationPath::<eol>") > $null + } + + $results.Sort() + $results.Reverse() + + return $results +} + function findAnyMSBuildWithCppPlatformToolset([string]$withVSPath) { - $VisualStudioInstances = & $scriptsDir\getVisualStudioInstances.ps1 + $VisualStudioInstances = getVisualStudioInstances if ($VisualStudioInstances -eq $null) { throw "Could not find Visual Studio. VS2015 or VS2017 (with C++) needs to be installed." |
