MSI फ़ाइलों का उपयोग करने का कॉर्पोरेट लाभ


57

नियमित setup.exe फ़ाइलों पर .msi फ़ाइलों का उपयोग करने के क्या फायदे हैं?

मुझे लगता है कि तैनाती उन मशीनों पर आसान है जहां उपयोगकर्ताओं के पास कुछ अनुमतियाँ हैं, लेकिन विवरण के बारे में सुनिश्चित नहीं है।

Msiexec.exe में ऐसी कौन सी विशेषताएँ हैं जो setup.exe परिदृश्यों का उपयोग करने से परिनियोजन को अधिक आसान बनाती हैं?

किसी भी सुझाव या चाल जब तैनाती .msi अनुप्रयोगों?

जवाबों:


42

बस कुछ लाभ:

  • विज्ञापित किया जा सकता है (ताकि डिमांड इंस्टॉलेशन हो सके)।
  • विज्ञापन की तरह, सुविधाओं का उपयोग किया जा सकता है जैसे ही उपयोगकर्ता उन्हें उपयोग करने की कोशिश करता है।
  • राज्य प्रबंधन को बनाए रखा जाता है इसलिए विंडोज इंस्टॉलर प्रशासकों को यह देखने का एक तरीका प्रदान करता है कि क्या एक मशीन पर एक एप्लिकेशन इंस्टॉल किया गया है।
  • यदि कोई स्थापना विफल होती है, तो वापस रोल करने की क्षमता।

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

MSI इंस्टॉलेशन में हेरफेर करने पर कुछ अतिरिक्त जानकारी के लिए, msiexecरन डायलॉग टाइप करें ।


3
+1 - मैं इस एक '09 (मुझे लगता है कि साइट अभी भी बीटा में हो सकता है वापस तो) में वापस नहीं देखा था, लेकिन मैं प्यार थोड़ा "... मैं लगभग हमेशा अपने आप dreading ... लगता है"। मैं पूरी तरह से उस तरह से महसूस करता हूं (हालांकि, निष्पक्ष होने के लिए, कुछ "एमएसआई" मुझे उसी तरह महसूस करते हैं ... जावा ... Google क्रोम ...)।
इवान एंडरसन

74

अद्यतन, जुलाई 2018 : स्टैकओवरफ़्लो पर निम्न जानकारी का एक अत्यंत संकुचित सारांश उपलब्ध है: एमएसआई के प्रमुख लाभ ( "executive summary"- प्रकार के)।


मैंने विकास में एक रिलीज मैनेजर , बिल्ड इंजीनियर , सेटअप डेवलपर और बड़े निगमों में एक एप्लीकेशन पैकर और तैनाती इंजीनियर के रूप में काम किया है।

यह एमएसआई की सर्वश्रेष्ठ (और सबसे खराब) वैचारिक और वास्तविक दुनिया की विशेषताओं की समीक्षा है। MSI फ़ाइलों में पाई जाने वाली सबसे आम डिज़ाइन समस्याओं को नीचे एक अलग उत्तर के रूप में प्रस्तुत किया गया है । पूरा होने का नाटक नहीं - वास्तव में सिर्फ एक गन्दा "ब्रेन डंप" है - जिसका उद्देश्य "वह सामान जो पुस्तकों में नहीं मिल सकता है" (शायद अच्छे कारण के लिए)।

मैं इस MSDN लेख को एक अच्छे पढ़ने के रूप में सुझाव देना चाहता हूं : Windows इंस्टालर: सिस्टम प्रशासकों के लिए लाभ और कार्यान्वयन


मानकीकरण:

एक शब्द में, एमएसआई मानकीकरण के बारे में है, और विरासत इंस्टॉलर प्रौद्योगिकियों की " तैनाती की गंध " से निपटने के बारे में है। खराब इंस्टॉलेशन आर्किटेक्चर डिज़ाइनों का एक पूरा संग्रह जो बार-बार तैनाती की समस्याओं का कारण बनता है।

कुल मिलाकर MSI इंस्टॉलर के लिए एक व्यापक, मानकीकृत ढांचा प्रदान करता है, जिसमें महत्वपूर्ण रूप से मानकीकृत GUI के साथ चुपचाप चलने के लिए अनइंस्टॉल और बिल्ट-इन फीचर्स और विकल्प भी शामिल हैं जिन्हें दूर से ट्रिगर किया जा सकता है ।

ये सुविधाएँ अकेले पिछली स्थापना तकनीकों पर भारी सुधार का गठन करती हैं, जो अनइंस्टॉल और मूक रूप से चल रहे व्यवहार का इलाज करती हैं - शायद सक्रिय निर्देशिका या समर्पित दूरस्थ प्रशासन उपकरण जैसे Microsoft SCCM (पूर्व एसएमएस) केमाध्यम से विश्वसनीय दूरस्थ पैकेज प्रबंधन के साथ कॉर्पोरेट परिनियोजन के लिए सबसे महत्वपूर्ण विशेषताएं , आईबीएम टिवोली , सीए यूनिकेंटर और समान।

किसी ने इस उत्तर के एक पूर्व संस्करण को दोहराया । शायद एक तेज पढ़ा?


लीगेसी इंस्टालर "परिनियोजन गंध"

