दिलचस्प पोस्ट
एंड्रॉइड में एक गतिविधि से किसी स्ट्रिंग को एक अन्य गतिविधि में पास करें मेवेन प्रोजेक्ट को सिस्टम प्रॉपर्टी निर्दिष्ट करें BackgroundWorker में अप्रतिबंधित अपवाद Google ने गुलाबी रंग में खोज क्षेत्रों को उजागर करना शुरू कर दिया है क्या यह सुविधा Google Maps API 3 में उपलब्ध है? एंड्रॉइड में एक फाइल के लिए एमडी 5 चेकसम कैसे उत्पन्न करें? क्या यूनिट परीक्षण में प्रतिबिंब का उपयोग करने के लिए बुरा अभ्यास है? क्या यह थ्रॉएबल को पकड़ने के लिए एक बुरा अभ्यास है? एक डिवा में फिट करने के लिए फ़ॉन्ट का आकार बदलना (एक पंक्ति पर) नोडजेएस / वी 8 फ़्लैमेग्रफ़ में अज्ञात घटनाएं perf_events का उपयोग करते हुए वेब पृष्ठ को बिना सहेजे गए बदलावों के साथ छोड़ने से पहले चेतावनी दें एमवीसी 3 में कोड प्रथम इकाई फ़्रेमवर्क (4.1) का उपयोग करते हुए मैं विदेशी कुंजी रिश्ते की घोषणा कैसे करूं? varargs और '…' तर्क पायथन 3 में "1000000000000000 सीमा में (1000000000000001)" इतनी तेज़ी क्यों है? PHP के साथ आईपी पता देश प्राप्त करें समझना। () – उथले या गहरी?

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

Visual Studio 2012 के लिए Visual C ++ Redistributable स्थापित है, तो कैसे पता लगाने के लिए?

मैंने इसे Google की कोशिश की और किसी ने भी इस प्रश्न को, आश्चर्य की बात नहीं की!

वेब के समाधान से एकत्रित समाधान "पता लगाएँ कि Visual Studio 2012 के लिए Visual C ++ Redistributable स्थापित है या नहीं"

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


दृश्य सी ++ 2005

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

डायरेक्ट डाउनलोड यूआरएल: 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 

डायरेक्ट डाउनलोड यूआरएल: https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE


दृश्य सी ++ 2008

 Microsoft Visual C++ 2008 Redistributable (x64) Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\67D6ECF5CD5FBA732B8B22BAC8DE1B4D Configuration: x64 Version: 9.0.30729.5677 

डायरेक्ट डाउनलोड यूआरएल: https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe

 Microsoft Visual C++ 2008 Redistributable (x86) Registry Key: HKLM\SOFTWARE\Classes\Installer\Products\6E815EB96CCE9A53884E7857C57002F0 Configuration: x86 Version: 9.0.30729.5677 

डायरेक्ट डाउनलोड यूआरएल: https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe


दृश्य सी ++ 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


दृश्य सी ++ 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 

डायरेक्ट डाउनलोड यूआरएल: 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 

डायरेक्ट डाउनलोड यूआरएल: https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe


दृश्य सी ++ 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 

डायरेक्ट डाउनलोड यूआरएल: 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 

डायरेक्ट डाउनलोड यूआरएल: https://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe


दृश्य सी + 2015

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

डायरेक्ट डाउनलोड यूआरएल: 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: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\{e2803110-78b3-4664-a479-3611a381656a} Configuration: x86 Version: 14.0.24215.1 

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


विजुअल सी ++ 2017

चेतावनी : या तो एक नया 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.11.25325 Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\,,amd64,14.0,bundle\Dependents\{6c6356fe-cbfa-4944-9bed-a9e99f45cb7a}] Configuration: x64 Version: 14.11.25325.0 

डायरेक्ट डाउनलोड यूआरएल: https://download.visualstudio.microsoft.com/download/pr/11100230/15ccb3f02745c7b206ad10373cbca89b/VC_redist.x64.exe

 Microsoft Visual C++ 2017 Redistributable (x86) - 14.11.25325 Registry Key: [HKEY_CLASSES_ROOT\Installer\Dependencies\,,x86,14.0,bundle\Dependents\{404c9c27-8377-4fd1-b607-7ca635db4e49}] Configuration: x86 Version: 14.11.25325.0 

डायरेक्ट डाउनलोड यूआरएल: https://download.visualstudio.microsoft.com/download/pr/11100229/78c1e864d806e36f6035d80a0e80399e/VC_redist.x86.exe


