Phát hiện nếu Visual C ++ Redistributable cho Visual Studio 2012 được cài đặt


109

Làm thế nào để phát hiện xem Visual C ++ Redistributable cho Visual Studio 2012 đã được cài đặt chưa?

Tôi đã thử Google nó và chưa ai hỏi câu hỏi này, thật bất ngờ!


1
Tại sao không loại bỏ sự phụ thuộc đó bằng cách đặt Thư viện thời gian chạy trong C ++> Tạo mã thành Đa luồng [gỡ lỗi] thay vì dll [gỡ lỗi] Đa luồng? Tôi vừa giải quyết sự cố cài đặt danh sách lại thời gian chạy bằng cách đơn giản xóa phần phụ thuộc.
Cem Kalyoncu

Tôi đã tìm ra cách phát hiện các gói bằng cách thử và sai. Tôi ước có một viên đạn ma thuật, nhưng nếu có, tôi vẫn chưa tìm thấy nó. Tôi đã có một xuống câu trả lời dưới đây đối với một số redists cụ thể mà dường như làm việc 100% thời gian để giúp đỡ với hiện hầu hết trong số họ.
kayleeFrye_onDeck

3
Vui lòng xem xét việc thay đổi câu trả lời được chấp nhận thành câu trả lời của kayleeFrye_onDeck. Tôi đã dành nhiều thời gian để tìm kiếm một phương pháp đáng tin cậy và đây có vẻ là một phương pháp, tôi nghĩ rằng với tất cả các câu trả lời không đáng tin cậy khác, nó sẽ giúp rất nhiều người tìm thấy thông tin chính xác
Shuifan

Có vẻ như có một bản cập nhật cho thời gian chạy Visual Studio 2017: 14.10.V25017. Liên kết: go.microsoft.com/fwlink/?LinkId=746572 Bạn có thể cập nhật các giá trị đăng ký không?
karel vergauwe

Câu trả lời:


172

Nó phụ thuộc vào phiên bản bạn đang sử dụng. Hai khóa 2012 này đã hoạt động tốt đối với tôi với các phiên bản tương ứng của chúng để tải xuống cho Bản cập nhật 4. Xin lưu ý rằng một số vị trí đăng ký này có thể phụ thuộc vào hệ điều hành. Tôi đã thu thập thông tin này từ hộp Windows 10 x64 . Tôi sẽ tiếp tục và kết xuất tất cả các phiên bản danh sách lại này và các khóa reg mà tôi tìm kiếm để phát hiện cài đặt.:


Visual C ++ 2005

Microsoft Visual C++ 2005 Redistributable (x64)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\1af2a8da7e60d0b429d7e6453b3d0182
Configuration: x64
Version: 6.0.2900.2180

URL tải xuống trực tiếp: https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE

Microsoft Visual C++ 2005 Redistributable (x86)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\c1c4f01781cc94c4c8fb1542c0981a2a 
Configuration: x86
Version: 6.0.2900.2180

URL tải xuống trực tiếp: https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE


Visual C ++ 2008

Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161 (SP1)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\67D6ECF5CD5FBA732B8B22BAC8DE1B4D 
Configuration: x64
Version: 9.0.30729.6161 (Actual $Version data in registry: 0x9007809 [DWORD])

URL tải xuống trực tiếp: https://download.microsoft.com/download/2/d/6/2d61c766-107b-409d-8fba-c39e61ca08e8/vcredist_x64.exe

Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161 (SP1)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\6E815EB96CCE9A53884E7857C57002F0
Configuration: x86
Version: 9.0.30729.6161 (Actual $Version data in registry: 0x9007809 [DWORD])

URL tải xuống trực tiếp: https://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe


Visual C ++ 2010

Microsoft Visual C++ 2010 Redistributable (x64)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\1926E8D15D0BCE53481466615F760A7F 
Configuration: x64
Version: 10.0.40219.325

URL tải xuống trực tiếp: https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe

Microsoft Visual C++ 2010 Redistributable (x86)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\1D5E3C0FEDA1E123187686FED06E995A 
Configuration: x86
Version: 10.0.40219.325

URL tải xuống trực tiếp: https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe


Visual C ++ 2012

Microsoft Visual C++ 2012 Redistributable (x64)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{ca67548a-5ebe-413a-b50c-4b9ceb6d66c6} 
Configuration: x64
Version: 11.0.61030.0

URL tải xuống trực tiếp: https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe

Microsoft Visual C++ 2012 Redistributable (x86)
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f} 
Configuration: x86
Version: 11.0.61030.0

URL tải xuống trực tiếp: https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe

cảnh báo phiên bản : Theo phát hiện của người dùng Wai Ha Lee , "... các tệp nhị phân đi kèm với VC ++ 2012 cập nhật 4 ( 11.0.61030.0) có phiên bản 11.0.60610.1cho tệp nhị phân ATL và MFC và 11.0.51106.1cho mọi thứ khác, ví dụ như msvcp110.dll và msvcr110.dll . .. "


Visual C ++ 2013

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

URL tải xuống trực tiếp: https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe

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

URL tải xuống trực tiếp: https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe


Visual C ++ 2015

Cân nhắc sử dụng gói 2015-2019 làm giải pháp thay thế

Microsoft Visual C++ 2015 Redistributable (x64) - 14.0.24215
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{d992c12e-cab2-426f-bde3-fb8c53950b0d}
Configuration: x64
Version: 14.0.24215.1

URL tải xuống trực tiếp: https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x64.exe

