अद्यतन, जुलाई 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 के लिए:
(बेशर्म "पदोन्नति" क्षमा करें - यह आसान पहुंच और पुनर्प्राप्ति के लिए है)
यहाँ उन विषयों के लिए कुछ लिंक दिए गए हैं जो उनके नेटवर्क पर तैनाती को नियंत्रित करने के प्रयास में सिस्टम प्रशासक के लिए सहायक हो सकते हैं:
विशेष कैसे विषयों के लिए:
वैचारिक विषय / सर्वोत्तम अभ्यास: