如何更改Visual Studio 2012的安装目录?

38
我使用Windows Installer卸载了VS11,并删除了几乎所有与其相关的注册表键,但当我尝试重新安装它时,仍会出现以下情况:。 我无法点击“ ...”或编辑路径。右键单击也没有任何反应。我需要摧毁哪些东西才能更改安装目录? 在官方版本中仍然发生这种情况:
10个回答

50

我也遇到了同样的问题,但是它并没有强制我安装到"c:\program Files"目录,而是强制我安装到我用于Visual Studio RC的目录中。通过使用Process Monitor和安装程序的日志文件,我找到了需要删除的注册表键。

该键位于

HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-21-776561741-789336058-725345543-318838\Components\31F687BD8A467D54C830E018D99F7F3B

SID在其他系统上可能会有所不同,但您可能会找到最后一个字符串(31F687BD8A467D54C830E018D99F7F3B)。


要找到该键,我执行了以下操作:

  1. 从Sysinternals下载ProcessMonitor
  2. 使用筛选器启动Processmonitor

    图像路径以vs_premium.exe结尾

  3. 启动vs_premium.exe

  4. 关闭设置
  5. 等待Processmonitor不再获取任何事件
  6. 打开%TEMP%中的最新dd_vs_premium_.log文件
  7. 查找并找到了

    条件“VS_Install_path_KeyExists”计算为false。(我猜在受影响的系统上它将计算为true。我在干净的Windows安装上尝试过这个)

  8. 它的上一行说

    找不到注册表键。关键= 'SOFTWARE\Microsoft\VisualStudio\SxS\VS7'

  9. 在Processmonitor中搜索

    Microsoft\VisualStudio\SxS\VS7

  10. 向下滚动几行,ProcessMonitor会显示需要删除的键


2
最后一个键不存在...你是怎么找到它的?我这里有数百个。 - mpen
1
你的过程不是很清晰。我假设你指的是这个程序。如果第一个“筛选器”没有找到任何东西,为什么要提到它?你说的“搜索'Microsoft\VisualStudio\SxS\VS7'”是什么意思?怎么搜索的?用什么筛选器?需要“添加该项”吗? - mpen
1
我找到了你说的那把钥匙,Nick。我得问一下,你是怎么找到这把钥匙并且辨认出它的用途的??? - P.Brian.Mackey
2
我也试过了!我只是在注册表编辑器中使用Ctrl + F查找31F687BD8A467D54C830E018D99F7F3B并删除了这些键。 - Pedro77
3
Visual Studio Enterprise 2015 的组件 ID 是 CACBC777BA2175A47A35A4D7324B483D - Quolonel Questions
显示剩余8条评论

8

我有一个更简单的方法:

1 - 在命令行中使用 /uninstall /force 开关运行安装程序,例如:

c:\vs_professional_ENU.exe /uninstall /force

2 - 正常重新运行安装程序。

我在Windows 10下使用VS2015进行了此操作。参考链接:链接


6
我找到的唯一解决方案是在Windows 7上创建一个硬链接,将目录连接到您想要安装Visual Studio的位置。

例如,我的SSD驱动器不是我的引导驱动器,它的驱动器号为B:。

我运行以下命令:

mklink /J "C:\Program Files (x86)\Microsoft Visual Studio 11.0" "B:\Program Files (x86)\Microsoft Visual Studio 11.0"

对于安装程序和Windows来说,它认为已将其安装到C:驱动器上的Program Files x86目录中,但实际上它已经安装到了B:驱动器上的Program Files x86文件夹中。

这是有关在Windows Vista和7中创建联接链接的页面链接:http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/