Microsoft Visual C++ 2015 Redistributable (x86) - 14.0.24215
Registry Key: HKLM\SOFTWARE\Classes\Installer\Dependencies\{e2803110-78b3-4664-a479-3611a381656a}
Configuration: x86
Version: 14.0.24215.1

URL tải xuống trực tiếp: https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x86.exe


Visual C ++ 2017

Cân nhắc sử dụng gói 2015-2019 làm giải pháp thay thế

Lưu ý : Có một quy ước đăng ký mới năm 2017 đang được sử dụng hoặc nó chưa được hoàn thiện. Như tôi đang đoán các khóa cao nhất của: [HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle][HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle]

có thể thay đổi, hoặc ít nhất có các GUID lồng nhau khác nhau, tôi sẽ sử dụng danh sách khóa kết thúc bằng GUID.

Microsoft Visual C++ 2017 Redistributable (x64) - 14.16.27012
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.16,bundle\Dependents\{427ada59-85e7-4bc8-b8d5-ebf59db60423}]
Configuration: x64
Version: 14.16.27012.6

URL tải xuống trực tiếp: https://download.visualstudio.microsoft.com/download/pr/9fbed7c7-7012-4cc0-a0a3-a541f51981b5/e7eec15278b4473e26d7e32cef53a34c/vc_redist.x64.exe

Microsoft Visual C++ 2017 Redistributable (x86) - 14.16.27012
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.16,bundle\Dependents\{67f67547-9693-4937-aa13-56e296bd40f6}]
Configuration: x86
Version: 14.16.27012.6

URL tải xuống trực tiếp: https://download.visualstudio.microsoft.com/download/pr/d0b808a8-aa78-4250-8e54-49b8c23f7328/9c5e6532055786367ee61aafb3313c95/vc_redist.x86.exe


Visual C ++ 2019 ( gói 2015-2019 )

Lưu ý : Có một quy ước đăng ký mới khác đang được sử dụng cho Visual C ++ 2019. Dường như cũng không có trình cài đặt độc lập cho Visual C ++ 2019, chỉ có trình cài đặt gói này là Visual C ++ 2015 đến 2019.

14,21,27702

Microsoft Visual C++ 2015-2019 Redistributable (x64) - 14.21.27702
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.21,bundle\Dependents\{f4220b74-9edd-4ded-bc8b-0342c1e164d8}]
Configuration: x64
Version: 14.21.27702  

URL tải xuống trực tiếp: https://download.visualstudio.microsoft.com/download/pr/9e04d214-5a9d-4515-9960-3d71398d98c3/1e1e62ab57bbb4bf5199e8ce88f040be/vc_redist.x64.exe

Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.21.27702
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.21,bundle\Dependents\{49697869-be8e-427d-81a0-c334d1d14950}]
Configuration: x86
Version: 14.21.27702

URL tải xuống trực tiếp: https://download.visualstudio.microsoft.com/download/pr/c8edbb87-c7ec-4500-a461-71e8912d25e9/99ba493d660597490cbb8b3211d2cae4/vc_redist.x86.exe

14.22.27821

Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.22.27821
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.22,bundle\Dependents\{5bfc1380-fd35-4b85-9715-7351535d077e}]
Configuration: x86
Version: 14.22.27821

URL tải xuống trực tiếp: https://download.visualstudio.microsoft.com/download/pr/0c1cfec3-e028-4996-8bb7-0c751ba41e32/1abed1573f36075bfdfc538a2af00d37/vc_redist.x86.exe

Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.22.27821
Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.22,bundle\Dependents\{6361b579-2795-4886-b2a8-53d5239b6452}]
Configuration: x64
Version: 14.22.27821

URL tải xuống trực tiếp: https://download.visualstudio.microsoft.com/download/pr/cc0046d4-e7b4-45a1-bd46-b1c079191224/9c4042a4c2e6d1f661f4c58cf4d129e9/vc_redist.x64.exe


Changelog :
Ngày 19 tháng 8 năm 2019 - Đã thêm phiên bản mới của phiên bản gói 2015-2019 vào
ngày 13 tháng 6 năm 2019 - Đã thêm một phần mới cho phiên bản gói 2015-2019 14.21.27702và thêm các ghi chú nhỏ vào các phần 2015 và 2017 về việc xem xét việc sử dụng gói mới thay thế.
Ngày 14 tháng 12 năm 2018 - Cập nhật MSVC2008 cho 9.0.30729.6161bản cập nhật Gói dịch vụ 1 theo phát hiện của Jim Wolff
ngày 27 tháng 11 năm 2018 - Thông tin cập nhật cho MSVC2017 v. 14.16
Ngày 12 tháng 9 năm 2018 - Đã thêm phiên bản báo trước cho 2012 Cập nhật 4 theo phát hiện của Wai Ha Lee
ngày 24 tháng 8, 2018 - Cập nhật phiên bản 2017 cho 14.15.26706, các phụ thuộc Visual C ++ được cập nhật được đóng gói với VS 2017 15.8.1
Ngày 16 tháng 5 năm 2018 - Cập nhật phiên bản 2017 cho 14.14.26405.0 làm mục nhập C ++ 2017 mới
ngày 8 tháng 9 năm 2017 - Cập nhật phiên bản 2017 cho 14.11.25325.0 làm mục nhập Visual C ++ 2017 mới
ngày 7 tháng 4 năm 2017 - Cập nhật phiên bản 14,10 của năm 2017 .25008.0 làm mục nhập Visual C ++ 2017 mới
ngày 24 tháng 10 năm 2016 - Cập nhật thông tin phiên bản 2015 cho 14.0.24215.1
ngày 18 tháng 8 năm 2016 - Cập nhật thông tin phiên bản 2015 cho 14.0.24212
ngày 27 tháng 5 năm 2016 - Thông tin cập nhật cho MSVC2015 Cập nhật 2

