2012-03-10 13 views
7

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

इसलिए मैंने वाईएक्स पर स्विच करने का फैसला किया। मुझे कुछ साल पहले इसके साथ कुछ अनुभव हुआ है। WiX उपकरण के साथ SharpDevelop का उपयोग करके एक साधारण इंस्टॉलर बनाना बहुत आसान था।

अब मैं वाईएक्स के लिए समाधान और उपकरण एकत्र करने की कोशिश कर रहा हूं। असल में, मैं (अपने ग्राहक द्वारा अनुरोध) निम्नलिखित कार्यक्षमता प्राप्त करने की आवश्यकता:

  • जब मैं संस्थापक लॉन्च, यह सर्वर पर एक पाठ फ़ाइल की जाँच करनी चाहिए और अगर एक नया संस्करण उपलब्ध है देखते हैं। यदि ऐसा है, तो इंस्टॉलर अद्यतन इंस्टॉलर पैकेज डाउनलोड करने और इसे लॉन्च करने में सक्षम होना चाहिए (क्या वाईएक्स में कोई डाउनलोडर यूटिलिटीज है?)

  • निर्भरता को हल करना। मेरे ऐप की प्रमुख निर्भरता .NET 4 है (जो स्वयं विंडोज इंस्टालर 3 पर निर्भर करती है)। इंस्टॉलर को उपयोगकर्ता को स्वचालित रूप से डाउनलोड करने और उन्हें इंस्टॉल करने की पेशकश करनी चाहिए

  • स्थापना प्रक्रिया लॉगिंग, निर्भरताओं की स्थापना प्रक्रिया की लॉग फ़ाइल भी एकत्रित करना चाहिए। मैं नहीं चाहता कि उपयोगकर्ता .NET4 या WindowsInstaller3 स्थापना विफल होने पर विभिन्न .log फ़ाइलों का शिकार करे। सभी जानकारी एक ही स्थान पर एकत्र की जानी चाहिए और यदि कुछ विफल हो जाता है, तो मुझे उपयोगकर्ता को पूर्ण इंस्टॉल लॉग फ़ाइल को सहेजने के लिए एक विकल्प के साथ कस्टम पॉपअप संवाद दिखाना चाहिए और इसे मुझे

  • इंस्टॉलर को पहचानने में सक्षम होना चाहिए मेरे ऐप का नवीनतम संस्करण पहले से स्थापित है, और एक सार्थक अनुकूलित त्रुटि संदेश दिखाई इससे पहले कि यह बाहर निकालता है

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

  • अनइंस्टॉल करने की पेशकश नहीं की गई, इंस्टॉलर को यह पता लगाने में सक्षम होना चाहिए कि कुछ एप्लिकेशन घटक कर रहे हैं प्रयोग में (आवेदन चल रही प्रक्रियाओं) और एक कस्टम त्रुटि संदेश दिखाने के लिए और नहीं बस कुछ गुप्त "स्थापना विफल"

मैंने पढ़ा है कि यह थोड़ा उन्नयन प्रबंधन करने के लिए भले ही मैं अपने UpgradeCode को बनाए रखने के दर्द हो सकता है , क्योंकि यह कोड Windows रजिस्ट्री में संकुचित तरीके से संग्रहीत है और यदि उपयोगकर्ता डाउनलोड की गई फ़ाइल का नाम बदलता है, तो यह WindowsInstaller द्वारा पूरी तरह से नए उत्पाद के रूप में पता लगाया जा सकता है ... o शायद यह WindowsInstaller .msi फ़ाइलों के साथ ही मामला है और WiX के पास इस समस्या से बचने के लिए कुछ चाल है?

अद्यतन डाउनलोड करने के बारे में - मुझे अपने कार्यक्षमता में भी इस कार्यक्षमता की आवश्यकता है। मुझे यकीन नहीं है कि इसे कुशलता से कैसे कार्यान्वित किया जाए, इसलिए मैं एक ही अद्यतन डाउनलोडर कोड/उपयोगिता को दोनों वाईएक्स इंस्टॉलर और मेरे ऐप में पुन: उपयोग कर सकता हूं।

क्या वर्तमान में मौजूदा वाईएक्स उपकरण का उपयोग करके इन सभी आवश्यकताओं को पूरा करना संभव है, या शायद मुझे कुछ घटकों को स्क्रैच से कोड करने की आवश्यकता होगी?

उत्तर

9

