2017-02-24 235 views
3

我有一個powershell腳本,查看VS安裝列表,並確定安裝的最高版本。然後它使用該版本的InstallDir,並使用它來訪問各種命令。確定2017年安裝的Visual Studio路徑

它仍然使用較低的版本,但是。

從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位置)的最佳方法是什麼?

回答

7

從我所看到的,使用的SxS \ VS7選項:

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

它應該給你的根路徑到Visual Studio:

enter image description here

這應該讓你去。

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

值得指出的是,VS2017允許多個安裝相同的版本(例如,您可以將Community,Pro和Enterprise全部安裝到不同的路徑),並且我不確定哪個人能夠在此獲得註冊表值案件。 – Jimmy

+1

這種方法是完全正確的,這個註冊表項只列出對應於VS2017第一種安裝類型的條目。假設你先安裝社區版,然後安裝企業。註冊表項將在您首先安裝時繼續指向社區版路徑。現在,如果你甚至卸載社區版本,註冊表入口還是應該社區版本。 –

+0

有關如何在PowerShell中提取'15.0'值的信息,請參見[answer](https://stackoverflow.com/a/43912590/285795)。 – OmegaMan

2

由於您使用PowerShell中,檢查出https://github.com/microsoft/vssetup.powershell,這是用於檢測VS2017 +的安裝一個PS模塊:

tf.exe位置然後使用下一個符號鏈接存儲。

否則,您可能需要依靠Nuget package這是檢測VS的支持手段。

另請參見this answer上的相關問題,該問題早於上面列出的PS模塊,但包含一些用於查找VS的不受支持的方法。

相關問題