2010-03-26 13 views
8

का उपयोग कर रहा InstallSheild का उपयोग कर GAC करने के लिए कई विधानसभाओं रजिस्टर करने के लिए है और मैं भी विधानसभाओं भी INSTALLDIR पर प्रतिलिपि करने की जरूरत है। ऐसा करने का सबसे अच्छा तरीका क्या है? इसके अलावा मुझे एक असेंबली के लिए regasm.exe को कॉल करने की आवश्यकता है; क्या मैं इसे इंस्टॉलशेल्ड का उपयोग कर कर सकता हूं?रजिस्टर विधानसभाओं InstallShield

मुझे वास्तव में जीएसी में पंजीकृत होने वाली प्रत्येक असेंबली के लिए एक नया 'घटक' चाहिए?

उत्तर

10

यह उत्तर मानता है कि आप Windows इंस्टालर प्रोजेक्ट प्रकार का उपयोग कर रहे हैं।

1), प्रत्येक DLL फ़ाइल के लिए एक घटक बनाएं keyfile के रूप में यह कर सकते हैं और GlobalAssemblyCache को गंतव्य फ़ोल्डर की स्थापना की। यह विंडोज इंस्टालर को MsiPublishAssemblies मानक क्रिया का उपयोग करने के लिए निर्देश देता है जो बदले में जीएसी में असेंबली पंजीकृत करने के लिए फ़्यूज़न में कॉल करता है। यह प्रभावी रूप से गैकुटिल आपके लिए करता है। याद रखें: गैकुटिल पुनर्वितरण योग्य नहीं है। अगर असेंबली में साथी फाइलें हैं, तो उन्हें एक ही घटक में साथी फाइल के रूप में जोड़ें।

2) अपने विधानसभा ComVisible है, तो, प्रत्येक DLL के लिए एक घटक बनाने keyfile के रूप में चिह्नित और सही करने के लिए नेट ComInterop निर्धारित किया है। यह निर्माण समय को COM समय पर निकाला जाएगा, और रजिस्ट्री को जानकारी लिखने के लिए MsiPublishAssemblies मानक कार्रवाई का उपयोग करने के लिए Windows इंस्टालर को बताएगा। नोट: यदि आपके पास असेंबली के पंजीकरण अनुभाग में कस्टम उपयोगकर्ता कोड है तो इसे कैप्चर नहीं किया जाएगा। यह प्रति एमएसडीएन है कि regasm /regfile इस कोड पथ को निष्पादित नहीं करता है। उस घटक के लिए आपको मैन्युअल रूप से InstallShield के रजिस्ट्री व्यू में यह जानकारी दर्ज करनी होगी।

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

+0

मेरी याददाश्त क्रिस को जॉग करने के लिए अच्छा है! –

0

हां। जहां तक ​​सिस्टम परवाह है, वे दो अलग-अलग फाइलें हैं। AFAIK, आपके पास GAC में कोई फ़ाइल नहीं हो सकती है और यह एक ही समय में लक्षित कंप्यूटर पर एक यादृच्छिक फ़ोल्डर में हो सकती है।

सैद्धांतिक रूप से, अगर यह GAC में है, तो आप यह उत्पाद निर्देशिका में जरूरत नहीं है। यदि यह जीएसी में है, तो यह संस्करण लोड हो जाएगा, न कि उत्पाद निर्देशिका में से एक। हालांकि, अगर आपको COM इंटरऑप के लिए भी पंजीकरण करना है, तो यह कठिन हो जाता है। मैं गलत हो सकता हूं, लेकिन जब मैंने कोशिश की, तो मुझे दोनों में होना था: निर्देशिका में से एक, जीएसी में से एक।

लेकिन वास्तव में, तो आप शायद यह GAC में की जरूरत नहीं है अगर आप इसे उत्पाद निर्देशिका में की जरूरत है। यदि इसे किसी भी प्रोग्राम से कहीं भी लोड किया जा रहा है, तो हमेशा जीएसी इसके लिए एक सभ्य जगह है। यदि आप इसे COM इंटरऑप के लिए जीएसी में डाल रहे हैं, तो यह अनावश्यक है; इसे आपके द्वारा इंस्टॉल किए गए फ़ोल्डर को इंगित करके इसे पंजीकृत करना अगर आपके पास इंस्टॉलशील्ड सही तरीके से कॉन्फ़िगर किया गया है तो यह ठीक काम करेगा।

+0

मैंने सी # में एक विंडोज टूलबार विकसित किया। इस मामले में डीएलएस जीएसी में होना चाहिए, है ना? – Cornel

+0

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

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