Vui lòng liên hệ với tôi tại đây nếu bất kỳ cái nào trong số này trở nên lỗi thời.


4
Đây là hoàn hảo. Đây là cái duy nhất mà tôi đã tìm thấy không có kết quả dương tính giả khi Visual Studio được cài đặt hoặc thời gian chạy được gỡ cài đặt.
AN

2
GUID của VS2015 Pre Update 1 là {74d0e5db-b326-4dae-a6b2-445b9de1836e} nên bạn có thể gặp khó khăn khi sử dụng cơ chế này. Đối với mọi bản cập nhật trong tương lai! Việc khởi chạy VCRedist trước Bản cập nhật 1 với Bản cập nhật 1 được cài đặt đã gây ra lỗi cho tôi - vì vậy tôi sẽ sử dụng khóa reg của trình cài đặt VC - có vẻ như bạn sử dụng VCRedist vẫn ổn?
GilesDMiddleton

4
Rất tiếc, điều này không chứa VCREDIST 14.0 Cập nhật 2 - làm cách nào để chúng tôi đối phó với khả năng tương thích chuyển tiếp (phát hiện các phiên bản mới hơn, kế tiếp của cùng một thời gian chạy)
Shaun Wilson

2
@ManjunathBabu, tôi không tin rằng có bất kỳ tài liệu bên ngoài nào liên quan đến quy ước đăng ký cho trình cài đặt có thể phân phối lại Visual C ++. Tôi chỉ nhận thấy rằng họ dường như thực sự tuân theo một cái gì đó tương tự như một kế hoạch vào khoảng thời gian này cho năm 2017, thay vì chỉ ném một GUID khác vào đâu đó mà không có tên khóa cha có ý nghĩa. Cho đến nay, họ đã sử dụng các địa điểm này cho tất cả các trình cài đặt phát hành cho năm 2017: [HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle\Dependents\{$GUID}[HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle\Dependents\{$GUID}
kayleeFrye_onDeck

2
Gói mới của Visual C ++ 2017 thay đổi đường dẫn đăng ký (Phiên bản 14.16.27012.6)[HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x86,x86,14.16,bundle] [HKEY_CLASSES_ROOT\Installer\Dependencies\VC,redist.x64,amd64,14.16,bundle]
live2

31

Thử

HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0

như một điểm khởi đầu. Tôi sẽ sử dụng điều này để kiểm tra cài đặt thời gian chạy VC ++ 11 (VS 2012).


7
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ DevDiv \ vc \ Servicing \ 11.0 \ RuntimeMinimum \ install nên được đặt thành 1
Alex Spence

3
Đối với 32-bit (aka x86) chìa khóa nằm tại địa chỉ:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VC\Servicing\11.0\RuntimeMinimum
CodeFox

@kayleeFrye_onDeck bạn đã tìm thấy cách thực hiện việc này chưa? Tôi vẫn đang tìm kiếm một cách đáng tin cậy, nhưng không có câu trả lời nào trên trang này phù hợp với tôi
AN

Câu trả lời tốt hơn câu trả lời được chấp nhận vì nó không dựa vào UUID gói, có khả năng thay đổi cho mọi bản vá mà Microsoft cung cấp
jpo38

25

Bạn có thể kiểm tra Installedgiá trị 1ở vị trí đăng ký này: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x86trên hệ thống 64-bit. Trong mã dẫn đến việc truy cập khóa đăng ký HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86. Lưu ý sự vắng mặt của Wow6432Node.

Trên hệ thống 32-bit, sổ đăng ký giống nhau mà không có Wow6432Node:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86


Tôi có một máy Win7 32-bit đã cài đặt thời gian chạy VC ++ 2012 và tôi không có khóa reg này.
BryanJ

Bạn có chắc mình không có `HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 11.0 \ VC`? Bạn có cái gì?
Mike de Klerk

2
Tôi có HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VCnhưng tôi không có Runtimeschìa khóa. Tôi có chìa khóa trong câu trả lời của Dave HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0.
BryanJ

@BryanJ Odd rằng mỗi hệ thống có thể rất khác nhau ... Cảm ơn bạn thêm thông tin hữu ích này
Mike de Klerk

3
Câu chuyện hài hước và không có thông tin thực sự từ MS. Tôi nghĩ rằng bạn có câu trả lời tốt nhất mà tôi đã phát hiện cho đến nay. Đã thử nghiệm cài đặt vcredist trên máy ảo mới tương đối và đây là chìa khóa duy nhất tôi tìm thấy sau đó. Vì vậy, ngón tay cái lên từ phía của tôi ...
anhoppe

12

Không có phần tử kiểm tra cài đặt nào trong tệp kê khai gói bootstrapper được vận chuyển bằng Visual C ++. Đoán Microsoft luôn muốn cài đặt nếu bạn đặt nó làm điều kiện tiên quyết.

Tất nhiên bạn vẫn có thể gọi MsiQueryProductState để kiểm tra xem gói VC redist đã được cài đặt thông qua MSI hay chưa. Bạn có thể tìm thấy mã gói bằng cách chạy

wmic product get

tại dòng lệnh, hoặc nếu bạn đã ở wmic: root \ cli, hãy chạy

product where "Caption like '%C++ 2012%'"

10

Rất tiếc, câu trả lời cho những câu hỏi đơn giản này không phải là một câu đơn giản, mà là hoạt động trong 100% tất cả các hệ thống và thậm chí có thể mở rộng cho nhiều khuôn khổ .net.

Sự phức tạp đến từ thực tế là có (và đã) nhiều bản sửa đổi thời gian chạy VC có thể dẫn đến trường hợp mặc dù thời gian chạy VC10 đã được cài đặt, nhưng số bản dựng của chúng không đủ gần đây nên EXE của bạn sẽ không khởi động trừ khi bạn đã cài đặt thời gian chạy chính xác mà bạn yêu cầu hoặc một trong những thời gian chạy mới hơn cho phép phiên bản này và các phiên bản trước cho cùng một phiên bản chính chạy với nó (địa ngục song song). Ngoài ra, nếu bạn có EXE 64 bit, bạn sẽ phải kiểm tra cả hai, thời gian chạy 32 VÀ 64 bit.

Điều đó nói rằng, cách đáng tin cậy duy nhất để xác định xem thời gian chạy cho EXE của bạn đã được cài đặt hay chưa là cố gắng chạy EXE - hoặc một EXE khác được xây dựng với cài đặt tương tự như EXE chính của bạn và mục đích duy nhất là để làm - không có gì. Chỉ chạy (có nghĩa là thời gian chạy đã được cài đặt) hoặc không chạy (khi chưa được cài đặt).

Tôi đã làm như sau đối với trình cài đặt yêu cầu cài đặt thời gian chạy VC10 32 và 64 bit: Trình cài đặt cố gắng khởi chạy tất cả các EXE giả và nếu thành công, thời gian chạy tương ứng được coi là đã được cài đặt. Điều này cũng giải quyết kịch bản 32/64 bit.

Nhân tiện, điều này cũng hoạt động để xác định xem khung .net thích hợp đã được cài đặt hay chưa, điều này rất phức tạp trong Windows 8 và 10, vì hỗ trợ .net 3.5 có thể tải xuống cũng hỗ trợ .net phiên bản 3.0 và 2.0 - tại đó không có mục đăng ký cho những. (Và tệ hơn, bạn thậm chí không thể sử dụng trình cài đặt khuôn khổ tiêu chuẩn ở đây, bạn phải sử dụng hỗ trợ tích hợp và tải xuống qua Windows hoặc xây dựng lại ứng dụng của bạn bằng .net 4, nhưng đó là một câu chuyện khác).

C ++ giả EXE có thể được xây dựng bằng cách sử dụng một dự án với mã sau (và một dự án khác trong cấu hình 64 bit nếu cần):

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

Hãy nhớ đặt thuộc tính của dự án Sử dụng MFC để Sử dụng MFC trong một DLL được chia sẻ . Các tệp thực thi sẽ có kích thước khoảng 4KB - một mức giá nhỏ phải trả để có kết quả chắc chắn.

Để cung cấp cho người dùng của bạn trải nghiệm cài đặt tốt, bạn có thể làm như sau (mã mẫu dành cho NSIS ):

Function TryLaunchApplication
  Pop $1 ; pathname
  nsExec::Exec $1
  Pop $0

  ${If} $0 == "error"
  ${OrIf} $0 != 0
    Push 0
  ${Else}
    Push 1
  ${EndIf}
FunctionEnd

và gọi nó trong một hàm, ví dụ: CheckRuntimes

Function CheckRuntimes
  ; Try to execute VC++ 10 application (32 bit)
  Push "Vc10RuntimeCheckerApp.exe"
  Call TryLaunchApplication
  Pop $Vc10RuntimesFound

  ; Add 64 bit check if required.
  ; Remember to try running the 64 bit EXE only on a 64 bit OS,
  ; which requires further checks.

  ; Try to execute .net application
  Push "DotNetRuntimeCheckerApp.exe"
  Call TryLaunchApplication
  Pop $DotNetFrameworkFound
FunctionEnd

Sau đó, khởi chạy kiểm tra thời gian chạy, ví dụ khi rời trang Chào mừng và lưu kết quả vào bộ nhớ cache, vì vậy bạn không phải kiểm tra lại mỗi khi người dùng nhấp vào nút "Quay lại" và "Tiếp theo".

Tiếp theo, tạo một phần chỉ đọc trong cây cài đặt và chọn trước hoặc bỏ chọn nó trên một chức năng được thực thi trước khi trang Thành phần được hiển thị.

Điều này sẽ đảm bảo rằng việc cài đặt từng thành phần thời gian chạy bị thiếu là bắt buộc và sẽ bị bỏ qua nếu nó đã có mặt.


Cảm ơn bạn vì mẹo hữu ích, bạn có nhớ loại dự án phải được tạo không? VS có rất nhiều thứ để bạn lựa chọn :-).
greenoldman,

9

Vì Visual Studio 2010 trở về sau đã ngừng sử dụng WinSxS, có thể chỉ cần kiểm tra% windir% \ system32 \ msvcr110.dll là đủ. Nếu bạn muốn xác minh rằng bạn có phiên bản mới đủ, bạn có thể kiểm tra xem phiên bản tệp là 11.0.50727.1 (VS2012 RTM) hay 11.0.51106.1 (VS2012 Cập nhật 1).


+1 điều này đơn giản hơn và dễ hiểu hơn. Các khóa sổ đăng ký đều tốt và như vậy, nhưng nếu người dùng làm rối hệ thống và xóa msvcr110.dll thì việc kiểm tra sổ đăng ký sẽ vô ích. Tuy nhiên, tốt nhất bạn nên kiểm tra tất cả các thành phần bạn cần (msvcr110.dll, msvcp110.dll, mfc, ...). Và đối với bản cập nhật 3, phiên bản là 11.0.60610.1.
stijn,

ok bỏ qua rằng bit cuối cùng: dường như chỉ trình cài đặt là 11.0.60610.1, phiên bản của dlls crt vẫn là 11.0.51106.1
Stijn

ya the .dll là 11.0.51106.1 mặc dù tôi đã cài đặt vs2012 sp4
Blub

Điều này sẽ không hoạt động. Tôi đã gỡ cài đặt 2005-2015 và tôi vẫn còn các tệp msvc cho 60, 100, 110, 120 và 140 ở đó.
kayleeFrye_onDeck

Lưu ý rằng các tệp nhị phân đi kèm với VC ++ 2012 update 4 ( 11.0.61030.0) có phiên bản 11.0.60610.1cho các tệp nhị phân ATL và MFC và 11.0.51106.1cho mọi thứ khác, ví dụ: msvcp110.dll và msvcr110.dll. Không chắc chắn lý do tại sao. Bạn có thể xác nhận điều này (trên các máy Windows 10 mà tôi đã thử nghiệm) bằng cách truy cập C:\ProgramData\Package Cache\{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}v11.0.61030\packages\vcRuntimeMinimum_x86C:\ProgramData\Package Cache\{B175520C-86A2-35A7-8619-86DC379688B9}v11.0.61030\packages\vcRuntimeAdditional_x86sau đó kiểm tra các tệp trong tệp .cab.
Wai Ha Lee

5

Tôi đã gặp câu hỏi này để tìm kiếm câu trả lời trong bối cảnh kiểm tra Visual C ++ có thể phân phối lại như một phần của trình cài đặt MSI do WiX tạo.

Tôi không thích sự thay đổi của GUID với phiên bản và hệ điều hành, vì vậy tôi đã kết thúc việc tạo một hành động tùy chỉnh được viết bằng C # để kiểm tra khả năng phân phối lại Visual C ++.

Mọi thứ bên dưới dành riêng cho Visual C ++ 2015 Redistributable (x64), nhưng nó có thể dễ dàng sửa đổi cho bất kỳ phiên bản nào.

using Microsoft.Deployment.WindowsInstaller;
using Microsoft.Win32;

namespace CustomActions
{
    public class DependencyChecks
    {
        [CustomAction]
        public static ActionResult IsVC2015RedistInstalled(Session session)
        {
            session.Log("Begin Visual C++ 2015 Redistributable installation check.");

            var dependenciesKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Classes\\Installer\\Dependencies");

            foreach(var subKey in dependenciesKey.GetSubKeyNames())
            {
                var dependency = dependenciesKey.OpenSubKey(subKey);
                var displayName = (string)dependency.GetValue("DisplayName");
                if(displayName != null)
                {
                    if (displayName.Contains("Microsoft Visual C++ 2015 Redistributable (x64)"))
                    {
                        session.Log("Visual C++ 2015 Redistributable is installed.");
                        return ActionResult.Success;
                    }
                }
            }

            session.Log("Visual C++ 2015 Redistributable is not installed.");
            session.Message(InstallMessage.Error, new Record(1, "This application requires Visual C++ 2015 Redistributable. Please install, then run this installer again. https://www.microsoft.com/en-us/download/details.aspx?id=53587"));
            return ActionResult.Failure;
        }
    }
}

Sau đó, trong tệp wxs

<Binary Id='VC2015RedistCheck' SourceFile='!(wix.ResourcesDir=resources)\CustomActions.CA.dll'/>
    <CustomAction
      Id='VC2015RedistCheckAction'
      Execute='immediate'
      BinaryKey='VC2015RedistCheck'
      DllEntry="IsVC2015RedistInstalled"
      Return='check'/>

<InstallExecuteSequence>
  <Custom Action='VC2015RedistCheckAction' After='InstallInitialize'/>
</InstallExecuteSequence>

Chỉnh sửa Tôi đang cập nhật câu trả lời này với một số thông tin cơ bản về cách tạo và sử dụng một hành động tùy chỉnh.

Để tạo hành động tùy chỉnh trong Visual Studio 2017 với phần mở rộng WiX Toolset Visual Studio 2017 được cài đặt, tôi đã sử dụng mẫu dự án để tạo hành động tùy chỉnh (Dự án hành động tùy chỉnh C # cho WiX v3).

Tôi đã kiểm tra dự án được tạo và dường như đã có những thay đổi được liệt kê ở đầu bài viết này: https://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managed vì vậy tôi đã chọn bài báo đó tại phầnAdding Custom Action to the Installer và theo dõi nó với một số chỉnh sửa.

Một điều khác mà tôi đã làm là thay đổi phiên bản của .NET framework mà dự án được xây dựng dựa trên thành 3.5.

Tôi không thấy nó thực sự hữu ích nhưng bạn cũng có thể xem http://wixtoolset.org/documentation/manual/v3/wixdev/extensions/authoring_custom_actions.html


4

Đối với tôi, vị trí này đã hoạt động: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ DevDiv \ vc \ Servicing \ 11.0 \ RuntimeMinimum \ Version

Kiểm tra phiên bản bạn có sau khi cài đặt gói và sử dụng phiên bản đó làm điều kiện trong trình cài đặt của bạn. (của tôi được đặt thành 11.0.50727 sau khi cài đặt VCred).


Câu trả lời này là chính xác những gì chúng tôi đang tìm kiếm (so với câu trả lời khác ở đây, đó là ít về thời gian chạy, và nhiều hơn nữa về Visual studio, không may.)
Shaun Wilson

Câu trả lời này không hoạt động, vì khóa này tồn tại sau khi bạn gỡ cài đặt các danh sách đỏ.
kayleeFrye_onDeck

4

Chỉ cần đi tới Bảng điều khiển> Chương trình và Tính năng, và tất cả chúng đều xuất hiện được liệt kê ở đó.

Tôi không phải là chuyên gia và câu trả lời này khá đơn giản so với những gì mọi người đang trả lời (kiểm tra sổ đăng ký), vì vậy tôi không chắc đó có phải là câu trả lời chính xác hay không nhưng nó đã giúp tôi.

Chương trình và các tính năng


3
if RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86","Installed") = 0 Then
  if RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86","Installed") = 0 Then

3

Tôi đã không thể làm được điều này với InnoSetup.

Tôi đã kiểm tra sự tồn tại của khóa đăng ký:

HKLM\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes

Nếu gỡ cài đặt, nó không tồn tại. Nếu được cài đặt, nó tồn tại.

Nhân tiện, nó cũng có thể nằm trong Wow6432Node:

HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes


Điều này là không đúng sự thật. Các khóa tồn tại ở cả hai vị trí khi chúng đã được gỡ cài đặt.
kayleeFrye_onDeck

1
@kayleeFrye_onDeck Yep ... Tôi phải đồng ý với bạn. Nhưng trên thực tế, khi tôi thử nó lần đầu tiên, nó đã thành công. Nhưng gần đây thì đúng như bạn nói. Tôi không biết tại sao lại như vậy.
Fandi Susanto

3

Kiểm tra trạng thái cài đặt cho sản phẩm thông qua MsiQueryProductState tương đương với việc kiểm tra sổ đăng ký trực tiếp, nhưng bạn vẫn cần GUID cho ProductCode .

Như đã đề cập ở những nơi khác, một nhược điểm với những cách tiếp cận này là mỗi bản cập nhật có Mã sản phẩm riêng!

Rất may, MSI cung cấp một UpgradeCode trong đó xác định một 'gia đình' của sản phẩm. Bạn có thể sử dụng orca để mở một trong các MSI để trích xuất thông tin này. Ví dụ: Mã nâng cấp cho khả năng phân phối lại của VS2015 là{65E5BD06-6392-3027-8C26-853107D3CF1A}

Bạn có thể sử dụng MsiEnumRelatedProducts để nhận tất cả ID sản phẩm cho Mã nâng cấp đó. Trên thực tế, vì mỗi bản cập nhật danh sách lại thay thế bản trước đó, điều này sẽ chỉ mang lại một Mã sản phẩm - chẳng hạn như {B5FC62F5-A367-37A5-9FD2-A6E137C0096F}cho Bản cập nhật VS2015 2 x86.

Bất kể, bạn có thể kiểm tra phiên bản thông qua MsiGetProductInfo (productCode, INSTALLPROPERTY_VERSIONSTRING, ...) hoặc các chức năng tương tự để so sánh với phiên bản bạn muốn, ví dụ: để kiểm tra phiên bản tương đương hoặc mới hơn.

Lưu ý rằng trong một ứng dụng C ++, bạn cũng có thể sử dụng _VC_CRT_MAJOR_VERSION, _VC_CRT_MINOR_VERSION, _VC_CRT_BUILD_VERSIONnếu bạn #include <crtversion.h>- bằng cách này bạn có thể xác định tính toán phiên bản CRT rằng nhị phân của bạn được xây dựng với.


Làm thế nào bạn có được thông tin này? Và đó là Mã nâng cấp cho phiên bản x86 hay phiên bản x64?
Ben Key

Bạn có thể sử dụng Orca để mở msi và giải nén Mã nâng cấp. Cái được đưa ra ở đây ít nhất là dành cho x86. Đối với nơi tôi lấy phần còn lại của thông tin, đây là nguồn chính; Tôi không thể tìm thấy các tài liệu tham khảo trực tuyến khác về cách tiếp cận này liên quan đến danh sách lại cụ thể, nhưng kiểu UpgradeCode / family thường phổ biến với trình cài đặt MSI.
adzm

Tôi biết về Orca. Vấn đề liên quan đến việc đến được MSI đó. Tôi không biết có cách nào để truy cập trực tiếp vào nó. Cách duy nhất mà tôi biết là bằng cách nào đó tìm thấy nó trong thư mục c: \ Windows \ Installer. Tôi có hơn 1.000 tệp trong thư mục đó. Các tệp được đặt tên ngẫu nhiên. Cách duy nhất để xác định MSI nào là chính xác là xem mô tả. Điều này liên quan đến việc nhấn Alt + Enter trên 1.000 tệp trong trình thám hiểm hoặc sử dụng một công cụ để kết xuất mô tả của 1.000 tệp.
Ben Key

À, tôi hiểu rồi. Bạn cũng có thể tìm kiếm trong sổ đăng ký để tìm đường dẫn hoặc thậm chí mã nâng cấp nếu bạn biết mã sản phẩm, trong HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UpgradeCodes. Tuy nhiên, bạn có thể cần sử dụng WMIC (hoặc một số truy cập có lập trình khác vào msi db) để tìm ra phần còn lại. wmic product get / format: csv sẽ kết xuất một csv mà bạn có thể tìm kiếm - nó có các đường dẫn msi trong các giá trị trả về. Bạn có thể viết một kịch bản tốt hơn, tôi chắc chắn nhưng điều này là đủ để giúp bạn trên con đường của mình.
adzm

3

Mã PowerShell này sẽ thực hiện thủ thuật

Get-ItemProperty
HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | 
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table AutoSize

bởi vì hardcoding một loạt mã sản phẩm sẽ không bay, chúng tôi cũng liệt kê sổ đăng ký kiểm tra "tên sản phẩm" của mỗi mục nhập bằng regex, sau đó chúng tôi kiểm tra VersionMajor / VersionMinor (đó là tất cả những gì chúng tôi thực sự quan tâm) điều này có giá trị cho phép chúng tôi tạo ra một bản dựng duy nhất và biết rằng nó sẽ tiếp tục hoạt động trong suốt thời gian hoạt động của một phiên bản vcredist nhất định. mục đích ở đây là ngay lập tức, nhưng có thể yêu cầu chuyển ngữ cho các bộ công cụ như trình cài đặt dựa trên NSIS hoặc WinAPI.
Shaun Wilson,

2

Tôi cần điều tương tự và mặc dù AFAIK điều này không thể được thực hiện theo chương trình, nhưng nó đã hoạt động với tôi.

Tôi vừa đi tới Bắt đầu -> Gỡ cài đặt chương trình và cuộn xuống cho đến khi tôi tìm thấy VC ++ có thể phân phối lại, bao gồm số phiên bản. Googling số phiên bản, cho tôi biết nó thuộc về VS2012 SP1.


2

Câu hỏi cũ nhưng đây là cách tiếp cận mà chúng tôi đã sử dụng kể từ Visual Studio 2005 thành công. Tôi cũng vừa thử nghiệm nó bằng Visual Studio 2012 Update 4 (vì cuối cùng chúng tôi cũng đang cập nhật phần mềm của mình từ năm 2010 đến năm 2012).

Vì các gói Visual C ++ Redistributable đăng ký trình gỡ cài đặt của chúng với cửa sổ (vì vậy nó hiển thị trong danh sách "Chương trình và Tính năng" của Bảng điều khiển), chúng tôi chỉ cần kiểm tra Tên hiển thị của khóa trình gỡ cài đặt trong sổ đăng ký.

Đây là mã NSIS có liên quan:

ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}\" "DisplayName"
StrCmp $0 "Microsoft Visual C++ 2012 Redistributable (x86) - 11.0.61030" vs2012redistInstalled
DetailPrint "Microsoft Visual C++ 2012 Update 4 Redistributable not found!"
DetailPrint "Downloading from www.mywebsite.com"
; insert applicable download code here
ExecWait '"<downloaded redist exe>" /promptrestart /passive'
vs2012redistInstalled:

Lưu ý rằng vì trình cài đặt của chúng tôi là exe 32 bit, các cửa sổ xử lý việc xác định xem khóa đăng ký có thực sự nằm trong Wow6432Node được ảo hóa hay không thay vì vị trí ở trên, vì vậy mã trên hoạt động trên cả cài đặt windows 64 bit và 32 bit mà không cần phải kiểm tra rõ ràng cả hai khóa.

Cũng lưu ý rằng để cập nhật mã trên lên một phiên bản khác của VC ++ Redist, chỉ cần thay đổi GUID trong đường dẫn khóa đăng ký và tên hiển thị thành bất cứ thứ gì bạn cần.

Mặc dù đây có thể không phải là phương pháp được khuyến nghị, nhưng nó đã hoạt động trên hơn 10.000 máy trong hơn 10 năm qua chạy mọi phiên bản windows từ XP / XP64 Thông qua Windows 10 bằng cách sử dụng danh sách lại cho các năm 2005, 2010, 2010sp1 và bây giờ là 2012u4.


1

Tôi sẽ kiểm tra Installedgiá trị của

HKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID} Chìa khóa

  • nơi GUID của VC++ 2012 (x86){33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
  • WOW6432Nodesẽ có mặt hoặc không tùy thuộc vào VC++ redistsản phẩm

0

Điều mà hầu hết mọi người bỏ lỡ là yêu cầu /reg:32kiểm tra khóa trên Windows x64.

Xem bài viết Trợ giúp của Microsoft về chủ đề này.

Đây là một tập lệnh trình bày cách kiểm tra chính xác Visual C ++ Redistributable cho Visual Studio 2012 Update 4.

@ECHO OFF

:Author
REM "CREATED BY WAR59312"
REM "FEB 7th 2017"

REM Clear Screen
CLS

TITLE Detect Visual C++ 2012 Redistributables

REM This Batch Script Detects If Visual C++ Redistributable for Visual Studio 2012 Update 4 Is Installed

:DetectWindowsOS
REM Are We Running On x86 Or x64
IF NOT DEFINED PROCESSOR_ARCHITEW6432 (
IF %PROCESSOR_ARCHITECTURE% EQU x86 (
REM Windows Is x86
GoTo Check32Bit
) ELSE (
REM Windows Is x64
SET NeededFor64BitOnly=/reg:32
GoTo Check64Bit
)) ELSE (
REM Windows Is Unknown But Assume x64 To Be Safe
SET NeededFor64BitOnly=/reg:32
GoTo Check64Bit
)

:Check64Bit
REM Checks If Visual C++ 64Bit Redistributable for Visual Studio 2012 Update 4 Is Installed
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x64" /v "Version" %NeededFor64BitOnly% 2>NUL^ | (
  FIND "v11.0.61030.00" >NUL
) && (
  ECHO.
  ECHO 64bit Visual C++ Redistributable for Visual Studio 2012 Update 4 Is Installed
  ECHO.
  GoTo Check32Bit
) || (
   ECHO.
   ECHO 64bit Visual C++ Redistributable for Visual Studio 2012 Update 4 Is NOT Installed
   ECHO.
   GoTo Check32Bit
)

