2009-12-14 8 views
9

मेरे पास डेल्फी में रनटाइम पैकेज (परियोजना-> विकल्प-> संकुल) के साथ या बिना निर्माण के विकल्प के बारे में एक प्रश्न है।
निष्पादन योग्य फ़ाइल आकार छोटा (38 9 केबी) प्रतीत होता है जब मैंने बॉक्स (3,521 केबी) को अनचेक करते समय "रनटाइम पैकेज के साथ बनाएं" बॉक्स को चेक किया था। वह मामला क्या है?रनटाइम पैकेज के साथ बिल्डिंग EXE फ़ाइल को छोटा क्यों बनाती है?

मुझे इसके लिए एक इंस्टॉलेशन डिस्क बनाने में बहुत परेशानी हो रही है और यह पता नहीं लगा सकता कि इंस्टॉलेशन में कौन सी फाइलें शामिल की जानी चाहिए। मुझे आश्चर्य है कि इसके साथ इसका कोई संबंध नहीं हो सकता है, लेकिन मैंने पहले से ही दोनों विकल्पों का प्रयास किया है।

+1

मैं इसके बारे में उत्सुक हूं। मैं यूरेकालॉग का उपयोग करता हूं, और जब तक आप बिना रनटाइम पैकेज के निर्माण करते हैं, तब तक यह स्मृति रिसाव क्षमता काम नहीं करती है। तो मैंने इसकी आवश्यकता को खत्म करने में कुछ दिन बिताए। तो अपने प्रश्न में जोड़ने के लिए, मैं भी उत्सुक हूं कि डीबग बिल्ड के लिए रनटाइम पैकेज के साथ निर्माण करना फायदेमंद है, और रिलीज बिल्ड के बिना, और यदि ऐसा है, तो यह कैसे किया जा सकता है? – lkessler

उत्तर

14

जब आप रनटाइम पैकेज के साथ निर्माण करते हैं, तो वीसीएल और आरटीएल पैकेज से लोड होते हैं और इसलिए उनके कोड को आपके EXE में लिंक नहीं करना पड़ता है। तो EXE छोटा हो जाता है, लेकिन कुल स्थापना बड़ी हो जाती है क्योंकि आप संकुल के आकार को कम करने के लिए स्मार्ट लिंकिंग का उपयोग नहीं कर सकते हैं।

जैसा कि आपने पहले ही देखा है, पैकेजों का उपयोग करके स्मृति रिसाव ट्रेसिंग के लिए परेशानी होती है, और यह डीबगिंग के लिए भी परेशानी का कारण बनती है। यदि आप प्लगइन का उपयोग कर रहे हैं तो रनटाइम पैकेजों की भी आवश्यकता होगी, आमतौर पर इसका उपयोग करना केवल सार्थक है।

+5

यह भी फायदेमंद है यदि आप एक मशीन पर कई अलग-अलग अनुप्रयोगों को चलाने जा रहे हैं जो सभी वीसीएल का उपयोग करते हैं - कोई समझ नहीं है कि इसे कई बार स्मृति में लोड किया जाए। –

+1

+1 और यहां तक ​​कि सेलेनारियो में जहां प्लगइन्स की आवश्यकता हो सकती है, आप उन्हें डिज़ाइन करने से लगभग हमेशा बेहतर होते हैं कि रनटाइम पैकेज की आवश्यकता नहीं होती है। चूंकि आपने एक नए डेल्फी संस्करण में ऐप बनाया था, तो उन प्लगइन्स को तोड़ दिया जाएगा, iow: आप कभी भी नए टूल्स में अपग्रेड नहीं कर सकते थे, और प्लगइन लेखक भी नहीं कर सके। –

+1

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

0

डी 2010 के बारे में नहीं पता, लेकिन डी 2006 में "प्रोजेक्टनाम के लिए सूचना" नामक प्रोजेक्ट मेनू में एक विकल्प है।

यह आपको दिखाएगा कि संकलन के बाद आपको कौन से पैकेज शामिल किए गए हैं।

