2009-04-22 10 views
7

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

लेकिन क्या विचार मैं एक पोर्टेबल अनुप्रयोग बनाने में के लिए खाते चाहिए? कुछ मैं के बारे में सोच सकते हैं, लेकिन के लिए जवाब पता नहीं है:

1) भाषा पोर्टेबिलिटी - ठीक है, मुझे पता है कि किसी भी मशीन मैं इस पर प्रयोग कर एक .NET रनटाइम की आवश्यकता होगी स्थापित किया जा। लेकिन जैसा कि मैं नियमित रूप से केवल कुछ विंडोज मशीनों का उपयोग करता हूं, यह कोई समस्या नहीं होनी चाहिए। मैं इसे कोड करने के लिए एक और भाषा का उपयोग कर सकता हूं, लेकिन फिर मैं उत्पादकता पर विशेष रूप से एक आसान रूप डिजाइनर के संबंध में हार जाता हूं। फ्लैश ड्राइव से .NET ऐप चलाने के साथ कोई अन्य समस्याएं हैं?

2) पढ़ें/लिखें साइकिल - सी # में, कैसे मुझे यकीन है कि मेरे आवेदन ड्राइव करने के लिए अनावश्यक रूप से नहीं लिख रहा है कर सकता हूँ? क्या मेरे पास हमेशा लिखने का नियंत्रण होता है, या क्या कोई "छुपा लिखता है" जिसके लिए मुझे खाते की आवश्यकता है?

3) खुला प्रश्न: क्या पोर्टेबल अनुप्रयोगों से संबंधित कोई अन्य समस्याएं हैं, या शायद मुझे अच्छी आईडीई के साथ अन्य भाषाओं के सुझावों के बारे में पता होना चाहिए जो मुझे उत्पादकता का एक समान स्तर प्राप्त करेंगे लेकिन बेहतर पोर्टेबिलिटी?

उत्तर

10
  • 1) वहाँ किसी भी समस्याओं एक फ्लैश ड्राइव से एक .NET एप्लिकेशन चल नहीं होना चाहिए।
  • 2) आप सबसे राईट का नियंत्रण होना चाहिए। सुनिश्चित करें कि आप temp या हार्ड ड्राइव पर कुछ अन्य स्थान पर लिखें, और फ़्लैश ड्राइव पर नहीं।लेकिन लिखने के चक्र एक समस्या नहीं होनी चाहिए - यहां तक ​​कि मध्यम से भारी उपयोग के साथ अधिकांश फ्लैशड्राइवों का जीवन वर्षों का होता है।
  • 3) बस इसे यह xcopy शैली तैनाती है और अपने अनुप्रयोग शान से नाकाम रहने अगर कुछ निर्भरता बॉक्स पर नहीं है के लिए खाता करने की कोशिश है कि किसी भी अनुप्रयोग की तरह व्यवहार करते हैं।
0

मैं वास्तव में इस के साथ कोई अनुभव नहीं है, तो यह सबसे अच्छा हो सकता है मैं नमक की एक चुटकी के साथ क्या कहते हैं लेने के लिए है।

आपको कुछ भी विशेष करने की ज़रूरत नहीं है: लेकिन यहाँ इस पर मेरी ले है।

यह वास्तव में कैसे और कब लेखन एक ड्राइव करने के लिए किया जाता है, कि कुछ ऐसा है जो अभी तक बेहतर ओएस द्वारा नियंत्रित किया जाता है के रूप में एक आवेदन डेवलपर के एक विचार है। मुझे पता है कि विंडोज कैश यूएसबी ड्राइव्स को लिखते हैं, इसलिए मुझे विश्वास होगा कि यह इसे संभाल लें।

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

मैं लेखन मिलता है और अगर वहाँ कुछ भी एक फ्लैश ड्राइव है कि ओएस संभाल नहीं करता है के बारे में क्या खास बात है देखना होगा।

+0

यदि ड्राइव को त्वरित हटाने के लिए अनुकूलित किया गया है, और अधिकांश फ्लैश ड्राइव हैं, तो विंडोज़ लिखने के माध्यम से लिखेंगे और कैश नहीं करेंगे। – Michael

+0