:Check32Bit
REM Checks If Visual C++ 32Bit Redistributable for Visual Studio 2012 Update 4 Is Installed
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86" /v "Version" %NeededFor64BitOnly% 2>NUL^ | (
  FIND "v11.0.61030.00" >NUL
) && (
   ECHO.
   ECHO 32bit Visual C++ Redistributable for Visual Studio 2012 Update 4 Is Installed
) || (
   ECHO.
   ECHO 32bit Visual C++ Redistributable for Visual Studio 2012 Update 4 Is NOT Installed
)

:END
ECHO.
PAUSE

EXIT

0

Giải pháp tập lệnh powershell:

Dựa trên thông tin trong câu trả lời từ @kayleeFrye_onDeck

Tôi đã tạo một tập lệnh powershell để kiểm tra và cài đặt các phiên bản mà người dùng chỉ định, tôi chưa thực hiện thử nghiệm rộng rãi với nó, nhưng đối với kịch bản CI (Tích hợp liên tục) của riêng tôi, nó hoạt động hoàn hảo.

Toàn bộ tập lệnh và thông tin trên github

Cách tiếp cận mà tôi đã sử dụng dựa trên việc kiểm tra các khóa đăng nhập dựa trên thông tin được cung cấp ở đây. Sau đây là ý chính của những gì script thực hiện:

