विंडोज इंस्टालर एक बार में एक ही प्रोग्राम क्यों स्थापित कर सकता है?


10

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

जवाबों:


6

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

  • आपको फ़ाइलों को लॉक करने की आवश्यकता है
  • मध्यवर्ती परिवर्तनों को पूर्ववत करना संभव होना चाहिए, अगर स्थापना विफल हो जाती है (सुनिश्चित नहीं है, अगर यह अब संभव है?)

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

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

तब आपको लेनदेन के अलगाव के स्तर के बारे में सोचना पड़ सकता है - पूरी तरह से सही होने के लिए, आपके लेनदेन को "क्रमबद्ध" होना होगा - लेकिन यह आसान नहीं है, यहां तक ​​कि कई डेटाबेस के लिए भी।

समस्याओं से निपटने के लिए वैकल्पिक रणनीतियाँ भी हो सकती हैं, जो पूर्ण अलगाव को दरकिनार करती हैं, लेकिन आमतौर पर उनकी शुद्धता को साबित करना और भी कठिन होगा।

मेरा मानना ​​है कि समवर्ती स्थापना के साथ, हमारे पास बहुत अधिक अट्रैक्टिव पोस्ट-इंस्टॉलेशन समस्याएं होंगी - खासकर क्योंकि मुझे नहीं लगता है, एक ओएस विक्रेता (या वितरण) इसे 100% साफ करने के लिए सभी परेशानी से गुजरना होगा। इसलिए मैं इसे उपयोग नहीं करना पसंद करूंगा, भले ही यह ओएस द्वारा पेश किया गया हो।

ध्यान दें

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


1
सही होते हुए भी यह जवाब मुझे बहुत बुरा लगता है। कोई व्यक्ति पूछ रहा है कि इंस्टॉलर सेवा उस तरीके से काम करती है जो इस उत्तर को समझने की संभावना नहीं है।
gWaldo

2
@gWaldo: ठीक है, शायद आप सही कह रहे हैं ... तो फिर, मैं सिर्फ यह नहीं कहना चाहता "यह जटिल है, मेरा विश्वास करो (अवधि)। आप इसे वैसे भी नहीं समझेंगे"। हो सकता है कि ओपी (या कोई और इस सवाल पर लड़खड़ा रहा हो) वास्तव में दिलचस्पी ले रहा है, और एक जवाब जो समस्या की तह तक जाता है, उसे अनुमान लगाने में मदद करेगा, अगर वास्तव में बहुत सी जटिलता है जिसमें किसी चीज को हल करना शामिल है जो उस पर इतना आसान लगता है सतह। कौन जाने?
क्रिस लेचर

सच सच। ये एक अच्छा बिंदु है।
gWaldo

जबकि अलगाव के बारे में सभी बातें प्रशंसनीय लगती हैं, आप कई इंस्टॉलर चला सकते हैं यदि वे विंडोज इंस्टालर फ्रेमवर्क का उपयोग नहीं करते हैं। मैंने कभी भी उनमें से किसी को नहीं तोड़ दिया है जब कंधे से कंधा मिलाकर चल रहे हैं ... हो सकता है कि मैं सिर्फ भाग्यशाली हूं: कतार की स्थापना के लिए, उस के लिए उपकरण हैं, लेकिन दिए गए मल्टीकोर सीपीयू (हेक, डेस्कटॉप सीपीयू) अब 8 धागे चला सकते हैं ...), ऐसा लगता है कि उन्हें कंधे से कंधा मिलाकर चलना जवाब होगा (हालांकि वे अभी भी I / O के लिए लड़ सकते हैं)।
रिटिस

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

6

यह डिज़ाइन द्वारा है, एक ही फाइल / फ़ोल्डर / रजिस्ट्री कुंजी / आदि में हेरफेर करने वाले दो प्रतिष्ठानों से बचने के लिए; यह शायद अलग-अलग तरीकों से किया जा सकता था, लेकिन Microsoft ने यह विकल्प बनाया।


आपके दावे का समर्थन करने के लिए कोई संदर्भ?
एरोन दिगुल्ला

1

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

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

तकनीकी MSI स्तर पर, केवल मानक क्रियाओं के बीच की क्रियाएं InstallExecuteSequence में InstallInitialize और InstallFinalize के बीच की क्रिया को लेन-देन के रूप में चलाया जाता है। इन क्रियाओं के बाहर कोई सिस्टम परिवर्तन नहीं होना चाहिए, लेकिन कभी-कभी MSI फ़ाइलों को अन्य अनुक्रमों में परिवर्तन करने के लिए डिज़ाइन किया जाता है।

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