2010-08-18 14 views
11

अनइंस्टॉल करने में असमर्थ मैंने एक आंतरिक प्रोजेक्ट के लिए एक विक्स इंस्टॉलर विकसित किया है, हालांकि पूरी तरह दुर्घटना से मुझे पता चला है कि मैं अपने विकास मशीन पर इंस्टॉलर को अनइंस्टॉल करने में असमर्थ हूं क्योंकि मुझे निम्न त्रुटि संदेश मिलता है:विक्स/एमएसआई:

सुविधा का उपयोग करने के लिए कोशिश कर रहे हैं एक नेटवर्क संसाधन अनुपलब्ध

.msi है कि मैं से सुविधा से स्थापित के रास्ते पर एक संवाद की ओर इशारा करते के साथ है पर है। (.msi वहां है, हालांकि इसे पुनर्निर्मित किया गया है और इसलिए मैंने इसे स्थापित करने के बाद बदल दिया है)

मुझे इस संवाद से चिंतित है क्योंकि मुझे विश्वास था कि विंडोज इंस्टालर ने स्थापित .MSI फ़ाइलों का ट्रैक रखा है, हालांकि यह संवाद ऐसा लगता है कि मैं इंस्टॉलर को हटाने, स्थानांतरित करने या बदलने के द्वारा अपने अनइंस्टॉलर को तोड़ सकता हूं।

क्या यह मामला है?

यह सुनिश्चित करने के लिए मुझे क्या करना होगा कि मैं इस तरह से अपने अनइंस्टॉलर को तोड़ूं? (क्या हमें किसी मशीन पर इंस्टॉल किए गए इंस्टॉलर के सभी संस्करणों की प्रतियां रखने की आवश्यकता है?)

उत्तर

9

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

कहा जाता है कि, आमतौर पर एक एमएसआई अनइंस्टॉल करने के लिए एमएसआई की आवश्यकता नहीं होती है, लेकिन ऐसी स्थितियां होती हैं जहां इसकी आवश्यकता हो सकती है। उदाहरण के लिए यदि किसी अनइंस्टॉल के दौरान ResolveSource कार्रवाई को कॉल करना था, तो एमएसआई तब .MSI की तलाश करेगा।

अब इस अचार से बाहर कई तरीके हैं:

  1. एक MSI ले लो तुम हो और ORCA के साथ संपादित दायर करने के लिए नाम, UpgradeCode, ProductCode और एमएसआई है कि आप स्थापित की PackageCode मिलान करने के लिए है। आपको %WINDIR%\Installer में मौजूद स्ट्रिप कैश एमएसआई को देखने से यह सारी जानकारी प्राप्त करने में सक्षम होना चाहिए। उस निर्देशिका में सीडी और findstr -i -m SOMESTRING *.msi करें जहां SOMESTRING आपके उत्पाद नाम संपत्ति की तरह अद्वितीय है। एक बार जब आप कैश किए गए एमएसआई का नाम जानते हैं, तो आवश्यक गुण प्राप्त करने के लिए इसे ओर्का में खोलें। फिर इन विशेषताओं को आपके द्वारा उपलब्ध एमएसआई की एक प्रति में रखें और अनइंस्टॉल करने का प्रयास करें। नहीं, यह सटीक एमएसआई नहीं है जिसे आपने इंस्टॉल किया है लेकिन आम तौर पर यह काफी करीब है।

या

  1. उपयोग सामने के छोर Windows इंस्टालर क्लीनअप सुविधा (आप अभी भी इसे किया है) और/या से आवेदन के सभी ज्ञान साफ ​​करने के लिए बैकएंड MSIZAP उपयोगिता एमएसआई और जोड़ें/निकालें प्रोग्राम। नोट, यह वास्तव में प्रोग्राम को अनइंस्टॉल नहीं करता है, इसलिए आपको एक स्क्रिप्ट लिखना होगा या अन्यथा प्रोग्राम के सभी निशान मैन्युअल रूप से अनइंस्टॉल करना होगा।

या

  1. अपने कार्य केंद्र
+0

मेरा सवाल है - मैं उत्पादन मशीनों पर यह कैसे रोक सकता हूं, मुझे पता है कि मेरी मशीन को कैसे ठीक किया जाए! :-) – Justin

+1

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

10

सबसे आसान इस स्थिति से बाहर निकलने के लिए रास्ता Reimage है/एक recache कर पुनर्स्थापित करने के लिए। अपने एमएसआई का एक नया संस्करण बनाएं जो "टूटा हुआ" नहीं है (जिस तरह से यह टूटा हुआ है, इस मामले में, यह वास्तव में टूटा नहीं जा सकता है, आपको बस एक नया स्रोत चाहिए)।फिर आप कमांड लाइन का उपयोग करते हैं जैसे:

msiexec /fv path\to\your.msi /l*v i.txt 

वह एमएसआई पर आपकी एमएमएसआई की प्रतिलिपि बनायेगा जो मरम्मत और मरम्मत करेगा। फिर आप एक बेहतर जगह पर होंगे।

+0

मेरा सवाल है - मैं उत्पादन मशीनों पर यह कैसे रोक सकता हूं, (या मेरा एमएसआई कैसे टूटा हुआ है) मुझे पता है कि मेरी मशीन को कैसे ठीक किया जाए! :-) – Justin

+0

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

1

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

उदाहरण के लिए:

  • % windir% \ Installer में MSI फ़ाइल का पता लगाएं। असफल स्थापना रद्द करने के बाद एमएसआई उस फ़ोल्डर में अंतिम संपादित एमएसआई फाइल होना चाहिए।
  • ओर्का के साथ एमएसआई फ़ाइल खोलें।
  • असफल भाग को हटाएं - उदाहरण के लिए InstallExecuteSequence क्रिया जो विफल रहता है जो अटूट परिदृश्य है।
  • एमएसआई फ़ाइल पर लॉक जारी करने के लिए एमएसआई को बंद करें और ओर्का को बंद करें।
0

- आप स्थापना के दौरान के साथ "स्रोत से रन" प्रयोग किया है?

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

enter image description here

2 - आप स्क्रिप्ट कस्टम कार्यों चला रहे हैं? यदि हां, तो क्या आप tmp फ़ोल्डर में निकालें या स्थापित फ़ाइलों या बाइनरी टेबल से चलाते हैं? यदि हां, तो क्या कस्टम कार्रवाई केवल इंस्टॉल पर चलाने के लिए सशर्त है?

3 - आप शायद एक EXE कस्टम क्रिया है कि एक स्थापित फ़ाइल की ओर इशारा करते है चला रहे हैं? यदि ऐसा है तो यह फ़ाइल नेटवर्क पर पहुंच योग्य नहीं हो सकती है।

4 - अपने userprofile फ़ोल्डरों में से किसी एक साझा नेटवर्क को पुनः निर्देशित कर रहे हैं?

5 - क्या आप नेटवर्क पर सीधे फ़ोल्डर पर कुछ भी इंस्टॉल कर रहे हैं?

कई अन्य संभावनाएं हैं।