वाईएक्स निश्चित रूप से मेरी राय में जाने का तरीका है।

  1. जब मैं संस्थापक लॉन्च, यह सर्वर पर एक पाठ फ़ाइल की जाँच करें और अगर एक नया संस्करण उपलब्ध है देखना चाहिए। यदि यह मामला है, तो संस्थापक अद्यतन इंस्टॉलर पैकेज डाउनलोड करने और इसे शुरू करने के लिए सक्षम होना चाहिए (वहाँ WiX में किसी भी डाउनलोडर उपयोगिताओं कर रहे हैं?)

    मेरी राय में, कार्यक्षमता के इस प्रकार सबसे अच्छा द्वारा नियंत्रित किया जाता आवेदन पत्र। हालांकि आप कस्टम बूटस्ट्रैपर में ऐसी कार्यक्षमता को कार्यान्वित कर सकते हैं। वाईएक्स के नवीनतम विकास में बूटस्ट्रैपर इंजन Burn शामिल है जो आपको इसके ऊपर अपना स्वयं का कस्टम बूटस्ट्रैपर लिखने की अनुमति देता है।

  2. निर्भरताओं को हल करना। मेरे ऐप की प्रमुख निर्भरता .NET 4 है (जो स्वयं विंडोज इंस्टालर 3 पर निर्भर करती है)। संस्थापक डाउनलोड करने और स्वचालित रूप से

    उन्हें स्थापित आप एक पूर्व आवश्यकता के रूप में स्थापित करने के लिए नेट मानक WiX bootstrapper उपयोग कर सकते हैं करने के लिए उपयोगकर्ता की पेशकश करनी चाहिए। या यदि आप अपने स्वयं के कस्टम कामयाब bootstrapper आवेदन बनाते हैं तो आप नेट एक पूर्व आवश्यकता अपने bootstrapper as in this example

  3. स्थापना प्रक्रिया प्रवेश भी निर्भरता 'स्थापना प्रक्रिया के लॉग फ़ाइल का संग्रह करने के लिए स्थापित कर सकते हैं। मैं नहीं चाहता कि उपयोगकर्ता पर विभिन्न .log फ़ाइलों का शिकार करें। .NET4 या WindowsInstaller3 स्थापना विफल हो जाती है। सभी जानकारी एक जगह में एकत्र किया जाना चाहिए और अगर कुछ विफल रहता है, मैं उपयोगकर्ता एक कस्टम पॉपअप दिखाना चाहिए विकल्प के साथ संवाद पूरा स्थापित लॉग फ़ाइल को बचाने और मुझे

    को लिए भेज दो का उपयोग करने के लिए बूटस्ट्रैपिंग विधियों को ऊपर, जब आप अपना एमएसआई लॉन्च करते हैं तो आप लॉगिंग के लिए पैरामीटर निर्दिष्ट कर सकते हैं। अपने स्वयं के कस्टम प्रबंधित बूटस्ट्रैपर में मैंने स्थापना के दौरान बनाए गए लॉग फ़ाइलों को खोलने के लिए एक बटन बनाया।

  4. संस्थापक से पहले ही बाहर निकलता है

    आप यह कर सकते हैं का उपयोग कर होगा कि मेरे ऐप का नवीनतम संस्करण पहले से स्थापित है का पता लगाने, और एक सार्थक अनुकूलित त्रुटि संदेश दिखाने के लिए सक्षम होना चाहिए launch conditions

  5. इंस्टॉलर यह पता लगाने में सक्षम होना चाहिए कि मेरे ऐप का पुराना संस्करण पहले से इंस्टॉल है या नहीं। और उपयोगकर्ता को इंस्टॉलेशन से बाहर निकलने के लिए ऑफ़र करें या पिछले संस्करण को अनइंस्टॉल करें और नया संस्करण इंस्टॉल करें। बीटीडब्ल्यू, कोई मामूली घटक उन्नयन योजनाबद्ध नहीं है, मैं सब कुछ ताजा पुनर्स्थापित करना पसंद करता हूं (मुझे लगता है कि यह WindowsInstaller की शर्तों में एक बड़ा अपग्रेड है)। Installshield ले इस के लिए मुझ पर विफल रही है, यह सिर्फ एक अन्य उत्पाद के बारे में संदेश के साथ एक त्रुटि बॉक्स से पता चला है, लेकिन यह

    स्थापना रद्द करने के अपने अनुभव में की पेशकश नहीं था इस major upgrades कम से कम जटिल दृष्टिकोण हैं।

  6. एक उन्नत के मामले में, संस्थापक पता लगाने के लिए अगर एप्लिकेशन घटकों के कुछ उपयोग में हैं (आवेदन चल रही प्रक्रियाओं) और एक कस्टम त्रुटि संदेश और नहीं बस कुछ गुप्त दिखाने में सक्षम होना चाहिए "स्थापना विफल"

    मुझे लगता है कि WiX/Windows इंस्टालर इन परिदृश्यों से निपटने और स्वचालित रूप से उपयोगकर्ता सूचित करता है कि फ़ाइलें/अनुप्रयोगों आप लेखक को अपने से installe में कुछ भी अतिरिक्त बिना शट डाउन की जरूरत पर आम तौर पर अच्छा कर रहे हैं आर।

सब ने कहा, आप अपने स्वयं के कस्टम WiX का उपयोग कर प्रबंधित bootstrapper और जला बनाने पर गौर कर सकते हैं। हालांकि यह मामूली नहीं है। जाने के लिए सबसे अच्छी जगह है स्रोत कोड को वाईएक्स Weekly Releases पर डाउनलोड करना और प्रोजेक्ट src \ Setup \ WixBA को चेकआउट करना। यह कस्टम बीए है जिसे उन्होंने वाईएक्स स्थापित करने के लिए लिखा था। अभी तक बहुत अधिक दस्तावेज नहीं हैं क्योंकि वाईएक्स 3.6 जारी नहीं किया गया है (हालांकि यह काफी स्थिर है)। हालांकि आपको ठोस वाईएक्स इंस्टॉलर बनाने के लिए अपना खुद का बीए बनाना नहीं है जो उन्नयन और लॉगिंग को संभाल सकता है।

+0

महान और विस्तृत स्पष्टीकरण और उपयोगी लिंक के लिए धन्यवाद। मुझे जर्न के बारे में पता नहीं था, मैं निश्चित रूप से इस पर नजर रखूंगा। – JustAMartin

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