स्थापना रद्द करने के लिए Windows MSI फ़ाइलों को कहाँ संग्रहीत करता है?


25

मैं यह पता लगाने की कोशिश कर रहा हूं कि विंडोज (XP 7 के माध्यम से) एमएसआई फाइलों की स्थापना और स्थापना को कैसे संभाल रहा है। मैं उन स्थितियों में आया हूं जहां विंडोज इंस्टालर की स्थापना रद्द करने में असमर्थ है क्योंकि यह मूल एमएसआई फ़ाइल को याद नहीं कर रहा है, जो मुझे विश्वास दिलाता है कि यह सभी स्थापित एमएसआई पैकेजों की एक प्रति कहीं स्टोर करता है। कहा पे?

मेरे पास कुछ सिद्धांत हैं।

  1. यह उम्मीद करता है कि यह उसी फ़ोल्डर में निवास करेगा जैसा कि इसे स्थापित किया गया था। रजिस्ट्री कुंजियाँ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallमूल संस्थापन फ़ोल्डर को इंगित करती हैं, और जब MSI फ़ाइल अनुपलब्ध होती है तो त्रुटि संदेश। इस फ़ोल्डर से MSI फ़ाइल को निकालना हालांकि स्थापना रद्द करने की प्रक्रिया में बाधा नहीं है, इसलिए मैंने इस सिद्धांत को अस्वीकार कर दिया है।

  2. C:\Windows\Installer। इस फ़ोल्डर में वास्तव में MSI फ़ाइलों के साथ बेतरतीब ढंग से नाम का एक गुच्छा होता है। लेकिन यह सूची अधूरी है। मुझे 1 में उल्लिखित रजिस्ट्री कुंजी में प्रविष्टियां मिलती हैं) जिसमें इस फ़ोल्डर में एमएसआई कॉपी नहीं है।

यह कैसे काम करता है? विंडोज़ इंस्टॉलर MSI-इंस्टॉल किए गए एप्लिकेशन की स्थापना रद्द करने में सक्षम है, भले ही MSI 1 में न हो) और 2 में नहीं)?


विंडोज हमेशा इसे नहीं रखता है। उपयोगकर्ता को विंडोज़ के बारे में बताने के लिए कई तरीके हैं जो वास्तव में इन फ़ाइलों के अपने कैश को साफ़ करते हैं। यदि आपके पास ऐसा सॉफ़्टवेयर है जिसे अनइंस्टॉल नहीं किया जा सकता है तो इसका मतलब है कि डेवलपर ने इंस्टॉलर को गलत बनाया है। Windows XP (आप एक असमर्थित ऑपरेटिंग सिस्टम के बारे में चिंतित क्यों हैं) और विंडोज 7 और / या विंडोज 8. के ​​बीच का स्थान अलग होगा।
रामहाउंड

जवाबों:


44

जाहिरा तौर पर यह इस तरह काम करता है (विंडोज 7 पर, मुझे एक्सपी और अन्य ओएस के बारे में नहीं पता है):

जब कोई उपयोगकर्ता कुछ एप्लिकेशन इंस्टॉल करता है, तो विंडोज निम्नलिखित कार्य करता है:

1) एक रजिस्ट्री कुंजी बनाता है

HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductId GUID]

इस एप्लिकेशन के लिए।

यदि आपके पास अपने ऐप के इंस्टॉलर की मूल msi फ़ाइल तक पहुंच है, तो आप orca.exe में msi फ़ाइल खोलकर और orca में बाईं ओर "संपत्ति" पर क्लिक करके, और "ProductCode" की तलाश कर [ProductID GUID] पा सकते हैं। दाईं ओर लाइन। यदि आपके पास मूल * .msi फ़ाइल तक पहुँच नहीं है, तो आप केवल ऐप के नाम के लिए रजिस्ट्री कुंजी HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall कर सकते हैं।

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

2) विंडोज मूल * .msi फ़ाइल को C: \ Windows \ Installer में कॉपी करता है और इसका नाम बदलकर एक यादृच्छिक नाम (.msi एक्सटेंशन रखता है)। Windows रजिस्ट्री में भी एक HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[InternalUserId]\Products\[some random guid-like sequence of chars identifying to windows your installation]\InstallProperties.मान बनाता है ValueName "LocalPackage" इस reg कुंजी में नामांकित msi फ़ाइल को इंगित करेगा। फ़ाइल को C: \ windows \ Installer में खोजने के लिए आप Windows एक्सप्लोरर में इस फ़ोल्डर में नेविगेट कर सकते हैं, इसे विवरण दृश्य में स्विच कर सकते हैं, कॉलम "विषय" को दृश्यमान बना सकते हैं और आप सभी nnnnnnnn.msi उत्पाद के इसी नाम के लिए देखेंगे।


6
मैं छिपे हुए रहस्य के लिए आपको दो बार अप-वोट करना चाहता था - make column "Subject" visible and you will see for all nnnnnnnn.msi fies their corresponding name of product.। विंडोज एक ऐसा रहस्यमय ऑपरेटिंग सिस्टम है: P
RBT

3) चरण 3 मेरे लिए आवश्यक था। मुझे 5188bfc6.msi फ़ाइल (हेक्स # .msi) की प्रतिलिपि बनानी थी और मूल फ़ाइल नाम MyApp.msi का नाम बदलना होगा, इससे पहले कि अनइंस्टॉलर फ़ाइल स्वीकार करेगा। इसके बाद अनइंस्टॉल ने ठीक काम किया।
जो बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.