簡體   English   中英

如何檢測是否安裝了 Visual C++ 2017 Redistributable

[英]How to detect if Visual C++ 2017 Redistributable is installed

隨着 Microsoft 在其最新版本中更改注冊表項的模式,我如何檢測機器上是否安裝了 Visual C++ 2017 Redistributable?

我的目標是安裝 VC++2015Redist,因為該軟件是使用 VS2015 編寫的。 如果我可以在一台機器上成功檢測到 VC++2017Redist,那么我就跳過我的 VC++2015Redist 安裝

2017 VC++ Redistributable 安裝升級/替換 2015 安裝

Visual Studio 2017 Redistributables 的安裝會升級並替換 2015 Redistributables 的任何現有安裝。 我已經檢查過了,2015 年的安裝從“添加/刪除程序”中消失了,並且注冊表值(見下文)更新了它們的版本號。 此外, 根據 MSDN ,2017 VC++ Redistributables 與 2015 版本具有二進制兼容性

可以通過檢查下面描述的注冊表項來檢查是否安裝了 2015 或 2017。 這是針對 x64 系統的,看看沒有用於 32 位系統的Wow6432Node

鑰匙:

對於 64 位 VC++ Redistributable

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64

對於 32 位 VC++ Redistributable

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x86

32 位和 64 位安裝的屬性和值相同(相同格式)。 注冊表使用價值:

Value          2015       2017 
Name      Val. Data  Val. Data
--------  ---------  ---------
Major            14         14
Minor             0         13
Bld           23026      26020

請注意,隨着新補丁的更新,2017 年的@Minor 和內部版本 (@Bld) 編號繼續更改。

我建議,如果檢查安裝了 2015 的最小值,只需檢查密鑰並且 @Major 版本為 14。

如果檢查 2017 年,如果它不存在,則打算進行升級,那么只需檢查 @Bld 編號,如果它至少不是可以安裝的版本,則繼續安裝當前的 2017 版本。 請注意,@Minor 和 @Bld 版本的未來更新是可能的——我有另一台安裝了 v14.11.25325 的計算機,也是 2017 版本。

VC 可再發行組件現已加入VisualStudio 2015-2019 如果您嘗試安裝“較舊的”版本(例如僅 2015 年),並且您有任何更新的版本(例如 2017 年),則會出現錯誤(本回復結束)。

正如@CJBS 所寫,它會將自己寫入注冊表,但遺憾的是我注意到了另一個記錄位置(因此也請檢查一下):

對於 32 位 VC++ Redistributable

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0\\VC\\Runtimes\\x86

對於 64 位 VC++ Redistributable

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\14.0\\VC\\Runtimes\\x64

我建議閱讀@Bld DWord 記錄並進行比較以確定您是否需要更新的版本:2015 (Bld = 23026) 2017 (Bld = 26020) 2019 (Bld = 27820)


錯誤消息圖像:0x80070666 - 已安裝此產品的另一個版本。 無法繼續安裝此版本...

# Check VCRedist current version
$OS= if ( ${env:ProgramFiles(x86)} ) {"\WOW6432Node"} else {"\"}
    $vcredist = Get-ItemProperty -Path "HKLM:\SOFTWARE$OS\Microsoft\VisualStudio\14.0\VC\Runtimes\x86" -ErrorAction SilentlyContinue -ErrorVariable eVcRedist
if ($eVcRedist) {
    $Warning += @( "Abbyy FineReader 15 requires VCRedist." )
}
elseif (($vcredist.Bld -le 24215)) {
    $Warning += @( "Abbyy FineReader 15 requires VCRedist." )
}

你在解決錯誤的問題。 您正在嘗試安裝僅適用於 VS2015 (Toolset v140) 的過時的可再發行組件。 相反,安裝當前的 VS2017 可再發行組件(工具集 v141)。 它向后兼容 VS2015。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM