विंडोज इंस्टालर (.msi फाइलें) अन्य इंस्टॉलरों की तुलना में अनइंस्टॉल करने में इतना समय क्यों लेते हैं?


31

Windows XP दिनों के बाद से, InstallShield इंस्टालर (जो MSI के लिए केवल एक बूटस्ट्रैप है) सहित Windows इंस्टालर (.msi फाइलें) अन्य इंस्टालर की तुलना में किसी एप्लिकेशन को अनइंस्टॉल करने में लगभग पांच गुना अधिक समय लेता है। वही आमतौर पर स्थापित करने के बारे में भी सच है।

वे अभी भी इसे लंबे समय तक क्यों लेते हैं, और लोग अभी भी एमएसआई को स्थापित करने के लिए क्यों उपयोग करते हैं? उदाहरण के लिए:

वीएलसी को अनइंस्टॉल करें - लगभग 5 सेकंड लगते हैं।
XYZ को अनइंस्टॉल करें - 15 सेकंड की देरी के बाद "हटाने की तैयारी ..." लॉन्च किया।

यह सब कुछ फ़ाइलों को हटा रहा है और रजिस्ट्री को साफ कर रहा है (जिसमें COM पंजीकरण शामिल हो सकते हैं), इसलिए इसमें इतना समय क्यों लगता है?


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

@ मेहरदाद का मतलब था (1) सिस्टम रीस्टोर को सक्षम करना?
क्रिस एस

वास्तव में हां, टाइपो।
Mehrdad

2
मैं यहां आया क्योंकि MSI अनइंस्टॉल हमेशा के लिए ले रहा था ... और वास्तव में कारण यह था कि पॉप-अप Do you want to allow the following program from an unknown publisher to make changes to this computer?पृष्ठभूमि में छिपा हुआ था।
निकोलस राउल

MSI संस्थापन को गति देने के लिए तकनीकी विवरण के लिए यह उत्तर देखें: superuser.com/a/296534/11906
Stein'smul

जवाबों:


32

विंडोज इंस्टॉलर पहले एक सिस्टम रिस्टोर पॉइन्ट बनाता है, जो काफी धीमा ऑपरेशन है।

इसके अलावा, "विंडोज इंस्टॉलर बेकार है" शीर्षक से , एक अंश:

यह हुआ करता था कि इंस्टॉलेशन में एक प्रोग्राम होता है जिसमें आपके सॉफ्टवेयर को इंस्टॉल करने के लिए कुछ सरल कदम होते हैं, फिर अनइंस्टॉल करने पर रिवर्स होता है।

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

ऐसा लगता है कि, एक इंस्टॉलेशन स्क्रिप्ट चलाने के बजाय, यह एक ट्रैवलिंग सेल्समैन की समस्या को हल करने के बारे में है। जिस कारण यह इतनी धीमी गति से चलती है। या कम से कम, यह मेरी धारणा है।

मैं यह भी जोड़ता हूं कि Windows इंस्टॉलर रजिस्ट्री में सभी जानकारी रखता है, जो दुनिया का सबसे तेज़ डेटाबेस नहीं है।


3
यह संभवतः dpkgअपने पैकेज डेटाबेस के लिए उपयोग करने से अधिक तेज़ है (हालांकि, माना जाता है कि, dpkg इसमें सब कुछ स्टोर नहीं करता है): /var/lib/dpkg/statusएक फ्लैट टेक्स्ट फ़ाइल है जो हर एक पैकेज को सूचीबद्ध करती है जिसे एक बार स्थापित किया गया था, और तब से शुद्ध नहीं किया गया है - और मैं यह भी सुनिश्चित नहीं है कि यह हमेशा शुद्ध लोगों को छोड़ देता है।
सैम

3
dpkgप्रगति की सलाखों के साथ मेरे साथ झूठ मत बोलो जो "टाइम शेष: 0 सेकंड" दो मिनट के लिए कहते हैं, हालांकि ...
लॉरेंस

20

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

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

रजिस्ट्री सफाई के लिए, वहाँ उपलब्ध कई उपकरणों में से एक का उपयोग करें। लेकिन रजिस्ट्री defrag के लिए मैं पर्याप्त की अनुशंसा नहीं कर सकते हैं NTREGOPT आंतरिक छत्ता अनुकूलन और के लिए PageDefrag भौतिक फ़ाइल defragmentation के लिए।