2
警告:Visual Studio 2012 更新不理解这个。因此安装更新将删除链接并似乎破坏 Visual Studio。 - Tuomas Hietanen
你是正确的,@Tuomas。我必须将更新合并到正确的位置,然后重新创建目录链接。 - Josh DeLong
你所说的“破坏Visual Studio”具体指什么?你是指联接将被删除还是会损坏你的驱动器?如果只是更新无法安装,那我可以接受,但如果我突然发现8GB的Visual Studio变得毫无用处,而且没有明显的原因,我就必须远离硬链接,就像它们是放射性物质一样。 - Caston
@Caston - 答案在前两个评论中。连接点将被删除。因此,您将需要创建一个新的连接点。您真的应该放慢速度并阅读所有信息。 - Josh DeLong
Junction在MSVS 2022上不再起作用,它会导致Visual Studio内部出现奇怪的错误,例如:"The Global Hub Client Package didn’t load correctly." https://developercommunity.visualstudio.com/t/global-hub-client-package-failed-to-load-correctly/1461455 - AbbasAli Hashemian

4

我没有足够的声望来评论上面的帖子。虽然他在这些命令开关的语法方面是正确的,但是该程序存在错误,无法使用选择CustomInstallPath。实际上对我来说,它只决定在进程列表中打开大约50多个vs_ultimate.exe的迭代......

我会尝试如上所述的Hard Junction,因为我确信它会起作用。

顺便说一句,如果有人感兴趣,您可以使用允许您提前获取安装的开关运行vs_ultimate.exe /Layout X:\somefolder\

昨晚我做了那件事,希望我的安装能够快速进行,因为我拥有所有信息,但是我认为为了强制它使用离线版本,您必须运行vs_ultimate.exe /noweb。

此页面涉及所有开关:http://msdn.microsoft.com/en-us/library/e2h7fzkw(v=vs.110).aspx

上面的页面指出:/p CustomInstallPath“在您指定的目录中安装所有可重新定位包。”这可能意味着,在您的根驱动器上它可以安装所有可安装的内容,但很难确定,而且我的SSD上的空间有限。

在我尝试Hard Junction之前,我也可以尝试上面的方法,看看会发生什么,如果需要,然后卸载它。将发布结果


作为上述内容的后续,我可以确认设置CustomInstallPath参数没有任何作用。在阅读上面链接的文章后,我认为有可能会有一些安装文件会放到自定义目录中,但实际上并没有。我卸载了软件并成功地进行了连接。然而,由于许多公共文件被安装在Windows目录中,因此这只为我节省了大约2.78 GB的空间。 - Allan

3
尝试使用以下选项启动安装程序:

/p CustomInstallPath="[your_path]"

例如:

vs_ultimate.exe /p CustomInstallPath="C:\MyDirectory"

要查看所有选项,请使用开关 /?

当前安装程序版本似乎存在一个错误。希望他们能够修复它。 - miho

1

我之前安装了VS 2012测试控制器。卸载它后,我才能更改安装路径。


1
如何更改Visual Studio 2012安装目录? 我需要摧毁哪些内容才能更改安装目录?
答案:您可以更改实际目录,而无需“摧毁或更改”安装目录。这是一种替代性的“聪明思考,不费力气”的解决方案提议。
以下是您需要继续使用逻辑M:\ Program Files目录并解决存储文件的物理问题的具体材料细节。
它还为其他社区提供了更干净、更可重复安装、在使用Beta构建时减少工作量和风险的好处。因为它封装了Beta安装中的每个文件,所以风险更小。想从beta转到RC,没问题,只需不挂载beta驱动器,使用现成的注册表清理程序并每次重新安装到新驱动器即可。
该过程使用PGP磁盘,可以根据需要登录和注销/备份。
最初,似乎只需要创建两个驱动器。但事实并非如此。 - 驱动器#1 挂载为F:\,用于f:\ Program Files(x86)\ Microsoft Visual Studio 11.0 这是我告诉Visual Studio设置要安装文件的位置。它确实作为可挂载容器功能,可容纳2.7 GB的文件。
  • 第二个驱动器被挂载为"C:\Program Files (x86)\" "Microsoft Visual Studio 11.0"文件夹。
  • 挂载文件夹的目的是收集其余5.5 GB的文件。

我不得不将创建的33个文件夹移动到额外的PGP文件夹中。

以下是您可以在设置部署文件之前创建的文件夹的完整列表。

