确定是安装了VS还是SSMS,如果安装了哪个版本

时间:2015-05-06 12:35:13

标签: visual-studio registry

我正在为几个版本的Visual Studio,Data Tools和SQL Server Management Studio创建一个addIn的安装包。我的安装包必须能够检测到安装了哪一个这样的工具(如果有的话),以便我的安装向导可以禁用机器上不存在的软件的复选框。

在官方的Inno设置文档中,我找到了this

function RegKeyExists(const RootKey: Integer; const SubKeyName: String): Boolean;

所以现在我有一种检查注册表的方法,我非常确定VS安装程序会在其中写入一些数据。

经过一番挖掘后,我发现了另一篇有用的文章,它似乎在this linkthis one too为我提供了进一步的指导。

我希望很快进入我的注册表,以确保这是我正在寻找的东西,但令我惊讶的是,我正在寻找的参考不是那里。

Registry folder structure snapshot

为什么这是我不知道所以我的第一个问题是:

问题:为什么说明会告诉我查看

HKLM\Software\Microsoft\DevDiv\VS\Servicing\11.0\Ultimate

当我的' DevDiv'子文件夹甚至不包含' VS'子文件夹?

经过多次挖掘后,我发现另一种方法是通过this site上的卸载信息检测我的计算机上是否安装了软件。

在查看引用的注册表位置后,我发现大多数软件都使用Guid命名的子文件夹来表示。

问题:在注册表的卸载信息中,每次安装软件时,一个软件产品是通过完全随机的Guid注册自己还是子文件夹名称相同?换句话说,我可以只查看Guid命名的子文件夹中的哪个包含ie的信息。 VS2012,硬编码到我的脚本中作为搜索的确切位置?

最后的想法:如果有更好的方法来查找安装信息,我将非常感谢您的指示。 addIn需要检测VS 2010,2012,Date Tools和SSMS 2012。

1 个答案:

答案 0 :(得分:2)

我相信您可能正在寻找的内容(就适当的注册表项而言)位于HKEY_CURRENT_USER(HKCU)下。例如,HKCU\Software\Microsoft\VisualStudio具有每个版本的密钥,每个版本有两个密钥(version和version_config)。

我当前的系统有一个版本的Visual Studio和HCKU\Software\Microsoft\VisualStudio\10.0的{​​{1}}(和10.0_Config)条目,它们似乎是您在Visual Studio和SSMS之后的用途。我无法帮助使用日期工具(因为我没有它们),但我怀疑它们也存在于同一注册表分支中的注册表项。