Ответ 1
Ключ, который вам нужен, это HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum
.
Я использую DeployMaster для сборки установщика для 32-разрядного приложения Windows, написанного на С++ с использованием Qt.
Исполняемый файл зависит от распространяемой версии Visual Studio 2013, то есть 32-разрядная версия Visual Studio 2013, распространяемая, должна быть установлена конечным пользователем, перед запуском этого приложения.
У меня есть googled, и посмотрел на другие вопросы 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, и они более точно соответствуют тем, что были в предыдущих версиях. например VС++ 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, поскольку его ключ Windows используется для удаления msi, если он был установлен. Теперь я просто хочу, чтобы Microsoft Devdiv могла поговорить с командой Windows, чтобы мы могли иметь каноническое место для обнаружения этого материала и каноническое имя для Распространяемого. Подсказка Microsoft, она не называется "минимальным временем выполнения"