MSI सक्रिय रूप से डिजाइन द्वारा विरासत तैनाती महक को हतोत्साहित करता है । इन विषयों पर नीचे के बाद के खंडों में चर्चा की गई है, लेकिन एक त्वरित सूची के रूप में विरासत संस्थापकों और पुरानी तैनाती प्रौद्योगिकी के साथ सबसे अधिक पहचानने योग्य मुद्दे थे:

  • 1) उन्होंने कभी-कभी डाउनग्रेड किया और डीएल -हेल के लिए थोड़ी चिंता के साथ साझा की गई और संस्करणों वाली फाइलों को अधिलेखित कर दिया
  • 2) अक्सर इंस्टॉलर के साथ आपूर्ति की जाने वाली एक उचित स्थापना रद्द दिनचर्या नहीं थी, या यह ठीक से और मज़बूती से पूरा नहीं हुआ - खासकर अगर चुपचाप चलाया जाए। कॉर्पोरेट SOE प्रबंधन के लिए यह एक बहुत बड़ा मुद्दा है
  • 3) मूक स्थापना शायद ही कभी ठीक से समर्थित थी। विश्वसनीयता खराब थी, और अक्सर संवाद चयनों के साथ इंस्टॉल का एक रन रिकॉर्ड करना पड़ता था और यह अप्रत्याशित परिस्थितियों जैसे कि त्रुटि संवाद या चेतावनी संवादों के साथ अच्छी तरह से व्यवहार नहीं करता था जो मूल रन में दर्ज नहीं किए गए थे
  • 4) इंस्टॉलर ने जो स्थापित किया था उसका कोई रिकॉर्ड नहीं रखा गया था और इसलिए डिस्क पर फ़ाइलों को सत्यापित करने के लिए कोई स्वचालित तरीका नहीं था यह जांचने के लिए कि क्या वे अभी भी वे संस्करण हैं जो मूल रूप से इंस्टॉलर द्वारा स्थापित किए गए थे
  • 5) उन्होंने स्थापना निष्पादन योग्य के लिए अप्रत्याशित, अविश्वसनीय और गैर - मानक कमांड लाइन मापदंडों को चित्रित किया
  • 6) अमानक कमांड लाइन और मानकों की कमी के कारण विश्वसनीय और अनुमानित तरीके से कॉर्पोरेट तैनाती के लिए आवश्यक विशिष्ट मूल्यों के साथ इंस्टॉलरों को अनुकूलित करना मुश्किल था
  • 7) सामान्य उपयोगकर्ता इन इंस्टॉल को नहीं चला सकते हैं, और एक को अक्सर अस्थायी व्यवस्थापक अधिकारों के साथ गड़बड़ करना पड़ता था (यदि "पर्याप्त के रूप में" का उपयोग करें "यदि वह पर्याप्त था, या व्यवस्थापक के रूप में लॉग इन करें, तो इंस्टॉल करें और फिर लॉग आउट करें - यह पूर्ण लॉगिन और प्रोफ़ाइल पीढ़ी स्थापित करने के लिए कभी-कभी आवश्यक था)
  • 8) setup.exe संस्थापक अक्सर होता उचित त्रुटि कोड वापस नहीं या सफलता कोड, और कभी कभी इसे तुरंत बाहर आ जाएंगे और एक अन्य प्रक्रिया के लात कि खत्म होगा यह मुश्किल निर्धारित करने के लिए स्थापित पूरा कर लिया गया बनाने स्थापित - विशेष रूप से एक बैच के माध्यम से फ़ाइल
  • 9) अधिकांश setup.exe फ़ाइलों को निकालने की अनुमति है, लेकिन एक विश्वसनीय, अनुमानित फैशन में नहीं - आपको इसे प्राप्त करने के लिए सही स्विच खोजने में आमतौर पर बहुत समय बिताना पड़ता था
  • 10) लॉगिंग आमतौर पर कुछ उपकरणों में खराब और बल्कि बेतरतीब थी। लॉग फ़ाइलों के साथ डिबगिंग ने शायद ही कभी स्पष्टता उत्पन्न की, लेकिन थोड़ी मदद की
  • 11) वहाँ था कोई पारदर्शिता क्या संस्थापक कर रहा था में और कोई या अविश्वसनीय रोलबैक के बाद एक असफल स्थापित परिवर्तन पूर्ववत
  • 12) साझा रनटाइम घटकों को तैनात करने का कोई उद्योग मानक तरीका नहीं था चाहे वे ऑपरेटिंग सिस्टम घटक, तीसरे पक्ष के घटक या आपके खुद के थे

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

एप्लिकेशन रीपैकेजिंग एक विशेषज्ञ नौकरी है और आम तौर पर उत्कृष्ट गुणवत्ता वाले एमएसआई फाइलों में परिणाम होता है अगर जानकार लोगों द्वारा सही किया जाता है, लेकिन जटिल पंजीकरण तर्क के कारण सभी अनुप्रयोगों को फिर से बेचना संभव नहीं है जो कि कुछ अनुप्रयोगों के काम के लिए अंतःक्रियात्मक रूप से चलना चाहिए।


लघु उद्योग लाभ - लघु सारांश

में सादी भाषा एमएसआई की वास्तव में महत्वपूर्ण लाभ (किसी विशेष क्रम में) कर रहे हैं:

  • 1) अनइंस्टॉल हमेशा हर पैकेज के लिए उपलब्ध है जब तक कि यह सक्रिय रूप से अक्षम न हो
  • 2) यह लॉगिंग के लिए समान है , जो महान और मानकीकृत है, हालांकि वर्बोज़ (WiLogUtl.exe जैसे उपकरण लॉग फ़ाइलों का विश्लेषण करने के लिए इस्तेमाल किया जा सकता है)
  • 3) एक MSI फ़ाइल क्या करती है (अर्द्ध) पारदर्शी या अधिकांश भाग के लिए "निरीक्षण योग्य"। अपवाद कस्टम क्रियाएँ है - ( नीचे पारदर्शिता अनुभाग देखें)
  • 4) सेटअप अनुकूलन एक मानकीकृत तरीके से किया जाता है ( रूपांतरित होता है )
  • 5) सक्रिय निर्देशिका विज्ञापन, समूह नीति या दूरस्थ प्रशासन के माध्यम से स्थापित रन के बाद से अस्थायी व्यवस्थापक-अधिकारों के साथ खिलवाड़ करने की कोई आवश्यकता नहीं है । यहाँ कुछ योग्यताएँ। इस स्क्रीन शॉट को ग्रुप पॉलिसी ऑब्जेक्ट एडिटर से भी देखें ।
  • 6) प्रबंधन उपकरणों के माध्यम से या msiexec.exe का उपयोग करके चुप स्थापित / स्थापना रद्द करना अच्छी तरह से काम करता है
  • 7) विफल इंस्टॉल के लिए पूर्ण रोलबैक समर्थन है। यदि आप बॉक्स पर मैन्युअल रूप से स्थापित करते हैं तो कुछ योग्यताएँ हैं जिनके बारे में आपको जानना आवश्यक है।
  • 8) MSI फ़ाइल निरंतरता और तार्किक वैधता के लिए निरीक्षण और सत्यापन दोनों के लिए उधार देती है क्योंकि वे डेटाबेस स्कीमा के अनुरूप होते हैं ( सत्यापन उदाहरण देखें )
  • 9) अद्यतन मानकीकृत प्रकार हैं, हालांकि अनुभवहीन पैकर्स के लिए जटिल और अक्सर त्रुटि प्रवण हैं
  • 10) एमएसआई से फाइलों का निष्कर्षण एक अंतर्निहित सुविधा है (अच्छे त्वरित अवलोकन के लिए जुड़ा हुआ लेख देखें)
  • 11) विंडोज इंस्टॉलर कमांड लाइन, msiexec.exe , इंस्टॉलेशन अनुक्रम को कैसे निष्पादित किया जाना चाहिए, इसके बारे में बहुत बारीक नियंत्रण है, और सभी विकल्प सभी मानक अनुरूप MSI फ़ाइलों के साथ काम करते हैं (लॉग-लेवल सेट करें, चुपचाप / अंतःक्रियात्मक रूप से / चुपचाप चलाएं) , स्थापना पैरामीटर सेट करें, ट्रांसफ़ॉर्म लागू करें आदि ...)।
  • 12) मर्ज मॉड्यूल कई MSI पैकेजों के साथ साझा फ़ाइलों को वितरित करने के लिए MSI तंत्र है। यह संकलित समय पर किसी भी MSI पैकेज के साथ इंस्टॉलेशन लॉजिक मेरिट का एक उपभोज्य मॉड्यूल या बंडल है। Wix के उपयोग के साथ इस अवधारणा पर Wix ने विस्तार और सुधार किया है, जिसमें फ़ाइलें शामिल हैं - एक अवधारणा जो मेरी राय में मर्ज मॉड्यूल से बेहतर है - विशेष रूप से आपकी अपनी फ़ाइलों के लिए (अर्थात OS फ़ाइलें नहीं)
  • 13) विंडोज इंस्टॉलर इंजन में इंस्टॉलेशन पर वर्जन या संशोधित फाइलों को रोकने के लिए एक तंत्र है । यह एक जटिल फ़ाइल प्रतिस्थापन तर्क द्वारा नियंत्रित किया जाता है । हालांकि कुशल और अच्छा, तर्क समाप्त हो सकता है और अपने आप में एक समस्या हो सकती है क्योंकि कई डेवलपर्स को अपग्रेड करते समय अपनी संशोधित कॉन्फ़िगर फ़ाइलों को अधिलेखित करने में सक्षम नहीं होने की समस्या का सामना करना पड़ता है। इन समस्याओं का समाधान आम तौर पर सामान्य तैनाती विरोधी पैटर्न से बचने के लिए अनुप्रयोग डिजाइन में मामूली बदलाव हैं - हालांकि यह अपनी खुद की एक बड़ी चर्चा है।

