2009-06-13 19 views
9

मेरे पास वर्तमान में एनएसआईएस के साथ बनाए गए इंस्टॉलर के साथ एक प्रोजेक्ट है, लेकिन मैं नए संस्करणों में एक अपडेट करना चाहता हूं जिसमें केवल बदली गई फाइलें हों और एक चेंजलॉग दिखाए। लक्ष्य मंच खिड़कियां है। आपको यह करने के लिए किन तरीकों/सुझाव हैं?आप एनएसआईएस के साथ एक अद्यतन इंस्टॉलर कैसे बनाते हैं?

+0

आप अपने प्रोजेक्ट पूरा किया है? अंत में आपने क्या उपयोग किया? शायद आप उत्तर में से एक को स्वीकार कर सकते हैं :) –

+0

हां, मैंने इसे पूरा किया ... लेकिन मैंने इनमें से किसी भी विधि का उपयोग नहीं किया क्योंकि यह पसंद करने से कहीं अधिक जटिल था। तो मैंने अभी अपडेट के लिए एक पूर्ण रिलीज बिल्ड किया है और एप्लिकेशन को चलाने के पहले उपयोगकर्ता को डाउनलोड करने की आवश्यकता है। – staackuser2

+0

मैंने अभी आपका जवाब स्वीकार कर लिया है ... भले ही मैंने इसका उपयोग नहीं किया, यह उपलब्ध सर्वोत्तम विधि की तरह दिखता है। – staackuser2

उत्तर

12

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

NSIS मूल रूप से एक प्रोग्राम है जो चलाता है और क्या आप जबकि एक Windows इंस्टालर प्रकार संस्थापक बलों आप सुविधाओं और घटकों जो Windows इंस्टालर MSI सेवा द्वारा प्रबंधित किया जा सकता है में अपने आवेदन विभाजित करना चाहते हैं करता है। एमएसआई चीजों को ट्रैक करेगा जैसे आपने उत्पादों के कौन से संस्करण स्थापित किए हैं, भले ही इंस्टॉलर चलाना फिर से रखरखाव मोड में चलाएगा, भले ही आपको विभिन्न संस्करणों के 2 उत्पादों को स्थापित करने की अनुमति दी जाए, चाहे किसी उत्पाद के किसी विशेष संस्करण पर पैच लागू किया जा सके या अपडेट और इंस्टॉल से संबंधित कोई अन्य प्रश्न।

असल में आप जिन चीजों का अनुरोध कर रहे हैं उनमें से अधिकतर यदि आप Windows इंस्टालर तकनीक में बदलते हैं तो बॉक्स के बाहर उपलब्ध होगा। जबकि यदि आप एनएसआईएस (जो विंडोज इंस्टालर तकनीक का उपयोग नहीं करते हैं) का उपयोग करते हैं तो आपको इसे अपने आप को लागू करना होगा।

बस एक उदाहरण के रूप में उन्नत इन्स्टॉलर (http://www.advancedinstaller.com/) नामक एक सुंदर व्यापक इंस्टॉलर निर्माता है जो आप चाहते हैं की तरह लगता है। वैकल्पिक रूप से, यदि आप अपने बाकी जीवन को फोरमिंग फ़ोरम और न्यूज़ ग्रुप खर्च करना चाहते हैं तो वाईएक्स नामक एक ओपन सोर्स उत्पाद है जो कुछ समान करता है;)

+5

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

1

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

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

+0

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

3

मेरी पिछली टिप्पणी के बावजूद मैंने 5000 लाइन इंस्टॉलर का उपयोग किया है 13 कस्टम पृष्ठों के साथ एनएसआईएस। मैंने पैचिंग को भी देखा है और यह एक हैक का थोड़ा सा है। सलाह का मुख्य हिस्सा यह सुनिश्चित करना है कि आप उस संस्करण को पैच कर रहे हैं जो आपको लगता है कि आप पैचिंग कर रहे हैं तो उपलब्ध पैचिंग प्लगइन में से एक का उपयोग करें।

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

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

http://sourceforge.net/projects/nsispatchgen/

0

डेल्फी जैसे कुछ compilers अंतिम निष्पादन में परिवर्तन का एक बहुत कुछ कर सकते हैं।

तो सबसे पहले आपको देखना चाहिए कि यह पैचिंग के लायक है या नहीं।

एक अन्य विचार अपने आप में पैचिंग है। पैचिंग कुछ एंटी वायरस सॉफ़्टवेयर द्वारा विशेष रूप से कुछ सिस्टम फ़ोल्डर्स में अवरुद्ध हो सकता है।

और अंत में वृद्धिशील पैचिंग डेटा आकार मूल फाइलों से आगे कर सकते हैं।

उपरोक्त विषयों मैं तुम्हें पैचिंग ओर संकेत नहीं करते के आधार पर। उपयोग पूर्ण बजाय संस्थापक

1

आप cURL से परिचित हैं? http://www.shininglightpro.com/products/Win32OpenSSL.html http://curl.haxx.se/download.html#openssl

यह किसी भी प्रोटोकॉल डाउनलोड करेगा, और आप इसे अपने फ़ाइलों को डाउनलोड करने के लिए उपयोग कर सकते हैं। यह एक कमांडलाइन ऐप है।

संस्थापक में

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

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

RMDir /r /REBOOTOK '$INSTDIR' 
RMDir /r /REBOOTOK "$SMPROGRAMS\$StartMenuFolder" 
Delete '$SMPROGRAMS\$StartMenuFolder\gpl3license.lnk' 
Delete '$SMPROGRAMS\$StartMenuFolder\readme.lnk' 
Delete '$SMPROGRAMS\$StartMenuFolder\${PRODUCT_TITLE}.lnk' 
DeleteRegKey HKCU "Software\Your major subkey\${PRODUCT_NAME}" 
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" 
DeleteRegKey /ifempty HKCU "Software\${PRODUCT_NAME}" 

PRODUCT_NAME एक है! परिभाषित करें क्योंकि मैंने टेम्पलेट की तरह इन एनएसआई फ़ाइलों का उपयोग किया है। यह केवल इंस्टॉलर फ़ाइल के अनइंस्टॉलर अनुभाग का एक टुकड़ा है।

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