function Test-RegistryValue {
param (
 [parameter(Mandatory=$true)]
 [ValidateNotNullOrEmpty()]$Path,
 [parameter(Mandatory=$true)]
 [ValidateNotNullOrEmpty()]$Value
)
    try {
    Get-ItemProperty -Path "$($Path+$Value)" -ErrorAction Stop | Out-Null
        return $true
    }
    catch {
        return $false
    }
}

Việc kiểm tra / tải xuống / cài đặt âm thầm dựa trên $redistInfođó chứa thông tin đã biên dịch từ kayleeFrye_onDeck's.

$redistInstalled = Test-RegistryValue -Path $redistInfo.RegPath -Value $redistInfo.RegValue
if($redistInstalled -eq $False) {
    Invoke-WebRequest -Uri $redistInfo.DownloadUrl -OutFile $downloadTargetPath
    Start-Process -FilePath $downloadTargetPath -ArgumentList "$($redistInfo.SilentInstallArgs)" -Wait -NoNewWindow | Wait-Process
}

Tập lệnh đầy đủ và nhiều thông tin hơn có thể được tìm thấy trên github

Mọi người đều được hoan nghênh đóng góp, nếu có thời gian, tôi sẽ thực hiện thử nghiệm rộng rãi hơn đối với tập lệnh và tiếp tục cố gắng thêm các gói mới khi thông tin được thêm vào đây.


