10

我使用DeployMaster爲使用Qt編寫的C++編寫的32位Windows應用程序構建安裝程序。如何通過註冊表確定32位Visual Studio 2013可再發行組件是否可靠地安裝在用戶機器上?

在運行此應用程序之前,可執行文件依賴於Visual Studio 2013可再發行組件(即32-bit Visual Studio 2013 redistributable必須由最終用戶安裝)。

我已經使用了Google,並查看了其他StackOverflow問題。特別是,this link provides the exact Registry key to check,但對VS的情況下,2008年

我需要VS 2013,不是VS 2008

然而,理想情況下這將是一個可靠的註冊表檢查 - 不是編程解決方案 - 因爲我可以很容易地使用DeployMaster安裝程序檢查註冊表項。 (如果確定系統沒有安裝可再發行組件,安裝程序也可輕鬆讓DeployMaster安裝程序啓動。)

有沒有人知道一個可靠的方法,最好使用註冊表項,以使其成爲可能以確定32位VS 2013可再發行組件是否安裝在最終用戶的機器上?

+0

可能工作到這出自己:一臺機器上運行SysInternal的procmon中(可以是虛擬的)沒有尚未安裝的REDIST並開始安裝。這將顯示它創建的任何註冊表項。選擇合適的(如HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall或HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ S-1-5-18 \ Products中的那些),就完成了。 – stijn

+1

我認爲關鍵是'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ DevDiv \ vc \ Servicing \ 12.0 \ RuntimeMinimum'(檢查Install = 1),但我想確認這個或任何答案是可靠的* 。好的想法(儘管爲什麼程序員爲了查看是否安裝了一個基本的Microsoft運行時系統而被迫執行這一級別的工作?這是微軟方面的又一次失敗)。 –

+1

是的,這個鍵也可能被使用 - 儘管它並不完全符合指向的手指。最後總是有人錯,我還可以聲稱它是DeployMaster的錯,因爲它們讓你自己想出來:P因爲例如InstallShield具有內置於VC redists的此功能IIRC – stijn

回答

5

您需要的密鑰是HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum

3

以防萬一有人在看這個,但是使用NSIS來部署他們的程序。

你檢查:

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

如果$0等於1,然後將其安裝。如果不是,那不是。

0

我在這裏找到:

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能夠與Windows團隊交談,這樣我們就可以有一個規範的地方來檢測這些東西,並且可以指定Redistributable的規範名稱。提示微軟,那就不叫「最小運行」

6

我使用這些雷吉·基斯: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\VC\Runtimes\x86Installed HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0\VC\Runtimes\x64Installed

我已確認在安裝後REDIST,他們只出現,他們與之前的版本更匹配。例如VC++ 2010是: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86Installed HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64Installed

相關問題