में असली दुनिया मैं पाया है कम सफल पहलुओं को शामिल करने के पैच (बहुत जटिल), एमएसआई-जीयूआई (सादा सुविधाओं, काफी जटिल है, लचीलेपन का अभाव), लचीलेपन (कारण हो सकता है आत्म मरम्मत समस्याओं दोहरा डिबग करने के लिए कठिन है, और) समग्र जटिलता शुरुआती लोगों के लिए प्रौद्योगिकी से निपटने के लिए (समय पर बुनियादी संचालन की उच्च जटिलता - उदाहरण के उन्नयन के लिए, जीयूआई और कई इंटरेस्टिंग विवरण अप्रत्याशित परिणाम आदि का कारण बनते हैं ...)। एमएसआई के बढ़ते ओवरहेड के कारण स्थापना प्रक्रिया की गति भी काफी धीमी हो गई है। MSI स्थापना की गति में सुधार के लिए कुछ सुझाव देखें

शेष पाठ MSI के इन पहलुओं में से कुछ के बारे में अधिक विस्तार से बताते हैं।


पारदर्शिता (खुले इंस्टॉलर प्रारूप)

एक MSI फ़ाइल अनिवार्य रूप से एक COM- संरचित भंडारण फ़ाइल के रूप में संग्रहीत SQL-Server डेटाबेस - एक अनिवार्य रूप से एक फ़ाइल या डेटा धाराओं के एक संग्रह में एक फ़ाइल सिस्टम के रूप में संग्रहीत है। यह Microsoft Office दस्तावेज़ों में उपयोग की जाने वाली फ़ाइल प्रकार है , और यह एक मानक प्रारूप प्राप्त करता है जिसकी समीक्षा की जा सकती है और निरीक्षण किया जा सकता है - विभिन्न निगमों के लिए एक बड़ा मुद्दा

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

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

अनुकूलन क्षमता (रूपांतरित)

एक MSI को किसी संगठन की आवश्यकताओं और मानकों को फिट करने के लिए परिवर्तनों के माध्यम से अनुकूलित किया जा सकता है, जबकि अभी भी विक्रेता के इंस्टॉलर अपडेट के साथ इंटरऑपरेबिलिटी की अनुमति है। आप इंस्टॉलर को स्वयं नहीं बदलते हैं, आप एक अलग, संगठन-विशिष्ट फ़ाइल में अपना अनुकूलन बनाते हैं जिसे ट्रांसफॉर्म (.mst फ़ाइल) (डेटाबेस टुकड़ा या यदि आप चाहें तो लेनदेन बदलें) कहते हैं। आप कस्टम क्रियाओं को अक्षम करने के लिए और सामान्य परिवर्तन में, इंस्टॉलर में कुछ भी ओवरराइड या अक्षम करने के लिए स्वतंत्र हैं, और आप फ़ाइलों सहित नई चीजें भी जोड़ सकते हैं। ट्रांस्फ़ॉर्म फ़ाइल्स का उपयोग कभी-कभी विभिन्न भाषाओं में MSI फ़ाइल को स्थानीय बनाने के लिए भी किया जाता है। एकल MSI पर कई ट्रांसफ़ॉर्म लागू किए जा सकते हैं, यहाँ छोटा रास्ता के साथ एक नमूना है :

msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"

त्वरित पैरामीटर स्पष्टीकरण:

/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.

प्रबंधन और रिपोर्टिंग

Windows इंस्टालर उन सभी वस्तुओं का एक व्यापक डेटाबेस रखता है, जिसे किसी उत्पाद ने रजिस्ट्री में स्थापित किया है ( HKEY_CLASSES_ROOT \ Installer - कभी भी सीधे यहां कुछ भी नहीं बदलें! यह विशेषज्ञों के लिए भी जाता है)।

यदि कोई उत्पाद स्थापित किया गया है, तो क्या सुविधाएँ स्थापित की गईं, और कौन से फ़ाइल संस्करण स्थापित किए गए थे, यह आप निश्चित रूप से निर्धारित कर सकते हैं। इसके अलावा आप किसी भी पैच की सूची प्राप्त कर सकते हैं जो आधार उत्पाद पर लागू किया गया है, यदि कोई हो। आप इस डेटाबेस को API के सपोर्टिंग Win32, COM या .NET के माध्यम से Microsoft SCCM , IBM Tivoli , CA Unicenter इत्यादि जैसे स्क्रिप्टिंग, कॉन्फ़िगरेशन और एडमिन टूल्स का उपयोग करके कर सकते हैं ...

सुरक्षा (अस्थायी उन्नत अधिकार)

