2009-04-08 20 views
20

मेरे पास this one के समान प्रश्न है लेकिन उत्तर मेरे लिए काम नहीं करता है।यह पता लगाने के लिए कि मुझे VCRedist इंस्टॉल करने की आवश्यकता है या नहीं?

सॉफ़्टवेयर मैं सेटअप को बनाए रखने के लिए वीसी ++ 2008 (एसपी 1, ठीक) पर निर्भर करता हूं, इस प्रकार मुझे वीसीआरएडिस्ट स्थापित करने के लिए एक समाधान खोजने की आवश्यकता है यदि अभी तक इंस्टॉल नहीं किया गया है। मैं समझता हूं कि मर्ज मॉड्यूल के साथ एमएसआई बनाने का सही तरीका होगा, लेकिन यह मेरे हाथों पर नहीं है।

डुप्लिकेट प्रश्न का उत्तर मैं स्वीकार कर रहा हूं (स्वीकृत एक) मेरे लिए काम नहीं करता है क्योंकि प्रत्येक छोटी रिलीज (उदाहरण के लिए 9.0.3072 9.01 बनाम 9.0.3072 9 .17) में उचित GUID हैं, जिन्हें मैं अनुमान लगाने में सक्षम नहीं हूं या भविष्य के संस्करणों के लिए भविष्यवाणी करें। इसके अलावा, मुझे लगता है कि यह विजुअल स्टूडियो का पता नहीं लगाएगा और इस प्रकार अनावश्यक रूप से वीसीआरएडिस्ट पैकेज को स्थापित करेगा जब यह पहले से ही डेवलपर्स मशीन पर है। मैं इस के साथ किसी को भी बग नहीं करना चाहता, निश्चित रूप से कोई भी नहीं जो पहले से ही DevStudio स्थापित है।

अब एक और जवाब कहता है कि मुझे WinSxs- फ़ोल्डर जैसे $WINDIR\WinSxS\x86_Microsoft.VC80.CRT_ में देखना चाहिए, लेकिन यह (अभी तक) मुझे SP1 को लागू करने में मदद नहीं करता है, या क्या इस बिंदु पर मुझे कुछ भी याद आ रहा है? क्या आंतरिक और "बाहरी" संस्करण संख्याओं के साथ कहीं कोई टेबल है, इसलिए मैं एक निश्चित मामूली संस्करण संख्या का संकेत दे सकता हूं?

मैं विश्वास नहीं कर सकता इस परिदृश्य के लिए Microsoft द्वारा प्रदान की कोई बात नहीं है कि है, लेकिन खोज पहले से ही लंबे समय तक भी अब के लिए interwebs मुझे वापस अच्छा ol के लिए लाता है 'तो :)

उत्तर

8

आप को स्थापित करने के लिए सिफारिश की दृष्टिकोण ले सकता है डायरेक्टएक्स: हमेशा पुनर्वितरण योग्य चलाएं। चूंकि इसकी आवश्यकता है और आप इसे पहले ही शिपिंग कर रहे हैं, इसे चलाने में कोई हानि नहीं है, भले ही यह पहले से इंस्टॉल हो।

+0

अब इसे स्वीकार किया गया। यही वह है जो मैं अब कर रहा हूं। डब्लू 2 के 8 पर अन्य समस्याएं (पहचान के दो मामलों में से एक में)। – lImbus

+4

यदि आप ऐसा करते हैं, तो त्रुटि कोड 5100 स्वीकार करना और अनदेखा करना सुनिश्चित करें ("एक नया संस्करण पहले से स्थापित है")। हाल ही में PostgreSQL इंस्टॉलर में हमें इसके साथ कुछ दर्द हुआ है। –

+6

हमेशा रेडिस्ट चलाने में बहुत समय लगता है। – sorin

6

ऐसा लगता है कि MsiQueryProductState API का उपयोग कर माइक्रोसॉफ्ट-डेवलपर द्वारा प्रस्तावित another solution है, और यह भी GUID पर निर्भर है।

अद्यतन: कोड कल लाइव रहा और लगता है कि ठीक काम कर रहा है। यह है कि मधुमक्खी क्या हो रही है: यह नवीनतम-ज्ञात-से-मुझे GUID और पथ² के लिए चेक-इन-माना जाता है-स्थापित होने के लिए चेक किया गया है। यदि दोनों विफल हो जाते हैं, तो यह स्थापित है। यह ठीक काम करता प्रतीत होता है।

इसके अतिरिक्त, यह कमांड लाइन तर्क "/ qb" के साथ स्थापित है जिसका अर्थ है "अनुपयुक्त लेकिन अदृश्य नहीं"। उन पैराम के बारे में this other blog post देखें।

Fwiw, माइक्रोसॉफ्ट विज़ुअल सी ++ 2008/VC90 SP1 पुनर्वितरण के लिए GUIDs - 86 9.0.30729

  • 64 बिट 30,729.17: 8220EEFE-38CD-377E-8595-13398D740ACE
  • 32 बिट 30,729.17: 9A25302D-30C0-39D9 -BD6F-21E6EC160475
  • 32 बिट 30,729.01: 6AFCA4E1-9B78-3640-8F72-A7BF33448200

