问题 如何确定是否通过注册表可靠地在用户的计算机上安装了32位Visual Studio 2013可再发行组件?


我在用 DeployMaster 使用Qt为使用C ++编写的32位Windows应用程序构建安装程序。

可执行文件取决于Visual Studio 2013可再发行组件 - 即 32位Visual Studio 2013可再发行组件 必须在运行此应用程序之前由最终用户安装。

我用Google搜索,并查看其他StackOverflow问题。尤其是, 此链接提供了要检查的确切注册表项,但对于VS 2008的情况。

我需要VS 2013,而不是VS 2008。

但是,理想情况下,它将是一个可靠的注册表检查 - 而不是程序化解决方案 - 因为我可以使用DeployMaster安装程序轻松检查注册表项。 (如果确定系统没有安装可再发行组件,则也很容易让DeployMaster安装程序启动安装程序。)

是否有人知道一种可靠的方法,最好使用注册表项,以便确定是否可以在最终用户的计算机上安装32位VS 2013可再发行组件?


8319
2018-02-11 12:43


起源

可能需要自己解决这个问题:在没有安装redist的机器上运行SysInternal的ProcMon(可以是虚拟的)并开始安装。这将揭示它创建的任何注册表项。选择一个合适的(如HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall或HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ S-1-5-18 \ Products),你就完成了。 。 - stijn
一世 认为 关键是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum (检查 Install = 1),但我想确认这个或任何答案是 可靠。很好的想法(虽然为什么程序员必须只是为了查看是否安装了基本的Microsoft运行时系统来执行该级别的工作?这是微软的另一个失败)。 - Dan Nissenbaum
是的,钥匙也可能被使用 - 尽管并不是真的同意指针。最后它总是有人的错,而且我可能会声称它是DeployMaster的错,因为它们让你自己弄明白:P since例如,InstallShield内置了VC redists IIRC的功能 - stijn
@stijn InstallShield - 另一个1000美元的产品,激励你“支付”功能,以支持另一家公司的功能,你必须支付,这是不够的。不过对他们有好处。 - Dan Nissenbaum


答案:


你需要的关键是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum


5
2017-07-10 17:29





我正在使用这些reg键: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\VC\Runtimes\x86  Installed HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\VC\Runtimes\x64  Installed

我已经确认它们只在安装了redist之后出现,并且它们与之前版本的更接近。例如VC ++ 2010是: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86  Installed HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64  Installed


7
2018-04-15 09:28





以防万一有人在看这个,但正在使用 NSIS 部署他们的程序。

你检查:

ReadRegDword $0 HKLM "SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum" "Install"

如果 $0 等于 1,然后安装。如果不是,那就不是。


3
2018-01-21 11:51





我在这里找到了:

32bit
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}
or
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}

64bit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{A749D8E6-B613-3BE3-8F5F-045C84EBA29B}

这可能比devdiv密钥更好,因为它用于卸载msi的Windows密钥(如果已安装)。现在我只希望微软的devdiv可以与Windows团队交谈,这样我们就可以有一个规范的地方来检测这些东西,以及Redistributable的规范名称。提示微软,它不称为“最小运行时间”


0
2018-02-03 15:30