MSI "उन्नत अधिकारों" सिद्धांतों को भी शामिल करता है जो एक प्रतिबंधित उपयोगकर्ता को एक उत्पाद की स्थापना को ट्रिगर करने की अनुमति देता है जिसे स्थापित करने के लिए व्यवस्थापक-अधिकारों की आवश्यकता होती है। यह " विज्ञापन सुविधा " का एक हिस्सा है जो एक प्रशासक को उपयोगकर्ताओं को वास्तव में सभी वर्कस्टेशनों पर स्थापित किए बिना इंस्टालर उपलब्ध कराने की अनुमति देता है। इंस्टॉलर को सही ढंग से काम करने के लिए इस उन्नत अधिकार अवधारणा के लिए कई मुख्य खातों पर सही ढंग से लिखा जाना चाहिए। उपयोगकर्ता स्वयं उत्पाद की स्थापना को ट्रिगर कर सकते हैं, या स्थापित SCCM, Tivoli, Unicenter (सामान्य रूप से बड़ी कंपनियां) जैसी समर्पित तैनाती प्रणाली द्वारा नियंत्रित किया जा सकता है। काम करने के लिए अस्थायी व्यवस्थापक-अधिकारों के साथ खिलवाड़ करने की आवश्यकता नहीं है जो अक्सर विरासत संस्थापकों के साथ होता है।

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

मान्यकरण

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

पुनर्जीवन (स्व-मरम्मत)

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

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

रोलबैक

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

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

रोलबैक यह सुनिश्चित करता है कि वर्कस्टेशन स्थिर अवस्था में छोड़ दिया जाए भले ही इंस्टॉल विफल हो जाए। वास्तविक रोलबैक स्क्रिप्ट एक में संग्रहित है छुपे हुए फोल्डर सिस्टम ड्राइव पर सीधे - आम तौर पर C: \ Config.MSI , और यह एक्सटेंशन .RBS और .RBF वाली फ़ाइलें हैं - रोलबैक स्क्रिप्ट फ़ाइलें । जैसा कि आप उम्मीद कर सकते हैं कि खराब डिजाइन की गई MSI फाइलें यहां विंडोज की अंतर्निहित सुविधाओं का उल्लंघन कर सकती हैं, अधिक जानकारी के लिए इस थ्रेड में मेरी अन्य पोस्ट देखें।

रोलबैक को अक्षम करने और स्थापना को गति देने के तरीके हैं। आमतौर पर अनुशंसित नहीं है, लेकिन यहां MSIFASTINSTALL संपत्ति और DISABLEROLLBACK पर विवरण हैं । यह एक जटिल विशेषता है, लेकिन यहां एक त्वरित रोलबैक अवलोकन है

पैचिंग और अपडेट

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

एक व्यक्तिपरक दृश्य में पैचिंग 2 बुनियादी उपयोगों के लिए अच्छी तरह से काम करता है : 1 ) वितरित उत्पादों के लिए छोटे हॉटफ़िक्स, और 2 ) एक स्थापित उत्पाद को उसके दोषपूर्ण अनइंस्टॉल अनुक्रम को ठीक करने के लिए पैचिंग करना जो उत्पादों को साफ अनइंस्टॉल करने से रोकता है।

एक पैच केवल पहले से काम कर रहे एक अद्यतन के लिए एक वितरण तंत्र है । जैसे कि यह सिर्फ एक कंटेनर है जो मूल सेटअप की तुलना में अधिक जटिल और त्रुटि प्रवण है। पैच के लिए नंबर एक नियम यह है कि यह मूल MSI से छोटा होना चाहिए या पैच देने का कोई स्पष्ट कारण नहीं है। यदि यह कई उत्पाद संस्करणों को लक्षित करता है, तो एक पैच बहुत जल्दी प्राप्त कर सकता है।

लॉगिंग (क्रिया वास्तव में)

Windows इंस्टालर एक मानकीकृत लॉगिंग सुविधा प्रदान करता है जो पिछले अवतारों से बहुत बेहतर है, हालांकि लगभग अत्यधिक क्रिया है। लॉग एनालाइज़र का उपयोग करके लॉग फाइल को डिक्रिप्ट किया जा सकता है , और अनावश्यक जानकारी के साथ बहुत बड़ी लॉग फाइल उत्पन्न करने के लिए कस्टम लॉग स्तर का उपयोग किया जा सकता है। डिबगिंग उद्देश्यों के लिए वर्बोज़ लॉगिंग अत्यंत उपयोगी है। MSI लॉग फ़ाइल (मूल रूप से आप लॉग फ़ाइल में " मान 3 " खोजते हैं) को पढ़ने के लिए एक अच्छे मैनुअल तरीके से रोब मेन्शचिंग का ब्लॉग देखें । यहाँ एक नमूना कमांड लाइन है जो क्रिया लॉगिंग करता है:

msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"

से यह लेख रॉबर्ट मैकडोनाल्ड से Windows इंस्टालर टीम : अत्यधिक MSI लॉगिंग पर एक व्यावहारिक देखो के रूप में सिफारिश की है कैसे Windows इंस्टालर लॉग व्याख्या करने के लिए


निष्कर्ष

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

नया इंस्टॉलर प्रतिमान (विशाल SQL कथन)

नए " प्रतिमान " को समझने के लिए यह समझना महत्वपूर्ण है कि एमएसआई का लक्ष्य घटनाओं के एक निश्चित अनुक्रम के बजाय लक्ष्य प्रणाली पर क्या होने जा रहा है, की एक घोषणात्मक विवरण के रूप में करना है। मुझे लगता है कि आप इसे एक विशाल एसक्यूएल-बयान के रूप में सोच सकते हैं । उदाहरण के लिए आप उन आइटम्स की घोषणा करते हैं जिन्हें आप INI फ़ाइल में जोड़ा या संशोधित करना चाहते हैं। चूंकि इंस्टॉलेशन रन में परिवर्तन ट्रैक किया जाता है और रोलबैक उपलब्ध होता है ताकि इंस्टॉलेशन विफल होने पर परिवर्तन वापस किया जा सके। यह वास्तव में " ऑटोमैजिक " की तरह काम करता है , और सही होने पर विश्वसनीय होता है।

कस्टम क्रियाएँ (सामान्य संदिग्ध)

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

अंतर्निहित MSI सुविधाओं के अतिरिक्त, अधिक से अधिक कस्टम कार्यक्षमता अब Wix जैसे नए ढांचे के माध्यम से उपलब्ध है - MSI फ़ाइलों को संकलित करने का XML तरीका, इसलिए अधिकांश ऑपरेशनों के लिए जटिल कस्टम एक्शन लॉजिक की कम और कम आवश्यकता है।