0

Thật khó để có được tất cả các giá trị đăng ký cho VC 2012 vì vậy tôi đã viết một hàm nhỏ sẽ đi qua tất cả các phụ thuộc và khớp với phiên bản được chỉ định.

public static bool IsVC2012Installed()
{
    string dependenciesPath = @"SOFTWARE\Classes\Installer\Dependencies";

    using (RegistryKey dependencies = Registry.LocalMachine.OpenSubKey(dependenciesPath))
    {
        if (dependencies == null) return false;

        foreach (string subKeyName in dependencies.GetSubKeyNames().Where(n => !n.ToLower().Contains("dotnet") && !n.ToLower().Contains("microsoft")))
        {
            using (RegistryKey subDir = Registry.LocalMachine.OpenSubKey(dependenciesPath + "\\" + subKeyName))
            {
                var value = subDir.GetValue("DisplayName")?.ToString() ?? null;
                if (string.IsNullOrEmpty(value)) continue;

                if (Regex.IsMatch(value, @"C\+\+ 2012")) //here u can specify your version.
                {
                    return true;
                }
            }
        }
    }

    return false;
}

Sự phụ thuộc:

using System.Text.RegularExpressions;
using Microsoft.Win32;
using System.Linq;

-5

bạn có thể tìm kiếm trong sổ đăng ký. Thực tế tôi không có vs2012 nhưng tôi có vs2010.

