2009-12-09 5 views
6

में पोर्टेबल (गैर-इंस्टॉलिंग) विंडोज अनुप्रयोगों का निर्माण करना मेरे पास .NET 3.5 एप्लिकेशन है और मैं इसे पोर्टेबल बनाना चाहता हूं। यह आसान है और पूरी तरह से चलता है, मैंने कुछ दोस्तों को .EXE +.dLL भेज दिया है और यह उसी फ़ोल्डर में डीएलएल और आईआईसीओ (जिसे मैंने इसमें उपयोग किया है) के साथ exe चलाते समय इरादा के रूप में काम करता है ।सी #

जो मैं चाहता हूं वह सरल है: एक एकल EXE फ़ाइल बनाना जो डीएलएस, छवि और जो कुछ भी मैं चाहता हूं उसके बिना सेटअप के बिना, और कोई इंस्टॉलेशन की आवश्यकता नहीं है। (उर्फ पोर्टेबल)

यदि आवश्यक हो तो मैं इसे .NET 2.0 पर माइग्रेट करने पर विचार कर सकता हूं, मैं 3.5-केवल कार्यक्षमता का उपयोग नहीं करता, वास्तव में, मुझे सच में यकीन नहीं है कि मैं 3.5 का उपयोग क्यों कर रहा हूं (मैं हूं किसी भी तरह प्रोग्रामिंग पर नया)

मुझे यह कैसे करना है, इस पर कोई सुझाव, लिंक या स्पष्टीकरण चाहिए, क्योंकि यह वास्तव में परेशान करने वाला है। मेरे दोस्तों के लिए यह है और उन्हें सभी को "exe निकालने और चलाने के लिए कह रहा है" अजीब फाइलें "जैसे कि वे कॉल करते हैं (इसके अलावा, सभी में फ़ोल्डर्स में एक्सटेंशन डिस्प्ले नहीं है, इसलिए यह एक दुःस्वप्न है)

(मैंने स्टैक ओवरफ्लो में खोज की है, और मुझे कोई प्रश्न नहीं मिला है जो मैं पूछ रहा हूं, केवल एक ऐसा जो मुझे लगता है वह फ्रेम की चर्चा में समाप्त हुआ विंडोज मशीनों में भाषा की उपलब्धता, भाषा चुनने और कोई अच्छा जवाब नहीं।)

+0

मुझे लगता है कि आपका मतलब आसानी से वितरित करने योग्य है - पोर्टेबल नहीं (पोर्टेबल माध्यम विभिन्न ऑपरेटिंग सिस्टम और/या हार्डवेयर आर्किटेक्चर पर चल रहा है)। – Oded

+0

लोगों को चलो, चलो इस पर चर्चा करें, इस सवाल में एक जवाब (जो बहुत से लोगों को रूचि दे सकता है) बहुत कम है! मैं यहां कोई अन्य जानकारी देने के लिए हूं जो उत्तर देने के लिए उपयोगी हो सकता है। – Marcelo

+3

@ ओडेड - पोर्टेबल अब उन शब्दों में से एक है जिनके पास कई अर्थ हैं, इसका प्रमाणन रूप से क्रॉस प्लेटफॉर्म का मतलब है, लेकिन अब यह अक्सर (अधिक?) का अर्थ है "यूएसबी स्टिक से चलाता है या इंस्टॉल किए बिना समकक्ष" – Murph

उत्तर

10

आप सभी निष्पादन योग्य में सभी असेंबली को मर्ज करने के लिए ILMerge का उपयोग कर सकते हैं। मैं उम्मीद करता हूं कि आपका आइकन पहले से ही एक एम्बेडेड संसाधन हो - या आपको कम से कम इसे बनाने में सक्षम होना चाहिए।

लक्ष्यीकरण .NET 2.0 एप्लिकेशन को अधिक व्यापक रूप से पोर्टेबल बना देगा, यह केवल उन मशीनों पर काम करेगा जो केवल .NET 2.0 स्थापित हैं - लेकिन मुझे नहीं पता कि 2.0 बनाम 3.5 परिनियोजन के लिए अनुपात कैसा दिखता है, और और भी महत्वपूर्ण रूप से वे आपके लक्षित दर्शकों से परिनियोजन के अनुपात के समान नहीं हो सकते हैं।

+0

धन्यवाद! आइकन के बारे में, मुझे यकीन नहीं है कि यह कैसे करें, लेकिन मैं इसे समझूंगा। मैं इंतजार करूँगा, शायद कुछ भी बेहतर हो जाएगा! – Marcelo

2

आप अपने अनुप्रयोगों को वर्चुअलाइज़ करने के लिए Xenocode का भी उपयोग कर सकते हैं। .NET के लिए विशेष रूप से Xenocode Postbuild

3

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

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

संसाधन प्रतीक की तरह बस सीधे इस्तेमाल किया जा सकता है - DrawIcon (Properties.Resources.MyIcon) में के रूप में

डाटा फ़ाइलें Application.GetManifestResource (और संबंधित विधि) का उपयोग करने से लोड करने के लिए एक धारा प्राप्त करने के लिए लोड किया जा सकता। उदाहरण के लिए, एक असेंबली के लिए, आप सीधे अपने संसाधन के लिए manifest संसाधन स्ट्रीम से Assembly.लोड() का उपयोग कर सकते हैं।

+0

पीएस इसका लाभ यह है कि डेटा फ़ाइलों और असेंबली को अपने .exe में एम्बेड करना आसान है, बनाए रखने में बहुत आसान है, सभी फाइलें स्वचालित रूप से समाधान एक्सप्लोरर में सूचीबद्ध हैं और इसे किसी भी तृतीय पक्ष टूल या पोस्ट-बिल्ड चरणों की आवश्यकता नहीं है इसे काम करने के लिए - यह सब अंतर्निहित वीएस/सी #/net2.0 कार्यक्षमता पर निर्भर करता है। –