MSI में ini फ़ाइल सेटिंग्स, फोंट, पर्यावरण चर, रजिस्ट्री कुंजी, COM जानकारी, शॉर्टकट, फ़ाइल एक्सटेंशन, लॉन्च की स्थिति, GAC स्थापना, ODBC, आदि के विलय से निपटने के लिए पूर्ण समर्थन है ...

SQL सर्वर एक्सटेंशन, IIS इंस्टॉलेशन और कॉन्फ़िगरेशन, प्रदर्शन काउंटर, डायरेक्टएक्स चेकिंग और अन्य गेम से संबंधित कार्यों, .NET देशी छवि पीढ़ी, COM +, ड्राइवरों, फ़ायरवॉल नियम, PowerShell एक्सटेंशन, एप्लिकेशन क्लोज़िंग, जैसे बहुत उन्नत सुविधाओं के लिए समर्थन के साथ विज़िटर आगे बढ़ता है । उपयोगकर्ताओं, समूहों, शेयरों और बहुत कुछ का प्रबंधन। से निपटने के लिए कुछ हद तक शामिल है, लेकिन अपने स्वयं के कस्टम कार्यों की तुलना में बहुत अधिक विश्वसनीय।

यदि संभव हो तो हर कीमत पर कस्टम कार्रवाई से बचें

इसे परिप्रेक्ष्य में रखने का प्रयास करने के लिए: ये बिल्ट-इन और रेडीमेड समाधान उपलब्ध सर्वोत्तम परिनियोजन विशेषज्ञों द्वारा बनाए गए हैं , और इनका परीक्षण हजारों, दसियों हज़ारों या शायद लाखों उपयोगकर्ताओं द्वारा भी किया जाता है (अंतर्निहित MSI में निर्मित सामान के लिए) अपने आप)। क्या आप वास्तव में सोचते हैं कि आप अपने स्वयं के कस्टम क्रियाओं को बेहतर बना सकते हैं? एक कस्टम क्रिया का उपयोग करना एक दुर्लभ घटना होनी चाहिए, और आपके द्वारा इंस्टॉल किए गए उत्पाद के लिए कुछ विशिष्ट प्राप्त करने के लिए यह बिल्कुल आवश्यक होना चाहिए । और आपको उचित रोलबैक सपोर्ट भी लिखना होगा, जो काफी शामिल है।

एक कस्टम एक्शन लिखना लगभग हमेशा एक गलती है , लेकिन वास्तविक मामले हैं जब आपको वास्तव में लचीलेपन की आवश्यकता होती है। हमेशा की तरह अपनी लड़ाइयों को अच्छी तरह से चुनना महत्वपूर्ण है। यह पहली बार में एक मजेदार काम हो सकता है, लेकिन आप संभवतः कई अप्रत्याशित समस्याओं का सामना कर रहे हैं और बहुत महंगा समय बर्बाद करेंगे। मैं इसे बहुत गंभीरता से मतलब है। मैंने स्वयं कॉर्पोरेट उपयोग के लिए C ++ कस्टम क्रियाओं का एक सूट लिखा है (त्रुटि प्रवण VBScript कस्टम क्रियाओं को समाप्त करने के लिए) - यह पार्क में कोई चलना नहीं है, और हालांकि कोडिंग दुनिया में सबसे कठिन नहीं हो सकती है, डिबगिंग और परीक्षण। एक वास्तविक MSI फ़ाइल के लिए हुकअप अत्यधिक शामिल नहीं है। तैयार किए गए विकल्प उपलब्ध हैं, इस पर शोध करने से कुछ समय के लिए आपको कई हफ्तों के विकास कार्यों की बचत होगी, और बहुत अधिक तैनाती विश्वसनीयता प्राप्त होगी।

एप्लिकेशन लॉन्च अनुक्रम का उपयोग करें

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

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

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

सेटअप जटिलता

इस तथ्य के आस-पास सेटअप जटिलता केंद्रों का मूल है कि त्रुटियाँ संचयी हैं (आप एक वितरण प्रक्रिया का प्रबंधन कर रहे हैं, न कि केवल एक त्वरित recompile), त्रुटियों को डीबग करना बहुत मुश्किल है (सिस्टम में कोई पहुंच नहीं है जहां त्रुटियां होती हैं), और लक्ष्य प्रणाली राज्यों के बारे में बस हर तरह से कल्पना करने में अलग है । कृपया इस जटिलता की और अधिक गहन चर्चा के लिए इस उत्तर को देखें और कैसे लक्ष्य प्रणालियां चौंकाने वाली संख्या में सावधान हो सकती हैं: विंडोज इंस्टॉलर और वाईएक्स का निर्माण, और तैनाती की जटिलता (नीचे की ओर देखें)।

वाईएक्स (कुछ उद्देश्यों के लिए सर्वोत्तम एमएसआई समाधान)

MSI फ़ाइलों को संकलित करने के लिए नए XML- आधारित तरीके के विवरण के लिए यह वाईएक्स त्वरित परिचय पढ़ें । पाठ आधारित स्रोत फाइलें पहले की तुलना में बहुत बेहतर स्रोत नियंत्रण प्रदान करती हैं। यह एक स्वतंत्र, खुला स्रोत टूलकिट है जो अत्यधिक अनुशंसित है

एनबी : एमएसआई फाइलों के साथ सामान्य डिजाइन समस्याओं के त्वरित ठहरने के लिए धागे में कहीं और देखें - यह बहुत अधूरा है, लेकिन एक पढ़ने के लायक होना चाहिए। मैं इसे इस उत्तर में नहीं जोड़ना चाहता क्योंकि यह 100% से संबंधित नहीं है, लेकिन वास्तविक दुनिया के लिए यह एक महत्वपूर्ण विषय है।


कुछ कोर एमएसआई जानकारी sys-admins के लिए:

(बेशर्म "पदोन्नति" क्षमा करें - यह आसान पहुंच और पुनर्प्राप्ति के लिए है)

यहाँ उन विषयों के लिए कुछ लिंक दिए गए हैं जो उनके नेटवर्क पर तैनाती को नियंत्रित करने के प्रयास में सिस्टम प्रशासक के लिए सहायक हो सकते हैं:

विशेष कैसे विषयों के लिए:

वैचारिक विषय / सर्वोत्तम अभ्यास:


24

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


MSI पैकेज में विशिष्ट समस्याएं और डिज़ाइन फ़ॉल्स देखा गया

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

MSI में शामिल तकनीकी विवरण बहुत जटिल हैं । बुनियादी स्तर पर यह आपकी फ़ाइलों और रजिस्ट्री सेटिंग्स को घटकों (परमाणु स्थापना) और सुविधाओं (उपयोगकर्ता चयन योग्य अनुप्रयोग भागों को स्थापित करने के लिए, उदाहरण के लिए एक शब्दकोश सुविधा) के बारे में है। घटकों को विभाजित करने के लिए कई सर्वोत्तम अभ्यास नियम हैं, और एमएसआई फाइलों में त्रुटियां बहुतायत से हैं। इन त्रुटियों को आम तौर पर "प्रमुख उन्नयन" के उपयोग पर मानकीकृत किया जाता है।

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