एमएसआई का संचालन रजिस्ट्री पर धीमा हो सकता है इसका कारण यह है कि एमएसआई इसका उपयोग कैसे करता है। Windows इंस्टालर रजिस्ट्री का उपयोग करता है कि किस उत्पाद ने किस घटक को स्थापित किया है और किस स्थान पर इसे स्थापित किया गया है। मूल स्थापना GUIDs का उपयोग संपीड़ित प्रारूप में किया जाता है। इंस्टॉल के बारे में प्रति-मशीन की जानकारी पर पाया जा सकता है HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18, जबकि प्रति उपयोगकर्ता डेटा इसके बगल में HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\और उपयोगकर्ता SID के साथ एक कुंजी पर पाया जाता है ।

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

सभी के सभी, MSI सॉफ्टवेयर की स्थापना और स्थापना रद्द करने के लिए एक पूर्ण और सटीक तरीका है। लेकिन यह इसकी रजिस्ट्री निर्भरता से ग्रस्त है। प्रणाली उत्कृष्ट है। यह विंडोज रजिस्ट्री है जो एक लंबे समय से पहले ओवरहाल होना चाहिए था :)

अधिक उन्नत जानकारी के लिए:
प्रत्येक इंस्टॉलेशन या अनइंस्टॉल प्रक्रिया के दौरान MSI क्या कर रहा है, इसके गहन विश्लेषण के लिए, इस लेख का संदर्भ लें जो बताता है कि MSI डीबग सेटअप कैसे करें। या, कम लेकिन अभी भी मूल्यवान जानकारी के लिए, यह एक लॉगिंग को सक्रिय करने का तरीका है।


4
इसके अलावा, जहां तक ​​मुझे पता है, एमएसआई हर चीज के लिए लेन-देन का उपयोग करता है तो यह हमेशा एक उचित रोलबैक करता है जब भी कोई ऑपरेशन विफल होता है। यह संभवतः गति में योगदान नहीं करता है, लेकिन डेटा अखंडता के लिए काफी आवश्यक है। (मैं गिनती बंद कर दिया कितनी बार मैं साफ करने के लिए के बाद एक NSIS इंस्टॉलर में विफल रहा है की जरूरत -.-)
जॉय

अभी, मैं ओपनऑफिस स्थापित कर रहा हूं और इसे पहले ही लगभग एक घंटा हो चुका है;)
क्विर्क

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

> लेकिन आखिरकार, एक को खुद से पूछना चाहिए कि सॉफ़्टवेयर स्थापित और अनइंस्टॉल करते समय एक, दो या तीन मिनट वास्तव में विवाद का विषय है। हाँ।
एलेक्सी एवरचेंको

6

कॉर्पोरेट इंस्टॉलेशन के लिए विंडोज इंस्टॉलर के कई बड़े फायदे हैं , जिनमें से कुछ मैंने यहां वर्णित किए हैं: https://serverfault.com/a/274609-20599

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

एक अन्य योगदान कारक यह है कि एमएसआई में सभी घटकों को रजिस्ट्री में पंजीकृत किया जाएगा । इसमें कुछ ओवरहेड शामिल हैं

संकलित MSI फ़ाइलों के लिए कुछ समय भी स्थापित फ़ाइलों को निकालने के लिए आवश्यक है ।

MSI स्थापनाओं को गति देने के लिए तकनीकी विवरण के लिए यह उत्तर देखें ।


3

विंडोज इंस्टालर आमतौर पर कई कारणों से उपयोग किए जाते हैं - ऑपरेटिंग सिस्टम एकीकरण, सुरक्षा नीतियां, अप्राप्य स्थापनाएं, और बहुत कुछ।

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

जबकि अन्य विकल्प .MSI फ़ाइलों के बाहर मौजूद होते हैं, कुछ विशिष्ट विशेषताएं हैं जो विंडोज के अधिकांश संस्करणों के साथ एकीकृत होती हैं जो कि बहुत से अन्य इंस्टाल में नहीं होती हैं।

और बस इतना है कि आप जानते हैं - InstallShield हमेशा MSI फ़ाइलों का फ्रंट-एंड नहीं है। उनका अपना स्वामित्व स्थापना समाधान भी है।


1
सवाल यह था कि शुद्ध .exe इंस्टॉलरों की तुलना में MSI को कुछ करने में इतना समय क्यों लगता है।
ग्रैविटी

5
सवाल से ... "और लोग अभी भी MSI का उपयोग करने के लिए क्यों स्थापित करते हैं?"
ब्रेकथ्रू

@grawity: तकनीकी रूप से, msi इंस्टालर को exe के बहुत में पैक किया जा सकता है, लेकिन यह संभवतः बालों को विभाजित करना है।
संगीत 2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.