क्या 4GB .exe से बड़ा चलाना संभव है?


10

मैंने चेतावनी के बिना 7-ज़िप में एक> 4GB SFX आर्काइव (सेल्फ एक्सट्रैक्टिंग आर्काइव) बनाया। जब प्राप्तकर्ता ने उसे निकालने की कोशिश की, तो उसे यह त्रुटि मिली:

यहाँ छवि विवरण दर्ज करें

मैंने पाया कि यह .exe4GB से बड़ा है। 7-ज़िप को स्थापित करने के बाद वह संग्रह को निकालने में सक्षम था, लेकिन मैं सोच रहा हूं कि विंडोज ऐसे निष्पादन योग्य क्यों नहीं चला सकता है? और क्या यह कुछ ओवरराइड के माध्यम से संभव है?


2
आप आम तौर पर सिर्फ 32-बिट सिस्टम
रामहाउंड

1
रामहाउंड ने जो कहा, उसका विस्तार करने के लिए, यह संभव है कि 7-ज़िप सेल्फ-एक्सट्रैक्टर स्टोर रैम में ही हो, जो कि 32-बिट सिस्टम के लिए, अधिकतम एक्सेस साइज 4 जीबी है। यह भी बताएगा कि 7-ज़िप को निकालने में सक्षम क्यों है, क्योंकि संग्रह को पूरी तरह से मेमोरी में संग्रहीत करने की आवश्यकता नहीं है (यद्यपि यह निर्भर करता है कि संग्रह ठोस था या अन्य संपीड़न सेटिंग्स थी)।
डॉकटोरो रीचर्ड

हाँ, मैंने सोचा था कि पहली बार में यह समस्या थी, लेकिन वह 16GB रैम के साथ Win64 का उपयोग कर रहा है। मैं इसे 8GB के साथ भी उपयोग कर रहा हूँ।
लुई वावरू

जवाबों:


10

Windows इस थ्रेड के अनुसार निष्पादन योग्य 4GB से अधिक आकार का समर्थन नहीं करेगा:

http://sourceforge.net/p/sevenzip/discussion/45798/thread/337fc13e/

टिप्पणीकार "इगोर पावलोव" 7-ज़िप के निर्माता और अनुरक्षक हैं। जबकि वह टिप्पणी कुछ हद तक रूखा है, सोर्सफोर्ज मंचों पर अन्य धागे हैं जो एक ही सलाह को दोहराते हैं। मुझे विश्वास नहीं है कि 64-बिट OS पर निष्पादन योग्य चलाने से कोई फर्क पड़ेगा क्योंकि यह विंडोज़ निष्पादन योग्य फ़ाइल के आकार की सीमा तक सीमित हो सकता है, अर्थात स्वयं Windows PE प्रारूप की एक सीमा ।

64-बिट प्रोग्राम लिखने पर यह लेख बताता है कि:

Win64 फ़ाइल की निष्पादन योग्य "छवि" (कोड / डेटा को मेमोरी में लोड किया गया) आकार में 2GB तक सीमित है। ऐसा इसलिए है क्योंकि AMD64 / EM64T प्रोसेसर ज्यादातर निर्देशों के लिए सापेक्ष पते का उपयोग करते हैं, और सापेक्ष पते को एक डॉर्ड में रखा जाता है। एक डॉर्ड केवल। 2GB का सापेक्ष मान रखने में सक्षम है।

संभवतः इगोर ने 4GB को प्राप्त करने के लिए to 2GB का उपयोग करने का एक तरीका निकाला है।


1
एक हस्ताक्षरित डॉर्ड की सीमा 2,147,483,647 है। एक अहस्ताक्षरित डॉर्ड की सीमा 4,294,967,295 है, और यह संख्या विंडोज़ में और इसके बाहर 32-बिट सिस्टम में सबसे अधिक सीमाओं का स्रोत है।
हाशिम

@ हाशिम बिल्कुल सही है, सीमा है 4GiB - 1B = 2^32 - 1 bytes = 4,294,967,295 bytes। मैं .EX-E- फ़ाइलों के रूप में WinRAR के साथ सेल्फ-एक्स्ट्रक्टिंग आर्काइव बनाकर विंडोज 10 64-बिट पर इसे सत्यापित करने में सक्षम था। एक निष्पादन योग्य आकार 4GiBलॉन्च नहीं होगा, लेकिन 4GiB - 1Bठीक काम करता है।
रॉबिन हार्टमैन

0

4GB से बड़ा एक्स्ट्रेक्टेबल सेल्फ एक्स्ट्रेक्टिंग एक्सट्रीम साइड पर है, क्योंकि विंडोज एक्जीक्यूटेबल फाइल्स जैसे *। Exe, * .dll आदि के लिए PE32 और 64-बिट वर्जन PE32 + (32-बिट और 64 पर लागू होता है) पर 4gb लिमिट है। -बिट संस्करण)।

दूसरा, निष्पादन योग्य फ़ाइल निष्पादन से पहले रैम में पूरी तरह से भरी हुई है और भले ही आप विंडोज द्वारा सीमित नहीं हैं (लेकिन आप हैं), आप आसानी से हार्डवेयर द्वारा सीमित हो सकते हैं, जो इस तरह के मामले में रैम की भौतिक राशि है


जैसा कि मुझे पता है कि एक्सई फ़ाइल के केवल एक विशिष्ट अनुभाग को लोड करने के लिए विंडोज को बताने के तरीके हैं, न कि संसाधनों के साथ पूरी फाइल। मुझे लगता है कि कई बड़े डॉस प्रोग्राम इस ट्रिक का उपयोग करते हैं क्योंकि 16-बिट x86 में सीमा बहुत छोटी है
phuclv
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.