2008-10-07 10 views
15

का उपयोग किये बिना दृश्य सी ++ पुनर्वितरण योग्यताएं मैं ऐसे वातावरण में विकास कर रहा हूं जो गंभीर रूप से बाधित है, लेकिन डेवलपर्स पर भी कड़े नियंत्रण हैं।VCRedist_x86.exe

VCRedist_x86.exe - एक 4 एमबी पुनर्वितरण योग्य - कोई मजेदार नहीं है (स्थानांतरण के लिए चार घंटे)। मैं वास्तव में केवल MFC90.dll, msvcm90.dll, msvcp90.dll और msvcr90.dll को फिर से वितरित करना पसंद करूंगा - यह 2 एमबी की तरह है। हालांकि, Redistributing Visual C++ Files का कहना है:

यह C/C++ अनुप्रयोग जो प्रकट बिना निर्माण कर रहे हैं पुन: वितरित करने समर्थित नहीं है। विज़ुअल सी ++ लाइब्रेरी का उपयोग सी/सी ++ अनुप्रयोगों द्वारा इन पुस्तकालयों में एप्लिकेशन को बाध्यकारी किए बिना प्रकट नहीं किया जा सकता है। अधिक जानकारी के लिए, Choosing a Deployment Method देखें।

मेरे कार्यक्रम की कार्यशील निर्देशिका में DLLs को कॉपी करने की मूल योजना में प्रकट होता है की इस बहादुर नई दुनिया में काम करने के लिए प्रतीत नहीं होता।

मेरा अगला अनुमान WinSxS निर्देशिका में फ़ाइलों को पॉप्युलेट करने के लिए आवश्यक रजिस्ट्री प्रविष्टियों को दर्ज करना है और इसे स्वयं (इसे 4 मेग प्रोग्राम का उपयोग करने के बजाय) पॉप्युलेट करना है।

[संपादित करें] सॉफ़्टवेयर को अक्सर अद्यतन किया जाता है, इसलिए डीएलएल को स्थिर लिंकिंग के लिए दृढ़ता से प्राथमिकता दी जाती है। [/ संपादित करें]

मैं आवश्यक फ़ाइलों को सफलतापूर्वक वितरित कैसे कर सकता हूं लेकिन ओवरहेड को नीचे रख सकता हूं?

उत्तर

13

हम इस का उपयोग करें: Howto: Deploy VC2008 apps without installing vcredist_x86.exe

मूलतः

  • अपने exe फ़ाइलों में एक प्रकट एम्बेड न करें।
  • सी ++ डीएलएल और उनके ऐप की निर्देशिका में उनकी प्रकटताओं की प्रतिलिपि बनाएँ।
  • सब प्रकट होता है (तुम्हारा और माइक्रोसॉफ्ट के) से "PublicKeyToken" निकालें।
  • यदि आवश्यक हो, आपके ऐप की मेनिफेस्ट फ़ाइलों माइक्रोसॉफ्ट प्रकट फ़ाइलों मिलान करने के लिए संस्करण जानकारी (या इसके विपरीत)
4

"क्रम पुस्तकालय" संकलक संपत्ति पेज में स्थापित करने के लिए निर्दिष्ट करें/मीट्रिक टन (थ्रेड)। यह रनटाइम लाइब्रेरी के खिलाफ स्थिर रूप से लिंक करता है, इसलिए आपको पुनर्वितरण योग्य स्थापित करने की आवश्यकता नहीं है।

1

उन्हें निजी असेंबली के रूप में स्थापित करें। यहाँ देखें:

http://msdn.microsoft.com/en-us/library/ms235291.aspx

ध्यान दें कि अगर आप आप के लिए प्रकट फ़ाइलों को संशोधित कर सकते प्रदान की DLLs के सभी की जरूरत नहीं है केवल लोगों को आप की जरूरत के संदर्भ हैं।

26

[मैं माइक्रोसॉफ्ट में वर्तमान SxS मेंटेनर हूँ]

बदल मैं दृढ़ता से होगा के खिलाफ सुझाव है प्रकट होता है से PublicKeyToken विशेषता को हटाने। DLLs के निजी तैनाती इस विशेषता ऐसे ही छोड़ दिया साथ ठीक से काम करेगा। हालांकि, को हटाने के लिए यह सुरक्षा अद्यतन से लाभ सीआरटी लक्षित मशीन पर केन्द्र स्थापित के एक नए संस्करण, वहाँ होना चाहिए के रूप में निर्भरता नहीं रह मेल खाएगा से आपका ऐप्लिकेशन नहीं कर पाएगा।

तो संक्षेप में: डिफ़ॉल्ट रूप से अपने मैनिफेस्ट को एम्बेड करना सुरक्षित है। सीआरटी मेनिफेस्ट + डीएलएल फ़ाइलों को सीधे अपनी निष्पादन योग्य निर्देशिका में कॉपी करें, बिना किसी संपादन के। बस। संगत Win2k +।

+3

हाय यूजीन: क्या आप यह कह रहे हैं कि यदि आप स्थानीय सीआरटी/एमएफसी/आदि डीएलएल और मैनिफेस्ट फाइलों के साथ अपना ऐप तैनात करते हैं, तो विंडोज़ अपडेट इन फ़ाइलों को प्रभावित करने वाले किसी भी तरह से उन्हें आपके इंस्टॉल डायर में ढूंढेंगे और उन्हें अपडेट करेंगे?!? – HotOil