पता लगाएँ कि क्या Visual C ++ Redistributable for Visual Studio 2012 स्थापित है


109

विजुअल C ++ Redistributable Visual Studio 2012 स्थापित है या नहीं, इसका पता कैसे लगाया जाए?

मैंने Google की कोशिश की और किसी ने भी यह सवाल नहीं पूछा, आश्चर्य!


1
बहु-थ्रेडेड [डिबग] dll के बजाय बहु-थ्रेडेड [डिबग] को कोड जनरेशन को C ++> कोड जनरेशन में सेट करके उस निर्भरता को क्यों नहीं हटाया जाए? मैं सिर्फ निर्भरता को हटाकर रनटाइम रेडिस्ट इंस्टॉलेशन के मुद्दे को हल करता हूं।
केम कल्याणको

मुझे पता चला कि परीक्षण और त्रुटि के द्वारा पैकेजों का पता कैसे लगाया जाए। काश कोई जादू की गोली होती, लेकिन अगर वहाँ है, तो मैंने अभी तक नहीं पाया है। मुझे कुछ विशिष्ट रिडिस्ट के लिए नीचे एक उत्तर मिला है जो वर्तमान में उनमें से अधिकांश के साथ मदद करने के लिए 100% समय काम करने लगता है ।
kayleeFrye_onDeck

3
कृपया kayleeFrye_onDeck द्वारा स्वीकृत उत्तर को बदलने पर विचार करें। मैंने एक विश्वसनीय पद्धति की तलाश में उम्र बिताई है और यह एक प्रतीत होता है, मुझे लगता है कि अन्य सभी अविश्वसनीय जवाबों के साथ यह बहुत से लोगों को सही जानकारी खोजने में मदद करेगा
म्यूज़फ़ैन

दृश्य स्टूडियो 2017 रनटाइम्स के लिए एक अद्यतन प्रतीत होता है: 14.10.V25017। लिंक: go.microsoft.com/fwlink/?LinkId=746572 क्या आप रजिस्ट्री मूल्यों को अपडेट कर सकते हैं?
कारेल वर्गावे

जवाबों:


172

यह निर्भर करता है कि आप किस संस्करण का उपयोग कर रहे हैं। इन दो 2012 कुंजियों ने अपडेट 4. डाउनलोड करने के लिए अपने संबंधित संस्करणों के साथ मेरे लिए अच्छा काम किया है। कृपया ध्यान रखें कि इनमें से कुछ स्थान ओएस-निर्भर हो सकते हैं। मैंने यह जानकारी विंडोज 10 x64 बॉक्स से एकत्र की है । मैं बस आगे बढ़ने जा रहा हूं और इन सभी रेडिस्ट संस्करणों को डंप कर रहा हूं और इंस्टालेशन का पता लगाने के लिए मेरे द्वारा खोजे जाने वाले रेज कुंजी।


विजुअल C ++ 2005

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

डायरेक्ट डाउनलोड URL: 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: https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE


विजुअल 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: 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: https://download.microsoft.com/download/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe


दृश्य C ++ 2010

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

डायरेक्ट डाउनलोड URL: 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: https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe


विजुअल 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: https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_b64.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: https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_b86.exe

संस्करण चेतावनी : प्रति उपयोगकर्ता वाई हा ली के निष्कर्ष, "... VC ++ 2012 अद्यतन 4 ( 11.0.61030.0) के साथ आने वाले बायनेरिज़ 11.0.60610.1में ATL और MFC बायनेरिज़ के लिए संस्करण है , और 11.0.51106.1बाकी सब के लिए, जैसे msvcp110.dll और msvcp110.dll । .. "


विजुअल 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: 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: https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe


विजुअल C ++ 2015

विकल्प के रूप में 2015-2019 बंडल का उपयोग करने पर विचार करें

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

डायरेक्ट डाउनलोड यूआरएल: https://download.microsoft.com/download/6/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: https://download.microsoft.com/download/6/A/6AA4EDFF-645B-48C5-81CC-ED5963AEAD48/vc_redist.x86.exe


विजुअल C ++ 2017

विकल्प के रूप में 2015-2019 बंडल का उपयोग करने पर विचार करें

कैविएट : या तो एक नया 2017 रजिस्ट्री सम्मेलन का उपयोग किया जा रहा है, या इसे अंतिम रूप नहीं दिया गया है, फिर भी। जैसा कि मैं अनुमान लगा रहा हूं कि सबसे ऊपरी कुंजी: [HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle] और [HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle]

परिवर्तन के अधीन हैं, या कम से कम अलग-अलग नेस्टेड GUID हैं, मैं एक 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: https://download.visualstudio.microsoft.com/download/pr/9fbed7c7-7012-4cc0-a0a3-a541f51981b5/e7eec152788444444e26d7e32cef34a34c/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: https://download.visualstudio.microsoft.com/download/pr/d0b808a8-aa78-4250-8e54-49b8c23f7328/9c5e65320555586367ee61aafb3313c95/vc_redist.x86.exe