पथ ²: $WINDIR\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729*

13

विजुअल स्टूडियो सी ++ 2010, things got a bit easier के लिए।

विजुअल सी ++ 2005 और 2008 पुनर्वितरण योग्य पैकेजों के विपरीत, रजिस्ट्री कुंजी हैं जिनका उपयोग विज़ुअल सी ++ 2010 पुनर्वितरण योग्य पैकेज की उपस्थिति का पता लगाने के लिए किया जा सकता है।

Visual C++ 2010 पुनर्वितरण पैकेज का पता लगाने के लिए रजिस्ट्री को महत्व देता

Visual C++ 2010 पुनर्वितरण पैकेज (x86)

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ कुलपति \ VCRedist \ 86] स्थापित = 1 (REG_DWORD)

Visual C++ 2010 पुनर्वितरण पैकेज (64)

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ कुलपति \ VCRedist \ 64],210 स्थापित = 1 (REG_DWORD)

Visual C++ 2010 पुनर्वितरण पैकेज (ia64)

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ कुलपति \ VCRedist \ ia64] स्थापित = 1 (REG_DWORD)

नोट: आपको 64-बिट ओएस पर Wow6432Node के अंतर्गत जांच करने की आवश्यकता होगी। (HKLM \ SOFTWARE \ Wow6432Node \ माइक्रोसॉफ्ट ....)

आप पुराने संस्करण की तरह, यहाँ GUIDs

Visual C++ 2010 पुनर्वितरण पैकेज उत्पाद कोड

  • Visual C++ 2010 पुनर्वितरण पैकेज हैं (x86) - {196BB40D-1578-3D01-B289-BEFC77A11A1E}
  • Visual C++ 2010 पुनर्वितरण पैकेज (64) - {DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}
  • Visual C++ 2010 पुनर्वितरण पैकेज (ia64) - {C1A35166-4301-38E9-BA67-02823AD 72A1B}

Visual C++ 2010 SP1 पुनर्वितरण पैकेज उत्पाद कोड

  • Visual C++ 2010 SP1 पुनर्वितरण पैकेज (86) - {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
  • Visual C++ 2010 SP1 पुनर्वितरण पैकेज (64) - {1D8E6291-B0D5-35EC-8441-6616F567A0F7}
  • Visual C++ 2010 SP1 पुनर्वितरण पैकेज (ia64) - {88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}
+3

धन्यवाद !, इस भाग ने वास्तव में मेरी मदद की ... नोट: आपको 64-बिट ओएस पर Wow6432Node के अंतर्गत जांच करने की आवश्यकता होगी। (एचकेएलएम \ सॉफ्टवेयर \ वाह 6432 नोड \ माइक्रोसॉफ्ट ....) – Joe

3

मैंने विशेष रूप से a Visual C++ project on Github that checks for VC++ redistributable DLLs खोल दिया और इसे अपाचे 2.0 लाइसेंस के तहत उपलब्ध कराया।

यह कुलपति ++ 9 और कुलपति ++ 10 runtimes की उपलब्धता के लिए जाँच के लिए तीन अलग-अलग तरीकों है:

  1. चेकों MsiQueryProductState एपीआई;
  2. उत्पाद निर्देशिका से मेल खाने के लिए WinSxS फ़ोल्डर की सामग्री का निरीक्षण करें; और
  3. वीसी ++ 9 और वीसी ++ 10 रनटाइम के किसी भी स्थानीय संस्करण के लिए वर्तमान कार्यशील निर्देशिका की जांच करता है (और उनकी सामग्री का निरीक्षण करता है।

    wcout << _T("Checking for the availability of VC++ runtimes..") << endl; 
    wcout << _T("----------- Visual C++ 2008 (VC++9) -----------") << endl; 
    wcout << _T("Visual C++ 2008 (x86) ? ") << (IsVC2008Installed_x86() ? _T("true") : _T("false")) << endl; 
    wcout << _T("Visual C++ 2008 (x64) ? ") << (IsVC2008Installed_x64() ? _T("true") : _T("false")) << endl; 
    wcout << _T("Visual C++ 2008 SP1 (x86) ? ") << (IsVC2008SP1Installed_x86() ? _T("true") : _T("false")) << endl; 
    wcout << _T("Visual C++ 2008 SP1 (x64) ? ") << (IsVC2008SP1Installed_x64() ? _T("true") : _T("false")) << endl; 
    

    मैं अपाची 2.0 के तहत crt-detector परियोजना लाइसेंस प्राप्त है, तो अपने खुद के अनुप्रयोगों में इसका इस्तेमाल करने के लिए स्वतंत्र महसूस:)

यहाँ का उपयोग करने का एक नमूना यह वास्तव में लग रहा है की तरह है।

+0

मैं तुमसे प्यार करता हूँ धन्यवाद! –

संबंधित मुद्दे

 संबंधित मुद्दे