aboutsummaryrefslogtreecommitdiff
path: root/scripts/findVisualStudioInstallationInstances.ps1
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/findVisualStudioInstallationInstances.ps1')
-rw-r--r--scripts/findVisualStudioInstallationInstances.ps133
1 files changed, 33 insertions, 0 deletions
diff --git a/scripts/findVisualStudioInstallationInstances.ps1 b/scripts/findVisualStudioInstallationInstances.ps1
new file mode 100644
index 000000000..0f685c6a9
--- /dev/null
+++ b/scripts/findVisualStudioInstallationInstances.ps1
@@ -0,0 +1,33 @@
+[CmdletBinding()]
+param(
+
+)
+
+$scriptsDir = split-path -parent $MyInvocation.MyCommand.Definition
+$vcpkgRootDir = & $scriptsDir\findFileRecursivelyUp.ps1 $scriptsDir .vcpkg-root
+
+$downloadsDir = "$vcpkgRootDir\downloads"
+
+$nugetexe = & $scriptsDir\fetchDependency.ps1 "nuget" 1
+$nugetPackageDir = "$downloadsDir\nuget-packages"
+
+$SetupAPIVersion = "1.8.24"
+$nugetOutput = & $nugetexe install Microsoft.VisualStudio.Setup.Configuration.Native -Version $SetupAPIVersion -OutputDirectory $nugetPackageDir -Source "https://api.nuget.org/v3/index.json" -nocache 2>&1
+
+$SetupConsoleExe = "$nugetPackageDir\Microsoft.VisualStudio.Setup.Configuration.Native.$SetupAPIVersion\tools\x86\Microsoft.VisualStudio.Setup.Configuration.Console.exe"
+
+if (!(Test-Path $SetupConsoleExe))
+{
+ throw $nugetOutput
+}
+
+$instances = & $SetupConsoleExe -nologo -value InstallationPath 2>&1
+$instanceCount = $instances.Length
+
+# The last item can be empty
+if ($instanceCount -gt 0 -and $instances[$instanceCount - 1] -eq "")
+{
+ $instances = $instances[0..($instanceCount - 2)]
+}
+
+return $instances