C:\Program Files\Microsoft SQL Server
C:\Program Files\Microsoft SQL Server Compact Edition
C:\Program Files\Application Verifier
C:\Program Files\MSBuild
C:\Program Files\Microsoft
C:\Program Files\IIS Express
C:\Program Files\IIS
C:\Program Files\Microsoft Visual Studio 11.0

C:\Program Files (x86)\IIS
C:\Program Files (x86)\IIS Express

C:\Program Files (x86)\Microsoft ASP.NET
C:\Program Files (x86)\Microsoft Help Viewer
C:\Program Files (x86)\Microsoft SDKs
C:\Program Files (x86)\Microsoft SQL Server
C:\Program Files (x86)\Microsoft SQL Server Compact Edition
C:\Program Files (x86)\Microsoft WCF Data Services
C:\Program Files (x86)\Microsoft Web Tools
C:\Program Files (x86)\MSBuild
C:\Program Files (x86)\NuGet
C:\Program Files (x86)\Windows Kits

C:\Program Files (x86)\Common Files\Merge Modules
C:\Program Files (x86)\Common Files\Microsoft
C:\Program Files (x86)\Common Files\microsoft shared\DevServer
C:\Program Files (x86)\Common Files\microsoft shared\MSDesigners8
C:\Program Files (x86)\Common Files\microsoft shared\MSEnv
C:\Program Files (x86)\Common Files\microsoft shared\MSI Tools
C:\Program Files (x86)\Common Files\microsoft shared\SQL Debugging
C:\Program Files (x86)\Common Files\microsoft shared\SQL Server Developer Tools
C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating
C:\Program Files (x86)\Common Files\microsoft shared\Visual Database Tools
C:\Program Files (x86)\Common Files\microsoft shared\VS7Debug
C:\Program Files (x86)\Common Files\microsoft shared\WF
C:\Program Files (x86)\Common Files\microsoft shared\Windows Simulator

这很完美,可以避免以下内容: - 补丁管理人员和补丁管理系统的无意监视、未监控、未审计,违反了良好的推广到生产环境的变更控制最佳实践的前提。

  • 开发人员的代码大多是凭借偶然性工作的,他们真的不知道最终产品中有什么。

  • 黑客利用构建环境。

可以使用True Crypt或PGP桌面。只是不要整个磁盘加密,必须能够挂载和卸载资源。

我欣赏硬链接方法,但除非您安全地弹出并关闭驱动器,否则它提供的流程兼容性很少,而且与安全的PGP卸载/挂载相比,既不安全也不可靠。开发人员会开启驱动器并进行更改。

关于备份和恢复的工作量,与硬链接驱动器相比,备份PGP驱动器需要的工作量相同。但具有所有所需文件夹(即作为其功能的一部分,为您记住)的较少数量的.PGD驱动器的价值在于无需记住哪些文件夹被链接,哪些可能需要恢复以还原dev环境。

考虑将其视为一种环境,用于强制性的非自主绝对可审计保证,以实现可重复安全构建的要求。为了达到这个核心目标,它必须仅在实际需要时才可用,并且在不需要时必须得到保护。

1

对于我来说,最终的Visual Studio 2012想要安装到与(未安装的)beta相同的路径中。我删除了HKLM中大部分与设置目录完全匹配(以\结尾,例如C:\VS11Beta\)的内容,然后安装程序让我重新选择。

可能不是OP的解决方案(M:\Program Files听起来太通用了,不能删除),但对于其他遇到此问题的人可能有帮助。


是的...我也尝试过同样的事情,然后疯狂删除键,但我从未找到正确的那一个。 - mpen

0

查看您安装的程序,看是否已经安装了 Visual Studio 实例,如果是,请删除它并重新运行设置。


0
对于那些仍在寻找解决方案的人,我从这个问题中尝试并学到的是,虽然“正常”(从控制面板)卸载不会删除所有VS签名。因此,我们必须通过命令行强制卸载以删除所有VS痕迹。我在stackoverflow上找到了以下答案,对我非常有用。
在命令行(管理员权限)中使用参数运行安装程序:
vs_community_ENU.exe /uninstall /force 然后:
运行vs_community_ENU.exe(或professional/enterprise)。 如何在不同的驱动器上安装Visual Studio 2015

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接