यदि ड्राइव को त्वरित हटाने के लिए अनुकूलित किया गया है तो क्या उपयोगकर्ताओं का सम्मान करने और इसे तुरंत लिखने का कोई कारण नहीं है? यदि ड्राइव की आवश्यकता है कि लिखने के लिए कैश किया जाए तो इसके लिए ओएस समर्थन को फिर से लागू करें। –

+0

@JayArr - मैं इस बयान पर टिप्पणी कर रहा था कि विंडोज कैश यूएसबी फ्लैश ड्राइव को लिखता है। सामान्य में, यह सच नहीं है। – Michael

0

मैं वास्तव में # 1 या # 3 के लिए उत्तर नहीं है। लेकिन # 2 के लिए, .NET CLR को किसी ऐप के "इंस्टॉलेशन" फ़ोल्डर (यानी फ्लैश ड्राइव) पर नहीं लिखा जाना चाहिए, जब तक कि आपका कोड विशेष रूप से फ़ाइल-आधारित सेटिंग्स (इनआई, एक्सएमएल इत्यादि) का उपयोग या संशोधित नहीं करता है। जो ऐप के साथ रहता है।

संख्या 1 वास्तव में किकर अगर आप सिर्फ निजी इस्तेमाल के लिए बातें नहीं लिख रहे हैं। स्पष्ट रूप से अंगूठे ड्राइव पर पूर्ण सीएलआर की एक पोर्टेबल प्रति होस्ट करना असंभव है। लेकिन ऐसे उपकरण हैं जो आपकी असेंबली के लिए अपनी असेंबली को स्कैन कर सकते हैं और उन्हें स्टैंडअलोन .exe में पैकेज कर सकते हैं ताकि सीएलआर को लक्ष्य प्रणाली पर स्थापित करने की आवश्यकता न हो।

2

यदि आप कॉम ऑब्जेक्ट्स का उपयोग करना चाहते हैं, तो reg-free com का उपयोग करें और अपने प्रोग्राम के साथ कॉम ऑब्जेक्ट्स शामिल करें।

2

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

पोर्टेबल एप्लिकेशन के लिए सबसे महत्वपूर्ण बात यह है कि मूल रूप से आपके आवेदन के लिए कोई इंस्टॉलेशन आवश्यक नहीं है। आप विशेष रूप से रजिस्ट्री मानों पर निर्भर नहीं होना चाहते हैं, क्योंकि आपका एप्लिकेशन अन्य कंप्यूटरों पर 'इंस्टॉल' नहीं होगा।

पोर्टेबल अनुप्रयोगों के साथ आप जिन मुद्दों पर विचार कर सकते हैं उनमें से एक डेटा डेटा दृढ़ता है। आम तौर पर, आप डेटा को सहेजने के लिए उपयोगकर्ता के एप्लिकेशन डेटा फ़ोल्डर में लिखते हैं। यदि ऐसा है, तो सहेजा गया कोई भी डेटा केवल उस कंप्यूटर पर उपयोगकर्ता पर लागू होगा। यदि आप कुछ स्थानीय एप्लिकेशन डेटा चाहते हैं, तो आप अपनी सेटिंग्स के लिए एक Seralized XML फ़ाइल बनाना चाहेंगे और इसे अपने एप्लिकेशन की निर्देशिका में स्थानीय रूप से स्टोर कर सकते हैं। यह फ़ाइल लेखन तब ही एकमात्र लेखन कार्य होगा जिसके बारे में आपको चिंता करने की आवश्यकता होगी।

अपने .NET पोर्टेबिलिटी समस्या के लिए, आप C++ में एक छोटा प्रविष्टि प्रोग्राम भी लिख सकते हैं, जो जांचता है कि कंप्यूटर .NET स्थापित है या नहीं। .NET में रजिस्ट्री मान हैं जिन्हें आप स्थापित संस्करण देखने के लिए जांच सकते हैं, इसलिए यदि .NET इंस्टॉल है, तो अपना एप्लिकेशन चलाएं, अन्यथा एक संदेश प्रदर्शित करें जिसमें कहा गया है कि .NET को पहले स्थापित करने की आवश्यकता है।

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

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