我在用 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可再发行组件?
你需要的关键是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum。
我正在使用这些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
以防万一有人在看这个,但正在使用 NSIS 部署他们的程序。
你检查:
ReadRegDword $0 HKLM "SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum" "Install"
如果 $0 等于 1,然后安装。如果不是,那就不是。
我在这里找到了:
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的规范名称。提示微软,它不称为“最小运行时间”