विजुअल C ++ 2019 ( 2015-2019 बंडल )

कैविएट : विजुअल C ++ 2019 के लिए एक और नया रजिस्ट्री कन्वेंशन का उपयोग किया जा रहा है। विजुअल C ++ 2019 के लिए एक स्टैंडअलोन इंस्टॉलर भी नहीं दिखता है, केवल यह बंडल इंस्टॉलर है जो 2019 के माध्यम से विजुअल C ++ 2015 है।

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: https://download.visualstudio.microsoft.com/download/pr/9e04d214-5a9d-4515-9960-3d71398d98c3/1e1e62ab57bbbbbb5151e8ce88f040be/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: https://download.visualstudio.microsoft.com/download/pr/c8edbb87-c7ec-4500-a461-71e8912d25e9/99ba493d660599090bb8b3211d2cae4/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: https://download.visualstudio.microsoft.com/download/pr/0c1cfec3-e028-4996-8bb7-0c751ba41e32/1abed1573f36075ffdfc538a2af00d37/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: https://download.visualstudio.microsoft.com/download/pr/cc0046d4-e7b4-45a1-bd46-b1c079191224/9c4042a4c6e6d1f66cf4ccc4d129e9/vc_redist.x64


चांगेलोग :
१ ९ अगस्त २०१ ९ - २०१५-२०१५ के बंडल संस्करण का नया संस्करण जोड़ा गया
१३ जून २०१ ९ - २०१५-२०१९ के बंडल संस्करण के लिए एक नया खंड जोड़ा गया 14.21.27702और २०१५ और २०१ 19th के छोटे नोटों को जोड़ा गया जिसके उपयोग पर विचार किया गया। एक विकल्प के रूप में नया बंडल।
14 दिसंबर, 2018 - 9.0.30729.6161जिम वोलफ के निष्कर्षों के अनुसार सर्विस पैक 1 के अपडेट के
लिए MSVC2008 को अपडेट किया गया 27 नवंबर, 2018 - MSVC2017 बनाम 14.16
सितंबर 12, 2018 के लिए अपडेटेड जानकारी - वर्जन हाऊ ली के निष्कर्षों में
24 अगस्त 2012 को अपडेट किए गए संस्करण कैविएट को 24 अगस्त। 2018 - अपडेटेड 2017 का संस्करण 14.15.26706, अपडेटेड विजुअल C ++ निर्भरताएँ VS 2017 15.8.1 के साथ पैक किया गया
16 मई, 2018 - अपडेट किया गया 2017 का संस्करण 14.14.26405.0 के लिए नई C ++ 2017 प्रविष्टि
8 सितंबर, 2017 के रूप में - अपडेट किया गया 2017 का संस्करण 14.11.25325.0 के लिए नए विज़ुअल C ++ 2017 प्रविष्टि
7 अप्रैल, 2017 के रूप में - अपडेट किया गया 2017 का संस्करण 14.10 .25008.0 नए विज़ुअल C ++ 2017 प्रविष्टि के रूप में
24 अक्टूबर, 2016 - 14.0.24215.1
अगस्त 18, 2016 के लिए 2015 के संस्करण की जानकारी अपडेट की गई - 14.0.24212
मई 27, 2016 के लिए 2015 के संस्करण की जानकारी - MSVC2015 अपडेट 2 के बारे में अद्यतन जानकारी

अगर इनमें से कोई भी पुराना हो जाता है, तो कृपया मुझसे यहां संपर्क करें।


4
यह पूर्ण है। यह केवल एक ही है जो मैंने पाया है कि जब विजुअल स्टूडियो स्थापित होता है या रनटाइम अनइंस्टॉल किया जाता है तो झूठी सकारात्मकता नहीं देता है।
AN

2
VS2015 प्री अपडेट 1 का GUID {74d0e5db-b326-4dae-a6b2-445b9de1836e} है, इसलिए आप इस तंत्र का उपयोग करके अचार में मिल सकते हैं। भविष्य के हर अपडेट के लिए! अपडेट 1 स्थापित करने के साथ पूर्व अद्यतन 1 वीसीआरडिस्ट को लॉन्च करने से मुझे एक त्रुटि मिली - इसलिए मैं वीसी इंस्टॉलर reg कुंजी का उपयोग करने जा रहा हूं - यदि आप वीसीआरडिस्ट का उपयोग करते हैं तो यह ठीक लगता है?
जाइल्समिडलटन

4
दुर्भाग्य से इसमें VCREDIST 14.0 अपडेट 2 शामिल नहीं है - हम आगे की संगतता के साथ कैसे व्यवहार करते हैं (एक ही समय के नए, सफल संस्करण का पता लगाना)
शॉन विल्सन

