2015-12-09 107 views
2

我試圖讓我的應用程序確定是否在用戶的系統上安裝了Microsoft Visual C++ 2013 Redistributable。我已經通過回答herehere觀看,here,但它看起來像所有的答案分爲兩大類:如何快速而可靠地確定是否安裝了Visual C++ 2013 Runtime

  1. 檢查註冊表:這是不是一種選擇,因爲如果Visual Studio是安裝或Visual C++ 已被刪除,你會得到誤報。這是HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall,HKLM\SOFTWARE\Microsoft\VisualStudio\12.0\VCHKLM\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VC的情況。使用wmic product getnew ManagementObjectSearcher("SELECT * FROM Win32_Product")
  2. 使用WMI /檢查系統表。這是可靠的,但非常慢(40+秒),因爲它看起來像在系統返回結果之前必須加載安裝在系統上的所有產品。

當再分發安裝程序運行時,安裝程​​序是很快能夠確定組件是否已經安裝:

Already installed

或未安裝:

Not installed

什麼是最快的方式來做到這一點,即仍然可靠?理想情況下,我想知道:Microsoft如何快速完成此操作?我能這樣做嗎?

+1

你可以使用一個合併模塊? –

+0

@ DanielA.White我不熟悉合併模塊,但是我對它們做了一些簡單的研究,它看起來像只適用於.msi文件,但應用程序是一個.exe文件。有沒有辦法與我錯過的.exe文件做到這一點? –

回答

3

As has now been explained in the answer to another question,也有可以使用的更可靠的註冊表值:

Microsoft Visual C++ 2013 Redistributable (x64) 
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{050d4fc8-5d48-4b8f-8972-47c82c46020f} 
Configuration: x64 
Version: 12.0.30501.0 

Microsoft Visual C++ 2013 Redistributable (x86) 
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{f65db027-aff3-4070-886a-0d87064aabb1} 
Configuration: x86 
Version: 12.0.30501.0 
相關問題