आप पहले से ही InnoSetup के साथ अपने कार्यक्रम पैकेजिंग नहीं कर रहे हैं, मैं दृढ़ता से आप इसे करने के लिए स्विच की सलाह देते हैं, क्योंकि इसमें इस तरह की चीज को आसान बनाने की सुविधा है। आप किसी विशेष परिस्थितियों को निर्दिष्ट कर सकते हैं, जैसे फ़ाइलों को अद्यतन नहीं किया जाना चाहिए यदि वे पहले से मौजूद हैं (यानी यदि आपके पास कोई आंतरिक कॉन्फ़िगरेशन फ़ाइलें या ऐसी चीजें हैं), इनोसेटअप स्क्रिप्ट में।
अगला, क्लाइंट मशीन को आपके ऐप के नए संस्करणों के बारे में जानने की अनुमति देने के लिए, अपने सार्वजनिक वेब सर्वर पर एक बहुत ही छोटी फ़ाइल रखें जिसमें वर्तमान रिलीज का संस्करण संख्या और नवीनतम संस्करण के इंस्टॉलर exe के URL हैं। इस फ़ाइल के लिए उपयोगी होने के लिए, जब भी आप अपने प्रोग्राम का एक नया संस्करण जारी करते हैं तो आपको इस फ़ाइल को अपडेट करना होगा, साथ ही इनोसेटअप स्क्रिप्ट में संस्करण संख्या और आपके प्रोग्राम में कुछ प्रकार के APP_VERSION निरंतर भी अपडेट करना होगा। पता लगा रहा एक नए संस्करण HTTP पर अपने वेब सर्वर से वर्तमान संस्करण फ़ाइल पुन: प्राप्त करने, और संस्करण की तुलना द्वारा उपलब्ध होता है जब
- :
उसके बाद, आप अपने आप को अपडेटर के इन भागों को प्रबंधित करना होगा ऐप के स्वयं के APP_VERSION में नंबर। इस क्वेरी को इस तरह से करने के लिए सुनिश्चित करें कि क्लाइंट मशीन में इंटरनेट एक्सेस नहीं है, और यह अनुरोध करने के दौरान जीयूआई को अवरुद्ध नहीं करता है (यदि कोई नेटवर्क समस्या है जो क्वेरी को प्रतीक्षा करने के लिए मजबूर करती है एक समय के लिए एक लंबा समय)।
- यदि कोई नया संस्करण उपलब्ध है, तो उपयोगकर्ता से यह पूछना कि वे अपडेट करना चाहते हैं, और यदि वे हाँ को अपडेटेड इंस्टॉलर को TEMP निर्देशिका में डाउनलोड करते हैं। आप जिस जीयूआई टूलकिट का उपयोग कर रहे हैं उसके आधार पर, डाउनलोड के दौरान प्रगति संवाद प्रदर्शित करने के लिए विभिन्न तंत्र हैं; यह एक अच्छा विचार है क्योंकि इंस्टॉलर कम से कम एक एमबी होने की संभावना है।
- अपने ऐप को बंद करना, एक विशेष अपडेट स्क्रिप्ट in the background चलाकर, फिर ऐप को फिर से शुरू करना।
अद्यतन स्क्रिप्ट मूल प्रक्रिया पूरी तरह से यह करने के लिए (सबसे आसान तरीका है मरने के लिए के लिए इंतजार करेंगे एक कमांड लाइन तर्क के रूप में मूल प्रक्रिया के पीआईडी में गुजरती हैं और जब तक यह हो जाता है अद्यतन स्क्रिप्ट send a query signal 0 to that process हर दूसरे या तो है दूर।) फिर उपयोगकर्ता को "कृपया प्रतीक्षा करें ..." संवाद प्रदर्शित करते समय, शायद पृष्ठभूमि में इंस्टॉलर को चुपचाप चलाएं। एक बार इंस्टॉलर पूरा हो जाने और इसके रिटर्न कोड में सफलता की रिपोर्ट करने के बाद, अपडेटर आपके प्रोग्राम को पुनरारंभ कर सकता है।
इस पर निर्भर करता है कि आपका ऐप कितना बड़ा है, यह गिट या अन्य एससीएम का उपयोग करके विधि की तुलना में बैंडविड्थ का अधिक अपमानजनक है। इस दृष्टिकोण के साथ प्रत्येक अपडेट में ऐप के नवीनतम संस्करण के लिए पूरे इंस्टॉलर को डाउनलोड करना शामिल होगा, जबकि एक एससीएम केवल उन फ़ाइलों को डाउनलोड करेगा जो बदले गए हैं। हालांकि, इसका लाभ यह है कि इसे नियमित वेब सर्वर को छोड़कर कोई विशेष सर्वर सुविधाओं की आवश्यकता नहीं होती है, और उपयोगकर्ता के कंप्यूटर पर एससीएम क्लाइंट की कोई विशेष स्थापना नहीं होती है।
प्लस, इनोसेटअप आमतौर पर सामान्य है। :-)
क्या आप वर्तमान में स्थापना/वितरण के लिए अपने आवेदन को पैकेजिंग कर रहे हैं? क्या यह सिर्फ एक स्क्रिप्ट फ़ाइल है? क्या एप्लिकेशन कोड को अद्यतन करने की आवश्यकता है या आप वेब से डेटा अपडेट लाने के बारे में बात कर रहे हैं? –