确定2017年安装的Visual Studio路径

时间:2017-02-24 09:56:43

标签: powershell tfs registry visual-studio-2017

我有一个PowerShell脚本,用于查看VS安装列表,并确定安装的最高版本。然后它使用该版本的InstallDir,并使用它来访问各种命令。

然而仍使用较低版本。

从VS2017开始,注册表项似乎是no longer saved in the same way。我需要更新脚本才能找出2017设置。

#Add New Versions to this list when new versions of VS are released
$VsVersionsToDisable = "10.0", "11.0", "12.0", "14.0"

[System.Collections.ArrayList]$VsVersions = $VsVersionsToDisable

#Find the Highest installed VS Version, and use it for the TFS.exe Command.
foreach ($version in $VsVersions | Sort-Object -Descending)
{
    $keyPath = "HKCU:\Software\Microsoft\VisualStudio\$version`_Config"
    If (Test-Path $keyPath)
    {
        $aliasPath = Get-ItemProperty -Path $keyPath | Select-Object `
                            -ExpandProperty InstallDir
        $proxyPath = Join-Path $aliasPath "tf.exe"
        set-alias proxyTF $proxyPath
    }
}

避免XY问题:我们使用此脚本为用户配置TFS代理设置。它确定安装的最高版本,使用它来查找代理,然后迭代通过配置其代理设置的较低版本使用相同的值。

确定VS2017的安装目录(以及tf.exe位置)的最佳方法是什么?

3 个答案:

答案 0 :(得分:8)

从我所看到的,使用SxS \ VS7选项:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7

它应该为您提供Visual Studio的根路径:

enter image description here

这应该让你去。

然后使用符号链接存储tf.exe位置:

.\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe

答案 1 :(得分:2)

由于您使用的是PowerShell,请查看https://github.com/microsoft/vssetup.powershell,它是用于检测VS2017 +安装的PS模块。

否则,您可能需要依赖Nuget package这是检测VS的支持方式。

另请参阅this answer相关问题,该问题早于上面列出的PS模块,但包含一些不受支持的查找VS的方法。

答案 2 :(得分:0)

我确实以此为参考,并以另一种方式提出了解决方案。 我不确定它相对于其他版本的适应性如何,但是它为我带来了成功。它得到了devenv的目录,然后我在TFS的最后添加了额外的内容。显然,如果结构不同,那么我们就被搞砸了。 希望对您有所帮助。

    $regKey = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\devenv.exe"
    $visualStudioDir = Get-ItemPropertyValue -Path $regKey -Name "(Default)"
    $visualStudioDir = ($visualStudioDir.Replace("devenv.exe","")).replace("`"","")
    $tfsPath = 'CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe'
    Set-Alias tf $visualStudioDir$tfsPath
    tf workspaces