2
@ManjunathBabu, मुझे विश्वास नहीं है कि विजुअल C ++ पुनर्वितरण इंस्टालर के लिए रजिस्ट्री सम्मेलनों के संबंध में कोई बाहरी दस्तावेज है। मैंने सिर्फ यह देखा कि वे वास्तव में इस योजना को 2017 के लिए इस समय के आसपास कुछ का पालन करने के लिए लग रहे थे, बजाय एक और GUID को फेंकने के बजाय एक सार्थक मूल कुंजी नाम के। अब तक, उन्होंने 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
विजुअल C ++ 2017 का नया पैकेज रजिस्ट्री पथ को बदल देता है (संस्करण 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

प्रयत्न

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

एक प्रारंभिक बिंदु के रूप में। मैं इसे वीसी ++ 11 (वीएस 2012) रनटाइम स्थापित करने के लिए एक चेक के रूप में उपयोग कर रहा हूं।


7
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ DevDiv \ vc \ Servicing \ 11.0 \ RuntimeMinimum \ Install को 1 में सेट किया जाना चाहिए
एलेक्स स्पेंस

3
32-बिट (उर्फ x86) के लिए कुंजी यहां स्थित है:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VC\Servicing\11.0\RuntimeMinimum
कोडफॉक्स

@kayleeFrye_onDeck क्या आपने पाया है कि यह कैसे करना है? मैं अभी भी एक विश्वसनीय तरीके की तलाश कर रहा हूं, लेकिन इस पृष्ठ के किसी भी उत्तर ने मेरे लिए काम नहीं किया है
AN

स्वीकार किए गए एक से बेहतर जवाब, क्योंकि यह पैकेज UUID पर निर्भर नहीं करता है, हर पैच Microsoft के लिए बदलने की संभावना है
jpo38

25

आप इस रजिस्ट्री स्थान में Installedहोने के लिए मूल्य की जांच कर सकते हैं 1: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x8664-बिट सिस्टम पर। कोड में जिसके परिणामस्वरूप रजिस्ट्री कुंजी को एक्सेस किया जाएगा HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86। की अनुपस्थिति पर ध्यान दें Wow6432Node

32-बिट सिस्टम पर रजिस्ट्री बिना समान है Wow6432Node:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VC\Runtimes\x86


मेरे पास 2012 वीसी ++ रनटाइम के साथ 32-बिट Win7 मशीन है और मेरे पास यह reg कुंजी नहीं है।
ब्रायनज

क्या आप सुनिश्चित हैं कि आपके पास `HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 11.0 \ VC \ 'नहीं है? तुम्हारे पास क्या है?
माइक डी क्लार्क

2
मेरे पास है HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\11.0\VCलेकिन मेरे पास Runtimesचाबी नहीं है । मेरे पास डेव के उत्तर की कुंजी है HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\11.0
ब्रायनज

@BryanJ Odd कि प्रत्येक प्रणाली इतनी भिन्न हो सकती है ... इस उपयोगी जानकारी को जोड़ने के लिए धन्यवाद
माइक डी क्लार्क

3
मजेदार कहानी और एमएस से कोई वास्तविक जानकारी नहीं। मुझे लगता है कि आपके पास अब तक का सबसे अच्छा जवाब है। Vatredist को relativley Fresh VM पर स्थापित करने के लिए परीक्षण किया गया और यह एकमात्र कुंजी है जो मुझे बाद में मिली। तो मेरी तरफ से अंगूठा
लगाओ

12

विजुअल C ++ के साथ शिप किए गए बूटस्ट्रैपर पैकेज मेनिफ़ेस्ट में कोई इंस्टॉलचेक तत्व नहीं है। यदि आप इसे किसी शर्त के रूप में सेट करते हैं, तो Microsoft हमेशा स्थापित करना चाहता है।

बेशक आप अभी भी MsiQueryProductState को यह जांचने के लिए कॉल कर सकते हैं कि क्या VC Redist पैकेज MSI के माध्यम से स्थापित किया गया है, पैकेज कोड को चलाकर पाया जा सकता है

wmic product get

कमांड लाइन पर, या यदि आप पहले से ही wmic पर हैं: root \ cli, चलाएँ

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

10

इस सरल सवालों का जवाब दुर्भाग्य से एक साधारण नहीं है, लेकिन सभी प्रणालियों के 100% में काम कर रहा है, और यहां तक ​​कि कई .net चौखटे के लिए विस्तार योग्य है।

जटिलता इस तथ्य से आती है कि वहाँ (और थे) कई वीसी रनटाइम्स संशोधन हैं जो इस मामले को जन्म दे सकते हैं कि हालांकि वीसी 10 रनटाइम्स स्थापित किए गए थे, उनका निर्माण संख्या हाल ही में पर्याप्त नहीं था इसलिए आपका एक्सई शुरू नहीं होगा जब तक कि आप या तो बहुत स्थापित न करें सटीक रनटाइम्स जो आपको चाहिए या नए रनटम्स में से एक जो इसके साथ चलने के लिए एक ही प्रमुख संस्करण के लिए इस और पिछले संस्करणों को सक्षम करता है (साइड-बाय-साइड नरक)। इसके अलावा, यदि आपके पास 64 बिट EXE है, तो आपको 32 और 64 बिट रनटाइम दोनों की जांच करनी होगी।

उस ने कहा, यह निर्धारित करने का एकमात्र विश्वसनीय तरीका है कि आपके EXE के लिए रनटाइम स्थापित हैं या नहीं , EXE को चलाने का प्रयास करें - या एक अन्य EXE जो आपके मुख्य EXE के समान सेटिंग्स के साथ बनाया गया है और जिसका एकमात्र उद्देश्य कुछ भी नहीं है। बस चलाएं (जिसका अर्थ है कि रनटाइम्स स्थापित हैं) या चलाने में विफल (जब स्थापित नहीं)।

मैंने एक इंस्टॉलर के लिए निम्नलिखित किया था जिसमें वीसी 10 32 और 64 बिट रनटाइम स्थापित करने की आवश्यकता थी: इंस्टॉलर सभी डमी एक्सई को लॉन्च करने का प्रयास करता है और यदि यह सफल होता है, तो इसी रनटाइम को स्थापित किया जाना माना जाता है। यह 32/64 बिट परिदृश्य को भी हल करता है।

यह, वैसे, यह निर्धारित करने के लिए भी काम करता है कि क्या उचित .net फ्रेमवर्क स्थापित किया गया है, जो कि विंडोज 8 और 10 में बहुत मुश्किल है, क्योंकि डाउनलोड करने योग्य अंतर्निहित .net 3.5 समर्थन भी .net संस्करण 3.0 और 2.0 का समर्थन करता है - वहाँ। इन के लिए कोई रजिस्ट्री प्रविष्टियाँ नहीं हैं। (और इससे भी बदतर, आप यहां मानक फ्रेमवर्क इंस्टॉलर का उपयोग भी नहीं कर सकते हैं, आपको अंतर्निहित समर्थन का उपयोग करना होगा और इसे विंडोज के माध्यम से डाउनलोड करना होगा, या अपने ऐप को .net 4 के साथ पुनर्निर्माण करना चाहिए, लेकिन यह एक और कहानी है)।

C ++ डमी EXE को निम्न कोड के साथ एक परियोजना का उपयोग करके बनाया जा सकता है (और यदि आवश्यक हो तो 64 बिट कॉन्फ़िगरेशन में एक और):

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

एक साझा DLL में MFC का उपयोग करने के लिए MFC का उपयोग प्रोजेक्ट के गुण सेट करना याद रखें । निष्पादनयोग्य आकार में लगभग 4KB होगा - एक निश्चित परिणाम के लिए भुगतान करने के लिए एक छोटी सी कीमत।

अपने उपयोगकर्ताओं को एक अच्छा इंस्टॉलेशन अनुभव देने के लिए, आप निम्न कार्य कर सकते हैं ( NSIS के लिए नमूना कोड ):

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

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

और इसे एक फ़ंक्शन में कॉल करें, उदाहरण के लिए 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

फिर रनटाइम चेक लॉन्च करें जैसे कि वेलकम पेज को छोड़ कर परिणाम को कैश करें, इसलिए आपको हर बार उपयोगकर्ता को "बैक" और "नेक्स्ट" बटन पर क्लिक करने की दोबारा जांच नहीं करनी होगी।

इसके बाद, इंस्टॉल ट्री में एक रीड-ओनली सेक्शन बनाएं और इसे एक फंक्शन पर प्री-सेलेक्ट करें या अनसेलेक्ट करें, जो कंपोनेंट पेज दिखाए जाने से पहले निष्पादित हो ।

यह सुनिश्चित करेगा कि प्रत्येक लापता रनटाइम घटक की स्थापना अनिवार्य है, और अगर यह पहले से मौजूद है तो छोड़ दिया जाता है।


सहायक टिप के लिए धन्यवाद, क्या आपको याद है कि किस प्रकार का प्रोजेक्ट बनाना है? वी.एस. के पास उनमें से चुनने के लिए बहुत से :-) हैं।
ग्रीनल्डमैन

9

चूंकि विजुअल स्टूडियो 2010 और बाद में WinSxS का उपयोग करना बंद कर दिया गया है, इसलिए यह केवल% windir% \ system32 \ msvcr110.dll की जाँच करने के लिए पर्याप्त हो सकता है। यदि आप सत्यापित करना चाहते हैं कि आपके पास एक नया पर्याप्त संस्करण है, तो आप जांच सकते हैं कि फ़ाइल संस्करण 11.0.50727.1 (VS2012 RTM) या 11.0.51106.1 (VS2012 अपडेट 1) है या नहीं।


+1 यह सरल और अधिक मूर्ख है। रजिस्ट्री कुंजियाँ सभी ठीक हैं और ऐसी हैं, लेकिन यदि उपयोगकर्ता ने सिस्टम के साथ गड़बड़ की है और msvcr110.dll को हटा दिया है तो रजिस्ट्री जाँच बेकार है। हालाँकि, आपको (msvcr110.dll, msvcp110.dll, mfc, ...) सभी घटकों की जाँच करना सबसे अच्छा है। और अपडेट 3 के लिए संस्करण 11.0.60610.1 है।
10

ठीक है कि पिछले बिट पर ध्यान न दें: लगता है कि केवल इंस्टॉलर 11.0.60610.1 है, crt dlls का संस्करण अभी भी 11.0.51106.1 है
stijn

फिर .dll 11.0.51106.1 है, भले ही मेरे पास vs2012 sp4 स्थापित है
Blub

यह काम नहीं करेगा। मैंने 2005-2015 की स्थापना रद्द की, और मेरे पास अभी भी 60, 100, 110, 120 और 140 के लिए msvc फाइलें हैं।
kayleeFrye_onDeck

ध्यान दें कि VC ++ 2012 अपडेट 4 ( 11.0.61030.0) के साथ आने वाले बायनेरिज़ 11.0.60610.1में ATL और MFC बायनेरिज़ के लिए संस्करण है , और 11.0.51106.1बाकी सब के लिए, जैसे msvcp110.dll और msvcr110.dll। यकीन नहीं है कि क्यों। आप इसकी पुष्टि कर सकते हैं (विंडोज 10 मशीनों पर मैंने इसका परीक्षण किया है) पर जाकर C:\ProgramData\Package Cache\{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}v11.0.61030\packages\vcRuntimeMinimum_x86और C:\ProgramData\Package Cache\{B175520C-86A2-35A7-8619-86DC379688B9}v11.0.61030\packages\vcRuntimeAdditional_x86फिर .cab फाइलों की फाइलों का निरीक्षण किया।
वाई हा ली

5

मैं इस सवाल पर आया था कि वाईएक्सएक्स द्वारा बनाए गए एमएसआई इंस्टॉलर के एक भाग के रूप में विजुअल सी ++ पुनर्वितरण के लिए जाँच के संदर्भ में उत्तर की तलाश में था।

मुझे यह पसंद नहीं आया कि संस्करण और ऑपरेटिंग सिस्टम के साथ GUID का परिवर्तन कैसे हुआ, इसलिए मैंने विजुअल C ++ के पुनर्वितरण के लिए जाँच करने के लिए C # में लिखी गई एक कस्टम क्रिया का निर्माण किया।

नीचे सब कुछ विशेष रूप से विजुअल C ++ 2015 Redistributable (x64) के लिए है, लेकिन इसे किसी भी संस्करण के लिए आसानी से संशोधित किया जा सकता है।

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;
        }
    }
}

फिर 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>

संपादित करें मैं एक कस्टम क्रिया बनाने और उपयोग करने पर कुछ मूल जानकारी के साथ इस उत्तर को अपडेट कर रहा हूं।

विजुअल स्टूडियो 2017 में वाईएक्स टूलसेट विजुअल स्टूडियो 2017 एक्सटेंशन के साथ कस्टम एक्शन बनाने के लिए, मैंने कस्टम एक्शन (वाईएक्स वी 3 के लिए सी # कस्टम एक्शन प्रोजेक्ट) बनाने के लिए प्रोजेक्ट टेम्पलेट का उपयोग किया।

मैंने जेनरेट की गई परियोजना की जाँच की और ऐसा लगा कि इस लेख की शुरुआत में पहले से ही बदलाव सूचीबद्ध हैं: https://www.codeproject.com/Articles/132918/Creating-Custom-Action-for-WIX-Written-in-Managed इसलिए मैंने उस लेख को अनुभाग में उठाया Adding Custom Action to the Installerऔर कुछ ट्विक्स के साथ इसका अनुसरण किया।

एक अन्य चीज जो मैंने किया था वह .NET फ्रेमवर्क का संस्करण बदल गया था जो कि परियोजना 3.5 के खिलाफ बनाया गया है।

मुझे यह वास्तव में उपयोगी नहीं लगा, लेकिन आप http://wixtoolset.org/documentation/manual/v3/wixdev/extensions/authoring_custom_actions.html भी देख सकते हैं


4

मेरे लिए इस स्थान ने काम किया: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ DevDiv \ vc \ Servicing \ 11.0 \ RuntimeMinimum \ संस्करण

पैकेज स्थापित करने के बाद आपके पास क्या संस्करण है और अपने इंस्टॉलर में एक शर्त के रूप में उपयोग करें। (मेरा कुलपति स्थापित करने के बाद 11.0.50727 पर सेट है)।


यह उत्तर वास्तव में वही है जो हम खोज रहे थे (बनाम अन्य उत्तर यहां, जो रनटाइम के बारे में कम हैं, और विज़ुअल के बारे में अधिक, दुर्भाग्य से।)
शॉन विल्सन

यह उत्तर काम नहीं करता है, क्योंकि यह कुंजी तब मौजूद है जब आपने रिडिस्ट को अनइंस्टॉल कर दिया है।
kayleeFrye_onDeck

4

बस कंट्रोल पैनल> प्रोग्राम्स और फीचर्स पर जाएं, और वे सभी वहां सूचीबद्ध हैं।

मैं कोई विशेषज्ञ नहीं हूं और यह उत्तर उन लोगों की तुलना में बहुत सरल है जो लोग उत्तर दे रहे हैं (रजिस्ट्री की जाँच कर रहे हैं), इसलिए मुझे यकीन नहीं है कि यह सही उत्तर है, लेकिन इसने मेरे लिए चाल चली।

कार्यक्रम और विशेषताएं


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

मैंने InnoSetup के साथ ऐसा करने का मुकदमा किया है।

मैंने रजिस्ट्री कुंजी के अस्तित्व की जाँच की:

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

यदि स्थापना रद्द की जाती है, तो यह मौजूद नहीं है। यदि स्थापित है, यह मौजूद है।

वैसे, यह Wow6432Node में भी हो सकता है:

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


यह असत्य है। जब वे अनइंस्टॉल हो गए हों, तो दोनों स्थानों पर कीज़ मौजूद हैं।
kayleeFrye_onDeck 19

1
@kayleeFrye_onDeck हां ... मुझे आपसे सहमत होना चाहिए। लेकिन वास्तव में, जब मैंने पहली बार कोशिश की, तो यह सफल रहा। लेकिन हाल ही में जैसा आपने कहा वैसा ही है। मुझे नहीं पता कि ऐसा क्यों है।
फंदी सुसंतो

3

MsiQueryProductState के माध्यम से उत्पाद के लिए स्थापित स्थिति की जाँच करना रजिस्ट्री की सीधे जाँच करने के बराबर है, लेकिन आपको अभी भी ProductCode के लिए GUID की आवश्यकता है ।

जैसा कि कहीं और उल्लेख किया गया है, इन दृष्टिकोणों के साथ एक खामी यह है कि प्रत्येक अद्यतन का अपना उत्पादकोड है!

शुक्र है, MSI एक UpgradCode प्रदान करता है जो उत्पादों के एक 'परिवार' की पहचान करता है । आप इस जानकारी को निकालने के लिए किसी एक MSI को खोलने के लिए ओर्का का उपयोग कर सकते हैं। उदाहरण के लिए, VS2015 के पुनर्वितरण के लिए अपग्रेडकोड ​​है{65E5BD06-6392-3027-8C26-853107D3CF1A}

उस UpgradCode के लिए सभी उत्पाद ID प्राप्त करने के लिए आप MsiEnumRelatedProducts का उपयोग कर सकते हैं । व्यवहार में, चूंकि प्रत्येक रिडिस्ट अपडेट पिछले एक को बदल देता है, इसलिए यह केवल एक {B5FC62F5-A367-37A5-9FD2-A6E137C0096F}उत्पादकोड प्राप्त करेगा - जैसे कि VS2015 अपडेट 28686।

भले ही, आप तब MsiGetProductInfo के माध्यम से संस्करण की जांच कर सकते हैं (productCode, INSTALLPROPERTY_VERSIONSTRING, ...) या इसी तरह के कार्यों को आप जिस संस्करण से चाहते हैं उसकी तुलना कर सकते हैं, जैसे कि समतुल्य या बाद के संस्करण के लिए जाँच करें।

ध्यान दें कि एक सी ++ आवेदन के भीतर, आप भी उपयोग कर सकते हैं _VC_CRT_MAJOR_VERSION, _VC_CRT_MINOR_VERSION, _VC_CRT_BUILD_VERSIONयदि आप #include <crtversion.h>- इस तरह से आप की गणना सीआरटी संस्करण है कि आपके द्विआधारी साथ बनाया गया था निर्धारित कर सकते हैं।


आपको यह जानकारी कैसी लगी? और यह है कि x86 संस्करण या x64 संस्करण के लिए UpgradCode?
बेन

आप msi को खोलने और UpgradCode को निकालने के लिए Orca का उपयोग कर सकते हैं। यहाँ दिया गया x86 कम से कम है। जहां तक ​​मुझे बाकी जानकारी मिली है, यह प्राथमिक स्रोत से बहुत अधिक है; मैं विशेष रूप से रेडिस्ट के बारे में इस दृष्टिकोण के अन्य संदर्भ ऑनलाइन नहीं पा सका, लेकिन MSI इंस्टॉलरों के साथ UpgradCode / पारिवारिक पैटर्न आम है।
adzm

मुझे ओर्का के बारे में पता है। समस्या को उस MSI के साथ क्या करना है। मुझे सीधे इसे एक्सेस करने के तरीके का पता नहीं है। एकमात्र तरीका जो मुझे पता है कि किसी भी तरह से इसे c: \ Windows \ Installer निर्देशिका में ढूंढना है। मेरे पास उस निर्देशिका में 1,000 से अधिक फाइलें हैं। फ़ाइलों को बेतरतीब ढंग से नाम दिया गया है। एमएसआई सही है यह निर्धारित करने का एकमात्र तरीका विवरण को देखना है। इसमें एक्सप्लोरर में 1,000 फ़ाइलों पर Alt + Enter मारना या 1,000 फ़ाइलों के विवरण को डंप करने के लिए एक टूल का उपयोग करना शामिल है।
बेन कुंजी

हाँ! मैंने देखा। HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UpgradCodes के भीतर, यदि आप Productcode जानते हैं, तो आप पथ या अपग्रेडबॉक्सेज़ को खोजने के लिए रजिस्ट्री को भी खोज सकते हैं। हालाँकि आपको बाकी का पता लगाने के लिए WMIC (या msi db के लिए कुछ अन्य प्रोग्रामेटिक एक्सेस) का उपयोग करने की आवश्यकता हो सकती है। वर्मी प्रोडक्ट मिलता है / फॉर्मेट: सीएसवी एक सीएसवी को डंप करेगा जिसे आप खोज सकते हैं - इसमें दिए गए मानों में एमएसआई पथ हैं। आप एक बेहतर स्क्रिप्ट लिख सकते हैं मुझे यकीन है लेकिन यह आपको अपने रास्ते पर लाने के लिए पर्याप्त होना चाहिए।
adzm

3

इस PowerShell कोड को ट्रिक करना चाहिए

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

क्योंकि उत्पाद कोड का एक गुच्छा हार्डकोड उड़ान भरने के लिए नहीं जा रहा था, इसलिए हम भी एक रजिस्ट्री के साथ प्रत्येक प्रविष्टि के "productname" की जाँच करते हुए रजिस्ट्री की गणना करते हैं, हम तब वर्जनमोर / वर्जनमाइनर की जांच करते हैं (जो कि हम वास्तव में परवाह करते हैं) का मूल्य है हमें एक एकल निर्माण करने की अनुमति देने और यह जानने के लिए कि यह किसी दिए गए vcredist संस्करण के सर्विसिंग जीवन पर काम करना जारी रखेगा। यहाँ आशय स्पॉट-ऑन है, लेकिन NSIS या WinAPI- आधारित इंस्टॉलर जैसे टूलसेट के लिए लिप्यंतरण की आवश्यकता हो सकती है।
शॉन विल्सन

2

मुझे उसी चीज की जरूरत थी, और हालांकि AFAIK यह प्रोग्रामेटिक रूप से नहीं किया जा सकता है, यह मेरे लिए काम करता है।

मैं अभी शुरू हुआ -> एक प्रोग्राम को अनइंस्टॉल करता हूं, और जब तक मुझे VC ++ पुनर्वितरण नहीं मिला, तब तक नीचे स्क्रॉल किया गया, जिसमें एक संस्करण संख्या शामिल है। संस्करण संख्या को देखते हुए, मुझे बताया कि यह VS2012 SP1 का है।


2

पुराना प्रश्न लेकिन यहाँ वह दृष्टिकोण है जिसका उपयोग हमने विजुअल स्टूडियो 2005 के बाद से सफलता के साथ किया है। मैंने अभी इसे विजुअल स्टूडियो 2012 अपडेट 4 का उपयोग करके परीक्षण किया है (क्योंकि हम अंततः 2010 से 2012 तक अपने सॉफ़्टवेयर को अपडेट कर रहे हैं)।

चूंकि दृश्य C ++ Redistributable संकुल अपने अनइंस्टालर को विंडोज़ के साथ पंजीकृत करता है (इसलिए यह कंट्रोल पैनल "प्रोग्राम्स और फीचर्स" सूची में दिखाई देता है), हम केवल रजिस्ट्री में अनइंस्टालर कुंजी के प्रदर्शन नाम की जांच करते हैं।

यहाँ प्रासंगिक NSIS कोड है:

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:

ध्यान दें कि चूंकि हमारा इंस्टॉलर 32bit का एक्सई है, इसलिए विंडोज़ यह निर्धारित करता है कि रजिस्ट्री कुंजी वास्तव में उपरोक्त स्थान के बजाय वर्चुअलाइज्ड Wow6432Node में है, इसलिए उपरोक्त कोड 64 बिट और 32 बिट दोनों विंडो पर काम करता है, बिना इन चाबियों को स्पष्ट रूप से जांचे बिना।

यह भी ध्यान दें कि उपरोक्त कोड को वीसी ++ रेडिस्ट के एक अलग संस्करण में अपडेट करने के लिए, बस रजिस्ट्री कुंजी पथ में GUID और जो भी आपको चाहिए, प्रदर्शन नाम बदलें।

हालांकि यह अनुशंसित तरीका नहीं हो सकता है, इसने पिछले 10 वर्षों में 10,000 से अधिक मशीनों पर काम किया है। 2005, 2010, 2010sp1 और अब 2012u4 के लिए रिडिस्ट का उपयोग करके Windows 10 के माध्यम से XP / XP64 से विंडोज़ के हर स्वाद को चलाने के लिए।


1

मैं के Installedमूल्य की जाँच करेगा

HKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID} चाभी

  • जहां का GUID VC++ 2012 (x86)है{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}
  • WOW6432NodeVC++ redistउत्पाद के आधार पर मौजूद होगा या नहीं

0

/reg:32विंडोज x64 पर कुंजी की जांच के लिए अधिकांश लोगों को क्या याद रखना आवश्यक है।

इस विषय पर Microsoft सहायता आलेख देखें ।

यहाँ एक स्क्रिप्ट है जो दृश्य स्टूडियो 2012 अद्यतन 4 के लिए विजुअल C ++ पुनर्वितरण के लिए सही तरीके से जांचने का तरीका प्रदर्शित करती है।

@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

पटकथा पटकथा समाधान:

@KayleeFrye_onDeck से उत्तर में जानकारी के आधार पर

मैंने एक पॉवरशेल स्क्रिप्ट बनाई है जो उपयोगकर्ता द्वारा निर्दिष्ट संस्करणों की जांच और स्थापित करता है, मैंने इसके साथ व्यापक परीक्षण नहीं किया है, लेकिन मेरे अपने CI (कंटीन्यूअस इंटीग्रेशन) परिदृश्य के लिए यह पूरी तरह से काम करता है।

पूरी स्क्रिप्ट और जानकारी github पर

मैं जिस दृष्टिकोण का उपयोग करता था, वह यहां दी गई जानकारी के आधार पर रजिस्टरों की जांच पर आधारित था। निम्नलिखित वह स्क्रिप्ट है जो स्क्रिप्ट करती है:

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
    }
}

जाँच / डाउनलोड / चुपचाप स्थापित $redistInfoजिसके आधार पर 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
}

पूरी स्क्रिप्ट और अधिक जानकारी जीथूब पर मिल सकती है

किसी का भी योगदान करने के लिए स्वागत है, अगर मेरे पास समय है तो मैं स्क्रिप्ट का अधिक व्यापक परीक्षण करूंगा और नए पैकेज जोड़ने की कोशिश करता रहूंगा क्योंकि यहां जानकारी जोड़ी जाती है।


0

वीसी 2012 के लिए सभी रजिस्ट्री मान प्राप्त करना कठिन है, इसलिए मैंने एक छोटा फ़ंक्शन लिखा है जो सभी निर्भरता से गुजरता है और निर्दिष्ट संस्करण पर मेल खाता है।

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;
}

निर्भरता:

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

-5

आप रजिस्ट्री में खोज सकते हैं। आमतौर पर मेरे पास vs2012 नहीं है, लेकिन मेरे पास vs2010 है।

3 प्लेटफ़ॉर्म पैकेज में से प्रत्येक के लिए 3 अलग (लेकिन बहुत समान) रजिस्ट्री कुंजियाँ हैं। प्रत्येक कुंजी में एक DWORD मान है जिसे 1 के मान के साथ "इंस्टॉल किया गया" कहा जाता है।

  • HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ कुलपति \ VCRedist \ x86

  • HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ कुलपति \ VCRedist \ x64

  • HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ कुलपति \ VCRedist \ ia64

आप उसके लिए रजिस्ट्री फ़ंक्शन का उपयोग कर सकते हैं ......


1
मैंने लिखा है कि पहली पंक्ति में "दैट आई डू'ट वीएस2012"। तो यह टिप्पणी करने की कोई आवश्यकता नहीं है ............. और यह केवल
vs2010 के

1
आपने यह नोट किया था, लेकिन ऐसा लगता था जैसे आप सुझाव दे रहे थे कि आपका समाधान VS2012 के लिए काम कर सकता है और साथ ही साथ यह ओपी का प्रश्न था (लेकिन सत्यापित नहीं कर सका क्योंकि आपके पास VS2012 नहीं है)। मैं केवल यह कह रहा था कि यह दृष्टिकोण वास्तव में, VS2012 के साथ काम नहीं करता है क्योंकि मैंने इसकी जाँच की थी।
स्टेलारलेवेन

मेरे जवाब को क्यों वोट करें ...... मैंने स्पष्ट लिखा है कि यह vs2012 के लिए है ... और इसे उपयोगकर्ता द्वारा उत्तर के रूप में स्वीकार किया जाता है .... इसलिए ??????????
विक्की

1
ऐसा लगता है कि एक 64 बिट OS के साथ इस मूल्य पर स्थित हैHKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\...
बस

1
वीएस 2012 की कुंजियाँ HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 11.0 \ VC \ RunTimes ____ HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VisualStudio \ 11.0 \ VC \ RunTimes ___
एडम एल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.