हालांकि, जैसा कि मेसन ने कहा है, रन टाइम पैकेज का उपयोग करने के लिए थोड़ा सा फायदा है, और कुछ नुकसान हैं।

9

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

लेकिन इन सभी अनुप्रयोगों का उपयोग एक ही समय में भी सिस्टम के लिए बहुत अधिक भार लाएगा। चूंकि प्रत्येक एप्लिकेशन वीसीएल और अन्य पुस्तकालयों की अपनी प्रति का उपयोग करता है, इसलिए इन सभी को डिस्क से स्मृति में लोड करने की आवश्यकता होती है, जिससे अधिक I/O होता है। और फिर स्मृति में उनमें से कई प्रतियां होंगी, प्रत्येक कोड के लिए जगह ले लेगा। जब रनटाइम पैकेज का उपयोग किया जाता है तो प्रत्येक एप्लिकेशन के पास डेटा के लिए अपना मेमोरी एरिया होगा, लेकिन वे सभी संकुल के कोड की उसी प्रतिलिपि को स्मृति में साझा करेंगे।

किसी भी विशेष आवश्यकता के बिना एक स्वयं निहित अनुप्रयोग के लिए निश्चित रूप से संकुल के बिना निर्माण।

+0

सामान्य 4 जीबी मेमोरी कितनी भर जाती है? वैसे भी, यह अभी भी कुछ हद तक लागू होता है, क्योंकि कैश भी स्मृति है, और काफी महंगा है। फिर भी, मुझे लगता है कि एक सैद्धांतिक मामला है, क्योंकि आरटीएल/वीसीएल के सभी पृष्ठ भी सक्रिय नहीं होंगे। –

+1

ठीक है, मुझे पुराने रूप में बुलाओ, लेकिन पर्याप्त स्मृति होने के कारण इसे बर्बाद करने के लिए पर्याप्त कारण नहीं है। इस तरह की सोच ने हमें आज के सॉफ़्टवेयर की खेदजनक स्थिति लाई है। मेरी वर्तमान मशीन में 4000 गुना रैम है और मेरे पहले पीसी की तुलना में हार्ड डिस्क स्पेस 20000 गुना है, फिर भी ऐसा लगता है कि इन सभी अतिरिक्त संसाधनों को बर्बाद कर दिया गया है ... – mghie

+0

मैं मूल रूप से रसायन शास्त्र से आया हूं, और मापने के लिए कोई विकल्प नहीं है और परिमाण के लिए एक भावना। यह ज्ञान kneejerk "अपशिष्ट" प्रतिक्रिया से मजबूत है। –

1

रन-टाइम पैकेज का उपयोग करने का मुख्य कारण यह है कि जब आपको एक ऐसे माध्यम पर तैनाती/अद्यतन करने के लिए मॉड्यूल ग्रैन्युलरिटी की आवश्यकता होती है जो कम बैंडविड्थ वाले तार पर अच्छी तरह से बड़ी फ़ाइलों को स्वीकार नहीं करता है।

क्योंकि रन-टाइम पैकेज तब तक रहते हैं जब तक आप अपना डेल्फी संस्करण नहीं बदलते - जैसे कि हमेशा के लिए डी 7 ;-) पर - यह आरटीएल/वीसीएल के पेलोड के बिना नए संस्करणों या नए अनुप्रयोगों को तैनात करने की अनुमति देता है।

लेकिन डीएलएल के साथ, आपको संस्करण के साथ सावधान रहना होगा।

+0

क्या इसका मतलब यह है कि अगर मैं "रनटाइम पैकेज के साथ निर्मित" तो मुझे पैकेजों को अलग से शिप करना होगा? क्षमा करें, अगर यह एक बेवकूफ़ी भरा प्रश्न हो। – Snackmoore

+1

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

+1

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

3

आपके प्रश्न के बारे में "स्थापना में कौन सी फाइलें शामिल की जानी चाहिए": आप लाइब्रेरी निर्भरताओं को ट्रैक करने के लिए Dependency Walker का उपयोग कर सकते हैं।

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