【问题标题】:Determine whether VS or SSMS is installed and, if so, which version确定是否安装了 VS 或 SSMS,如果是,是哪个版本
【发布时间】:2015-05-06 12:35:13
【问题描述】:

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

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

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

所以现在我有了一种检查注册表的方法,而且我很确定 VS setup 会在其中写入一些数据。

经过一番挖掘,我在this linkthis one too 找到了另一篇有用的文章,似乎可以进一步指导我。

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

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

问题:为什么说明告诉我要往下看

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

当我的“DevDiv”子文件夹甚至不包含“VS”子文件夹时?

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

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

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

最后的想法:如果有更好的方法来查找安装信息,我将不胜感激。 VS 2010、2012、Date Tools 和 SSMS 2012 的插件需要检测。

【问题讨论】:

  • 这个问题与Inno Setup无关。您的问题是“如何检测是否安装了 VS,如果是,我如何确定哪个版本?”,这些都与 Inno Setup 无关。您将使用 Inno Setup 安装中的信息这一事实与问题无关。至于“为什么说明告诉我......?”,请询问编写说明的人 - 我们不能代表他们发言。
  • 另外,你看过HKCU\Software\Microsoft\VisualStudio吗?它有版本的密钥,以及配置信息。例如,我现在查看10.0_Config 键,它有一个名为InstallDir 的条目,而10.0 键有一个ExtensionManagerExternal Tools 的子键。 HKCU\Software\Microsoft\Microsoft SQL Server 注册表项下有类似的信息,可能对您也有用。
  • @KenWhite 感谢您的编辑和参考,看来这正是我正在寻找的东西。把它写下来,这样我就可以接受了。

标签: visual-studio registry


【解决方案1】:

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

我当前的系统有一个 Visual Studio 版本的 HCKU\Software\Microsoft\VisualStudio\10.0(和 10.0_Config)条目和 HCKU\Software\Microsoft\Microsoft SQL Server\100 这似乎是您在 Visual Studio 和 SSMS 中所追求的。我无法使用日期工具(因为我没有它们),但我怀疑在同一个注册表分支中也有它们的注册表项。

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 2018-09-11
    • 2010-11-17
    • 2011-11-22
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    相关资源
    最近更新 更多