Как определить, установлен ли 32-разрядный распространяемый компонент Visual Studio 2013 на компьютере пользователя надежно через реестр?
Я использую DeployMaster для создания установщика для 32-разрядного приложения Windows, написанные на C++ с использованием Qt.
исполняемый файл зависит от распространяемого Visual Studio 2013-т. е. распространяемый 32-разрядный Visual Studio 2013 должен быть установлен конечным пользователем, до запуска этого приложения.
я погуглил и посмотрел на другие вопросы StackOverflow. В частности, эта ссылка предоставляет точный раздел реестра проверить, но для случая VS 2008.
Мне нужен VS 2013, а не VS 2008.
однако в идеале это будет надежная проверка реестра, а не программное решение, потому что я могу легко проверить раздел реестра с помощью установщика DeployMaster. (Если в системе установлено, что не установлен распространяемый установщик, также легко запустить установщик DeployMaster.)
кто-нибудь знает надежный метод, предпочтительно используя реестр ключ, который позволяет определить, установлен ли распространяемый 32-разрядный VS 2013 на компьютере конечного пользователя?
4 ответов
ключ вам нужен HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing.0\RuntimeMinimum
.
я использую эти ключи reg:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio.0\VC\Runtimes\x86
Installed
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio.0\VC\Runtimes\x64
Installed
Я подтвердил, что они появляются только после установки redist, и они более точно совпадают с предыдущими версиями. например, VC++ 2010:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio.0\VC\VCRedist\x86
Installed
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio.0\VC\VCRedist\x64
Installed
на всякий случай, если кто-то смотрит на это, но использует NSIS для развертывания своей программы.
вы проверить:
ReadRegDword HKLM "SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing.0\RuntimeMinimum" "Install"
Если равна
1
, затем он устанавливается. Если нет, то нет.--6-->
Я нашел его здесь:
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, если он был установлен. Теперь я просто хочу, чтобы devdiv Microsoft мог поговорить с командой Windows, чтобы у нас было каноническое место для обнаружения этого материала и каноническое имя для распространяемого. Подсказка Microsoft, это не называется "минимальное время выполнения"