चैंज :
8 सितंबर, 2017 – नए विज़ुअल सी + 2017 प्रविष्टि के रूप में 14.11.25325.0 के लिए 2017 का संस्करण जोड़ा गया
7 अप्रैल, 2017 – नए विज़ुअल सी + 2017 प्रविष्टि के रूप में, 2017 के संस्करण को 14.10.25008.0 के लिए जोड़ा गया।
24 अक्टूबर 2016 – 14.0.24215.1 के लिए 2015 के संस्करण की जानकारी के लिए अपडेट किया गया
18 अगस्त, 2016 – 14.0.24212 के लिए अपडेट की गई 2015 के संस्करण की जानकारी
27 मई, 2016 – एमएससीसी2015 अपडेट 2 के लिए अपडेट की गई जानकारी

कृपया यहां मुझसे संपर्क करें यदि इनमें से कोई भी पुराना हो।

प्रयत्न

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

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

आप इस रजिस्ट्री स्थान में 1 होने के लिए Installed मान की जांच कर सकते हैं: 64-बिट सिस्टम पर HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x86 रजिस्ट्री कुंजी 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

दृश्य सी ++ के साथ शिप किए गए बूटस्ट्रैपर पैकेज मेनिस्टस्ट में कोई इंस्टॉलस्क तत्व नहीं है लगता है कि माइक्रोसॉफ्ट हमेशा स्थापित करना चाहता है यदि आप उसे पूर्वापेक्षा के रूप में सेट करते हैं

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

 wmic product get 

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

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

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

इस सरल प्रश्न का उत्तर दुर्भाग्यवश नहीं है, बल्कि सभी प्रणालियों के 100% में काम करना है, और यहां तक ​​कि कई नेट फ्रेमवर्क के लिए भी बढ़िया है।

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

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

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

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

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

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

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

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

 Function TryLaunchApplication Pop $1 ; pathname nsExec::Exec $1 Pop $0 ${If} $0 == "error" ${OrIf} $0 != 0 Push 0 ${Else} Push 1 ${EndIf} FunctionEnd 

और इसे एक फ़ंक्शन में कॉल करें, जैसे कि चैकरूटइम्स

 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 

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

इसके बाद, स्थापित पेड़ में एक पठन-योग्य अनुभाग बनाएं और उसे पहले से चुनें या उसे किसी ऐसे फ़ंक्शन पर अचयनित करें जिसे अवयव पृष्ठ दिखाए जाने से पहले निष्पादित किया जाता है।

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

मेरे लिए यह स्थान काम किया गया: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ DevDiv \ vc \ सर्विसिंग \ 11.0 \ रनटाइम न्यूनतम \ संस्करण

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

 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 

बस नियंत्रण कक्ष> कार्यक्रम और सुविधाओं पर जाएं, और ये सभी वहां सूचीबद्ध दिखाई देते हैं।

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

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

मैंने इनोसेटअप के साथ ऐसा करने में सफलता पाई है

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

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

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

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

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

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

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

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

उस अपग्रेडकोड ​​के लिए सभी उत्पाद आईडी प्राप्त करने के लिए आप एमएसईएनम रिलाटेड प्रोडक्ट्स का उपयोग कर सकते हैं। व्यवहार में, क्योंकि प्रत्येक पुनर्वितरित अद्यतन पिछले एक को बदल देता है, यह केवल एक ProductCode उपज देगा – जैसे कि VS2015 Update 2 x 86 के लिए {B5FC62F5-A367-37A5-9FD2-A6E137C0096F}

इसके बावजूद, आप संस्करण के साथ तुलना करने के लिए MsiGetProductInfo (productCode, INSTALLPROPERTY_VERSIONSTRING, …) या समान कार्य के माध्यम से संस्करण की जांच कर सकते हैं, उदाहरण के लिए समकक्ष या बाद के संस्करण की जांच करना।

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

यह PowerShell कोड को चाल करना चाहिए

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

मुझे एक ही बात की जरूरत है, और हालांकि एएएएआईएएम को प्रोग्राममैटिक रूप से नहीं किया जा सकता है, यह मेरे लिए काम किया है

मैं बस शुरू करने के लिए चला गया -> एक प्रोग्राम को अनइंस्टॉल करें, और जब तक मुझे वीसी ++ पुनर्वितरण नहीं मिला तब तक नीचे स्क्रॉल किया गया, जिसमें एक संस्करण संख्या शामिल है संस्करण संख्या को गोगलिंग, मुझे बताया गया कि वह वीएस2012 एसपी 1 से संबंधित है

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

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

यहां प्रासंगिक एनएसआईएस कोड है:

 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: 

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

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

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

मैं का Installed मूल्य की जांच होगी

HKLM\SOFTWARE\[WOW6432Node]\Microsoft\Windows\CurrentVersion\Uninstall\{VCRedist_GUID} कुंजी

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

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

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

यहां एक स्क्रिप्ट है जो दृश्य स्टूडियो 2012 अपडेट 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 

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

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

नीचे दिए गए सब कुछ विशेष रूप से Visual 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> 

आप रजिस्ट्री में खोज सकते हैं। वास्तव में मुझे नहीं है vs2012, लेकिन मेरे पास बनाम 2010 है

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

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

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

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

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