Có 3 khóa đăng ký khác nhau (nhưng rất giống nhau) cho mỗi gói trong số 3 gói nền tảng. Mỗi khóa có một giá trị DWORD được gọi là “Đã cài đặt” với giá trị là 1.

  • HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ VC \ VCRedist \ x86

  • HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ VC \ VCRedist \ x64

  • HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ VC \ VCRedist \ ia64

Bạn có thể sử dụng chức năng đăng ký cho điều đó ......


1
Tôi đã viết rằng ở dòng đầu tiên "Rằng tôi không có VS2012". Vì vậy, không cần phải bàn luận này ............. Và đây là chỉ cho VS2010
Vikky

1
Bạn đã lưu ý điều đó, nhưng có vẻ như bạn đang gợi ý rằng giải pháp của bạn cũng có thể hoạt động cho VS2012 vì đó là câu hỏi của OP (nhưng không thể xác minh vì bạn không có VS2012). Tôi chỉ đơn giản nói rằng cách tiếp cận này, trên thực tế, không hoạt động với VS2012 kể từ khi tôi kiểm tra nó.
StellarEleven

Tại sao lại bỏ phiếu cho câu trả lời của tôi ...... Tôi đã viết rõ ràng rằng nó là cho vs2012 ... và điều này được người dùng chấp nhận làm câu trả lời .... vậy tại sao ???????????
vikky

1
Có vẻ như với một hệ điều hành x64 bit, giá trị này nằm ởHKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\...
bas

1
Các khóa của VS 2012 là HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 11.0 \ VC \ RunTimes ____ HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 11.0 \ VC \ RunTimes ___
Adam L
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.