MSI में विशिष्ट त्रुटियां हैं (किसी विशेष क्रम में नहीं - और वास्तव में एक वास्तविक गड़बड़ी के रूप में प्रस्तुत):

  • घटक निर्माण त्रुटियाँ (सर्वोत्तम अभ्यास का पालन नहीं करना)। यह लापता फ़ाइलों और सेटिंग्स या ऐसे पैच के रूप में रहस्यमय लक्षणों के साथ पैचिंग और अपग्रेड के लिए समस्या पैदा कर सकता है जो बकवास त्रुटियों के साथ बमबारी करते हैं। जब तक फ़ाइलों की संख्या बहुत बड़ी न हो, तब तक प्रति घटक एक फ़ाइल का उपयोग करना चाहिए।
  • उपयोगकर्ता डेटा से संबंधित समस्याओं को अपग्रेड या रीसेट किया जा रहा है। अधिक विवरण नीचे देखें।
  • इंस्टॉलेशन अनुक्रमों के "ट्रांसेक्स्ड सेक्शन" के बाहर कस्टम क्रियाओं की गलत शेड्यूलिंग या गलत प्रकार के कस्टम एक्शन को गलत तरीके से रखा गया है। यह अक्सर कार्रवाई को विफल करने का कारण बनता है (कोई ऊंचा अधिकार नहीं) जब तैनाती प्रणालियों के माध्यम से दूरस्थ रूप से चलाया जाता है और रोलबैक को प्रभावी ढंग से अपंग कर दिया जाता है क्योंकि केवल लेन-देन किए गए कार्यों को वापस रोल किया जाता है। Windows इंस्टालर लेन-देन (लगता डेटाबेस लेनदेन प्रतिबद्ध) मानक कार्यों के बीच चलती है InstallInitialize और InstallFinalize मुख्य स्थापना अनुक्रम में और ऊंचा अधिकारों के साथ चलाता है । सिस्टम में सभी परिवर्तन इस लेनदेन में होने वाले हैं - और कुछ भी गलत नहीं है (लेकिन दुर्भाग्य से काफी आम है)।
  • ट्रांजैक्स्ड इंस्टॉल अनुक्रम के बाहर सिस्टम में परिवर्तन करने के लिए तत्काल मोड कस्टम क्रियाओं का उपयोग । यह रोलबैक समर्थन को तोड़ता है और आम तौर पर सुरक्षा त्रुटियों को ट्रिगर करेगा क्योंकि तत्काल मोड कस्टम क्रियाएं कोई भी उपयोगकर्ता के उन्नयन के साथ नहीं चलती हैं, जहां उन्हें स्थापना अनुक्रम में रखा जाता है।
  • गलत डिजाइन जो बिना किसी स्पष्ट कारण के होने के लिए स्व-मरम्मत के दोहराए गए चक्र का कारण बनते हैं । इस विषय पर एक और लेख यहाँ है, installsite.org से
  • कस्टम एक्शन जो बिना इंस्टॉलेशन मोड में GUI के दमन का पालन नहीं करते हैं, वे मौडल डायलॉग्स दिखा सकते हैं, जो डिप्लॉयमेंट को पूरी तरह से विफल होने पर चुपचाप चलाते हैं। मौन मोड और इंटरेक्टिव मोड के बीच समग्र अंतर के साथ इस मुद्दे को यहां और अधिक विस्तार से वर्णित किया गया है (कुछ क्रिया और लंबी-घुमावदार): नियंत्रण कक्ष से अनइंस्टॉल निकालें से .msi से अलग है।
  • गलत तरीके से अधिकृत संकुल में कुछ कस्टम क्रिया केवल यूजर इंटरफेस अनुक्रम में डाली जाती हैं । यह उन्हें मूक इंस्टॉलेशन मोड में नहीं चलाने का कारण बनता है। यह कॉर्पोरेट परिनियोजन के लिए गंभीर है क्योंकि मूक स्थापित यहाँ लगभग विशेष रूप से उपयोग किया जाता है। यह समस्या अनइंस्टॉल को भी प्रभावित कर सकती है, जिसका अर्थ यह है कि सभी क्लीनअप कस्टम क्रियाओं को सुनिश्चित करने के लिए आपको अनइंस्टॉल करने के लिए अंतःस्थापित रूप से चलाना पड़ सकता है। फिर, उपयोगकर्ता इंटरफ़ेस स्तरों के लंबे विवरण के लिए पिछले बुलेट बिंदु में लिंक देखें।
  • सेटअप में वे फ़ाइलें हैं जो उस स्थान पर परिनियोजित किए जाने के लिए नहीं हैं जिन्हें वे स्थापित कर रहे हैं। आमतौर पर सिस्टम फाइल्स जिन्हें विंडएक्स असेंबली फोल्डर में साइड-बाय-साइड इंस्टॉल किया जाना चाहिए।
  • धीमी स्थापना गति एक और "समस्या" है जो एमएसआई के साथ कई रिपोर्ट करती है। यहाँ विषय पर कुछ सुझाव दिए गए हैं । कुल मिलाकर विंडोज इंस्टॉलर में जो कुछ भी स्थापित किया जा रहा है उसके लिए रजिस्ट्री में भारी पंजीकरण आवश्यकताओं के कारण बहुत अधिक ओवरहेड की सुविधा है।
  • अनुकूलित जानकारी या साझा डेटा फ़ाइलों की ओवरराइटिंग । यह तब हो सकता है जब फ़ाइल के माध्यम से एक INI फ़ाइल स्थापित की जाती है और उदाहरण के लिए IniFile तालिका नहीं। बाद के मामले में इसे "परिवर्तन लेनदेन" की तरह माना जाता है पूर्व मामले में यह एक फ़ाइल प्रतिस्थापन ऑपरेशन है, जो आम तौर पर गलत होता है जब तक कि आपकी INI फाइल में गैरमानक स्वरूपण या बड़े टिप्पणी अनुभाग नहीं होते हैं जिन्हें आप अपनी फ़ाइल के साथ तैनात करना चाहते हैं (कुछ के लिए सामान्य) डेवलपर उपकरण)।
  • फ़ाइल ओवरराइटिंग के लिए जटिल नियम का कारण बन सकती फ़ाइलों अनजाने ओवरराइट किया जा करने के लिए, या बिल्कुल नहीं अद्यतन - यह एक क्लासिक एमएसआई मुद्दा है। इस लेख की जाँच करें कि आप कैसे एक फ़ाइल को अधिलेखित करने के लिए बाध्य कर सकते हैं जो अपग्रेड नहीं करेगा । नियमों को msiexec.exe कमांड लाइन स्तर पर सेट की गई REINSTALLMODE प्रॉपर्टी के लिए कस्टम सेटिंग्स द्वारा थोड़ा ट्वीक किया जा सकता है (पुराने संस्करणों को अधिलेखित करें, समान संस्करणों को अधिलेखित करें, किसी भी संस्करण को अधिलेखित करें ...) और वे डेटा फ़ाइलों और संस्करण फ़ाइलों के लिए अलग तरह से काम करते हैं। एसडीके में विवरण । यह समझना महत्वपूर्ण है, और यह एक ऐसा डिजाइन है जिसे अक्सर समझे जाने पर भी फेंक दिया जाता है।
  • स्थापना के दौरान COM फ़ाइलों का स्व पंजीकरण सुरक्षा चेतावनी को ट्रिगर कर सकता है या विभिन्न तरीकों से समस्याएं पैदा कर सकता है। इस लेख की जाँच करें: स्व-पंजीकरण हानिकारक माना जाता है
  • फ़ाइल प्रतिस्थापन मुद्दे पर भिन्नता तब होती है जब एक प्रमुख अपग्रेड (जो उत्पाद को पुनर्स्थापित करता है और उत्पाद को पुनर्स्थापित करता है) संशोधित फ़ाइलों को अनइंस्टॉल करता है, और डिफ़ॉल्ट संस्करणों को पुनर्स्थापित करता है। इन मामलों में सामग्री तब वापस दिखती है या अधिलेखित हो जाती है जब वास्तविक तथ्य में इसे पहले अनइंस्टॉल किया गया था और फिर पुनः इंस्टॉल किया गया था।
  • कस्टम उपयोगकर्ता क्रेडेंशियल्स के साथ चलने वाली सेवाएं प्रमुख अपग्रेड परिदृश्यों के दौरान अपनी क्रेडेंशियल खो सकती हैं और साथ ही सेटिंग्स फ़ाइल (डिफ़ॉल्ट रूप से वापस आती है) दिखाई देती हैं (वे वास्तव में अनइंस्टॉल और पुनः इंस्टॉल किए गए थे)। सिर्फ रिकॉर्ड के लिए: मेरी राय में उपयोगकर्ता क्रेडेंशियल्स के साथ चलने वाली सेवाएं पहले स्थान पर एक डिजाइन दोष है।
  • सार्वजनिक गुणों को क्लाइंट से सर्वर प्रक्रिया तक ठीक से पारित नहीं किया जाता है, जिससे कस्टम क्रियाओं को अपेक्षित रूप से पूरा होने से रोका जा सके। इसमें SecureCustomActionProperties गुण अद्यतन करना शामिल है।
  • कुछ एप्लिकेशन मूल रूप से सेटअप को स्थापित करने वाले अन्य उपयोगकर्ताओं के लिए ठीक से चलाने में असमर्थ हैं। यह एक गंभीर डिजाइन त्रुटि है, लेकिन आम तौर पर एचसीयू रजिस्ट्री कुंजियों और उपयोगकर्ता-योग्य फ़ाइलों को जोड़ने के लिए स्वयं-उपचार या ActiveSetup का उपयोग करके अनुभवी आवेदन पैकर्स द्वारा तय किया जा सकता है । यह एक काफी जटिल विषय है, और काम करने के लिए थोड़ी काली कला की आवश्यकता हो सकती है। रिकॉर्ड के लिए: वास्तविक समाधान, मेरी राय में, डिफ़ॉल्ट रूप से सेटिंग और प्रति-मशीन स्थान से कॉपी किए गए टेम्प्लेट के आधार पर या एप्लिकेशन आंतरिक डिफॉल्ट्स (पर आधारित) के आधार पर सभी प्रति-उपयोगकर्ता सेटिंग्स को शुरू करने में सक्षम होने के लिए एप्लिकेशन को स्वयं बदलना है। सोर्स कोड)।
  • कुछ MSI फ़ाइलें यहाँ, और हर जगह गैर-व्यवस्थापकों के लिए पूर्ण पठन / लेखन अधिकार सेट करके स्थापित फ़ाइलों के लिए सुरक्षा को गड़बड़ कर देती हैं । अन्य बार अनुमतियों की कमी के कारण एप्लिकेशन विंडोज के नए संस्करणों पर काम करना बंद कर देता है। एप्लिकेशन पैक ग्रामीणों को एक आवेदन की कस्टम अनुमति के विश्लेषण का सामना करना पड़ता है। आमतौर पर एचकेएलएम में या कहीं और कुछ अतिरिक्त अनुमति की आवश्यकता है
  • कुछ Installshield दिन में वापस setups स्थापना के दौरान इंटरनेट से कनेक्ट करने की कोशिश करेंगे। यह कॉर्पोरेट परिनियोजन परिदृश्यों के लिए भयानक है जहाँ परिनियोजन को बहुत ही नियंत्रित किया जाता है, और इंस्टॉलर को इंटरनेट से सीधे नई सामग्री डाउनलोड करने की अनुमति नहीं दी जाएगी।
  • एक अन्य नेटवर्किंग समस्या तब होती है जब सेटअप एक GUI दिखाने की कोशिश करते हैं जहां लोग डेटा दर्ज करते हैं जो पूरे इंटरनेट पर मान्य है जैसे कि वे इंस्टॉल करते हैं, या बस अपनी वेब-साइट से लाइव सामग्री दिखाने के लिए। यह आमतौर पर ईमेल पते, संपर्क जानकारी, लाइसेंस कुंजी और ऐसी चीजें हैं। कनेक्शन कई कारणों से पूरी तरह से विफल हो सकता है, अक्सर कॉर्पोरेट वातावरण में प्रॉक्सी कॉन्फ़िगरेशन गायब होने के कारण (इंटरनेट से कोई सीधा संबंध नहीं है, सभी इंटरनेट ट्रैफ़िक को एक विशिष्ट कैश सर्वर के माध्यम से रूट किया जाता है और प्रत्येक प्रक्रिया को फ़ायरवॉल के माध्यम से प्राप्त करने के लिए क्रेडेंशियल्स प्रदान करने की आवश्यकता होती है) । यहां सेटअप के माध्यम से लाइसेंस को मान्य करने के खतरों पर एक लेख है
  • इंस्टॉलहिल्ड अपनी इंस्टास्क्रिप्ट भाषा के लिए एक रनटाइम स्थापित करने के लिए उपयोग किया जाता है । यह शर्त सेटअप आमतौर पर setup.exe में शामिल थी, और यह समस्याओं का एक पौराणिक स्रोत था । कई संस्करण, कई असंगतताएं, और कई रनटाइम त्रुटियां हुईं । संस्करण 12 (या उपचार) के बाद से यह रनटाइम मज़बूती से अब स्थापित हो गया है, और यह या तो देशी या सैंडबॉक्सिंग के लिए संकलित है (मुझे यकीन नहीं है कि कौन, एक या दूसरे - शायद सैंडबॉक्स) एक विश्वसनीय फैशन में है। पुराने इंस्टालेशन सेटअप इस परिनियोजन समस्या को प्रदर्शित कर सकते हैं। इन जैसे मुद्दों के लिए Installhield से एक विरासत समर्थन साइट है: http://consumer.installshield.com/common.asp
  • कई सेटअप अनियमित इंस्टॉलेशन व्यवहार या आंतरायिक बग प्रदर्शित कर सकते हैं, जब अंग्रेजी की तुलना में विभिन्न भाषाओं के लिए स्थापित मशीनों पर चलाया जाता है, या यहां तक ​​कि जब आप अंग्रेजी मशीनों पर सेटअप के स्थानीयकृत (अनुवादित) संस्करण चलाते हैं। यह विशुद्ध रूप से रनटाइम विफलता या ऐसे मामले हो सकते हैं जब स्थानीय संवाद बॉक्स में पाठ या गलत स्वरूपण या दोषपूर्ण अनुवाद या भाषा स्थानीयकरण से संबंधित कई अन्य प्रकार की त्रुटियां होती हैं।- अपने आप में विशेषज्ञता का एक पूरा क्षेत्र (छवियों में पाठ का अनुवाद करें, सॉफ़्टवेयर का अनुवाद स्वयं करें, विपणन सामग्री का अनुवाद करें, अंतर्राष्ट्रीय समर्थन अनुरोधों के साथ व्यवहार करें, ओएस में भाषा सेटिंग्स का अनुकूलन, आदि ...)। कुछ भाषाओं को अपनी भाषा की ख़ासियत के लिए पूरे आवेदन को बदलने की आवश्यकता है - विशिष्ट समस्याएं स्ट्रिंग मैक्रोज़ और कोड पृष्ठ सेटिंग्स हैं, बाद वाले को यूनिकोड की शुरूआत के साथ एक समस्या से कम किया जा रहा है। अनुवाद टूल से एक नमूना स्क्रीनशॉट देखें
  • लगभग सभी सेटअप कई अंतर्निहित सत्यापन परीक्षणों में विफल होते हैं जो एमएसआई पैकेज की गुणवत्ता का परीक्षण करने के लिए उपलब्ध हैं। सत्यापन के व्यावहारिक उदाहरण के लिए इस लेख को देखें ।
  • कभी-कभी अपग्रेड इस तथ्य के कारण MSI के लिए असफल हो जाते हैं कि MSI के संस्करण संख्या के केवल 3 अंक वास्तव में प्रमुख अपग्रेड स्कैन के दौरान जांचे जाते हैं
  • INI फ़ाइलों की स्थापना विंडोज इंस्टालर की एक अंतर्निहित सुविधा है। एंट्रीज़ को किसी भी आवश्यक फैशन में जोड़ा, हटाया, विलय या निपटाया जा सकता है। हालाँकि, INI फ़ाइलों को खंडित मानों के बजाय फ़ाइल के रूप में स्थापित करना काफी आम है। यह INI फ़ाइल को अद्यतन किए जाने के बजाय, पुनर्स्थापना के दौरान अधिलेखित होने का कारण बन सकता है। एक बहुत ही आम MSI समस्या।
  • उपरोक्त समस्या .NET अनुप्रयोग और उनकी config.xml फ़ाइलों के मामले में भी है। इस मामले में MSI में सामग्री को विस्तृत तरीके से अपडेट करने का अंतर्निहित तरीका नहीं है, और आपको या तो कस्टम कार्रवाई के माध्यम से अपडेट को कोड करना होगा या इंस्टॉल पर पूरी फाइल को बदलना होगा। इसके लिए Wix में नई सुविधाएँ हो सकती हैं, लेकिन Windows इंस्टालर इंजन में यह बिल्ट-इन नहीं है।

