2009-11-04 13 views
8

मेरे पास समूह के लिए एक सामान्य प्रश्न है। मैं अपनी टीम के लिए एक बड़ी परियोजना शुरू करने जा रहा हूं, मुझे संदेह है कि हम डेस्कटॉप एप्लिकेशन के रूप में काम करेंगे (मैं आम तौर पर अपने आवेदन के दृष्टिकोण में एक वेब लड़का हूं लेकिन मैं बदलने के लिए खुला हूं।)स्व अद्यतन आवेदन

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

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

धन्यवाद।

संपादित करें: मुझे एहसास है कि मैं चूसना !! मैं कुछ सबसे महत्वपूर्ण विवरणों का उल्लेख करना भूल गया था। यह एक विंडो अनुप्रयोग होगा, जो .NET फ्रेमवर्क का उपयोग करके लिखा गया है, जो Win XP और उच्चतर को लक्षित करता है।

+1

प्लेटफ़ॉर्म? भाषा? फ्रेमवर्क (रों)? –

+0

क्षमा करें। मेरी गलती। दिन में देर हो चुकी है। = ( यह एक विंडोज प्लेटफार्म होगा, जो .NET Framework का उपयोग करके लिखा गया है, जो विंडोज एक्सपी या उच्चतर को लक्षित करता है। –

+0

तो शायद मुझे अपना जवाब हटा देना चाहिए। – GameFreak

उत्तर

13

यदि आप इसे स्वयं लागू करना चाहते हैं, तो यह भी काफी आसान है। हमारे आवेदन चुनावों में जानकारी के लिए एक वेब सेवा समय-समय पर मोटे तौर पर निम्नलिखित एपीआई के साथ:

getVersion(Installation ID): returns release version to be installed and hash of all files 
getFileList(Version ID): gets a list of files and file hashes for the release 
getFile(File ID): gets one file 

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

आपकी सभी डाउनलोड की गई फ़ाइलों पर हैश की जांच करना सुनिश्चित करता है कि आपका एप्लिकेशन फ़ाइलों को ठीक से डाउनलोड करता है। इसका उपयोग क्षतिग्रस्त एप्लिकेशन फ़ाइलों की मरम्मत के लिए भी किया जा सकता है। जब रिलीज के लिए हैश सभी डाउनलोड की गई फ़ाइलों के लिए हैश से मेल खाता है, तो यह इंस्टॉल करने का समय है।

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

अद्यतन प्रोग्राम के अंत में, अपना मुख्य एप्लिकेशन दोबारा शुरू करें और यदि आवश्यक हो तो मुख्य एप्लिकेशन अपडेट प्रोग्राम अपडेट करें। वे एक-दूसरे को अपडेट करते हैं, ताकि आप अपडेट प्रोग्राम और मुख्य एप्लिकेशन दोनों में बगफिक्स को दबा सकें।

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

2

आप निर्दिष्ट नहीं किया है क्या भाषा/मंच/रूपरेखा का उपयोग कर रहे हैं, लेकिन मैं एक इस कार्यक्षमता में बनाया गया है का उपयोग करते हुए सलाह देते हैं।

माइक्रोसॉफ्ट ClickOnce की तैनाती की है, और मैं जानता हूँ कि एडोब एयर does something similarauto-update functionality in Java होने के बारे में बात करते हुए एक SO सवाल है।

2

आपने लक्ष्य ऑपरेटिंग सिस्टम निर्दिष्ट नहीं किया है लेकिन ओएस एक्स पर एक अच्छी पसंद है जो मुझे जोड़ने के लिए बहुत आसान है Sparkle है।

3

हम क्या करते हैं; जब एप्लिकेशन शुरू होता है या हर घंटे या तो हम अपने वेबसर्वर को एक GET अनुरोध करते हैं।

http://www.domain.com/app/versionCheck.php?app=APP_NAME&version=2.1.1.1

स्क्रिप्ट डेटाबेस जाँच करता है और संस्करणों तुलना करती है।यदि संस्करण अलग है "UPGRADE" उपयोगिता पर वापस भेजता है, अन्यथा "अच्छा"

यदि उपयोगिता को "अपग्रेड" प्राप्त होता है, तो यह उपयोगकर्ताओं को उपयोगिता के नवीनतम संस्करण को डाउनलोड करने के लिए पूर्व निर्धारित URL पर भेजता है।

यह छोटी उपयोगिताओं (< 20 एमबी) के साथ अच्छी तरह से काम करता है।

सुझाव

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

चूंकि आप .NET और Windows ClickOnce का उपयोग कर रहे हैं, तो आपके लिए ठीक काम करना चाहिए, जैसा कि डैनियल ने कहा था।

एक और विकल्प Shadow Copying का उपयोग करना है। असल में अपनी असेंबली को एक अलग स्थान से निष्पादित करने के लिए कहें जिसे वे इंस्टॉल कर रहे हैं। असेंबली लोड होने के बावजूद यह आपके एप्लिकेशन को अपनी फाइलें अपडेट करने की अनुमति देगा। मैंने अपने आप से पहले इसका उपयोग नहीं किया है, लेकिन मैंने इसे दो बार प्रदर्शित किया है।

क्लिकऑन एक आसान समाधान होगा और मैं इसके लिए तब तक जाऊंगा जब तक कि आपको कुछ आवश्यकता न हो जो यह पूरा न हो। क्लिकऑन आपको एप्लिकेशन को वेब सर्वर या नेटवर्क शेयर पर प्रकाशित करने की अनुमति देगा और आपके उपयोगकर्ताओं को एक नया संस्करण उपलब्ध होने पर स्वचालित रूप से अपनी प्रति अपडेट करने की अनुमति देगा। स्मृति से यह स्वचालित रूप से जांचता है और एप्लिकेशन को प्रारंभ करने का प्रयास करते समय उपयोगकर्ता को संकेत देता है।

+1

क्लिकऑन का सुरक्षा सैंडबॉक्स का अपना संस्करण है। सुनिश्चित करें कि आप जो करने का प्रयास कर रहे हैं, क्लिकऑन आपको ऐसा करने की अनुमति देता है। पूर्ण विश्वास के साथ भी आप कुछ चीजें करने में असमर्थ हो सकते हैं। पिछली बार मैंने कोशिश की, ClickOnce मुझे स्थापित करने के लिए आवश्यक रजिस्ट्री सेटिंग्स को संशोधित करने की अनुमति नहीं देता है मेरा ऐप-विशिष्ट प्रोटोकॉल - पूरी तरह से एक शो-स्टॉपर। – chakrit

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