अधिक सूक्ष्म त्रुटियां और कई बड़ी, विशिष्ट समस्याएं हैं जिन्हें मैं भूल गया हूं।

की जाँच करें Windows इंस्टालर बेस्ट प्रैक्टिस से लेख MSDN


5

MSI का उपयोग करने से पैचिंग (MSP फाइलें) और उन्नयन आसान हो जाता है। MSI अद्वितीय उत्पाद और उन्नयन कोड की अवधारणा का उपयोग करता है जो पूरी प्रक्रिया को आसान बनाता है।

कुछ परिनियोजन प्रणालियाँ (CA Unicenter Software Delivery एक उदाहरण है) MSI को एक विशेष तरीके से भी समझ सकती है, जो उन्हें परिनियोजन प्रणाली में बहुत बेहतर एकीकृत करने की अनुमति देता है। उदाहरण के लिए, आप परिनियोजन प्रणाली के सॉफ़्टवेयर लाइब्रेरी में एक MSI फ़ीड कर सकते हैं और यह स्वचालित रूप से उत्पाद के भीतर विभिन्न विशेषताओं का पता लगाएगा और स्वचालित रूप से बहुत अधिक दानेदार कस्टम क्रियाओं (स्थानीय इंस्टॉल, सत्यापन, मरम्मत आदि) और लॉगिंग की अनुमति देगा।

आत्म-चंगा / मरम्मत भी MSI के लिए एक प्रमुख प्लस है।


2

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


0

आप रूपांतरण कर सकते हैं - सिद्धांत रूप में आप बहुत कुछ अनुकूलित कर सकते हैं, यदि प्रोग्राम को विक्रेता द्वारा ठीक से पैक किया गया था, तो आप अंतिम उपयोगकर्ता के साथ किसी भी बातचीत के बिना पूरी तरह से स्वचालित तैनाती कर सकते हैं - जो तब बहुत मददगार होता है जब आप अपने विंडोज़ वातावरण को मानकीकृत करना चाहते हैं और फिर बहुत कुछ करना चाहते हैं कंप्यूटर के।

यह देखने के लिए कि लोग मिसीस [या अनअटेंडेड परिनियोजन] के साथ क्या करते हैं, उदाहरण के लिए इस साइट पर जाएँ और यह फ़ोरम है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.