मैं अपेक्षाकृत नया WiX के लिए नया हूं। यह एक अच्छा टूल है, लेकिन मुझे इसे बेहतर तरीके से सीखने के लिए अभी भी की आवश्यकता है। मुझे COM घटक के पंजीकरण और पंजीकरण के साथ कोई समस्या आई है। मैंने दो अनुप्रयोगों के लिए इंस्टॉलर बनाए हैं, उन्हें ए और बी दोनों कॉल करने के लिए एक ही COM घटक का उपयोग कर रहे हैं। मैंने गर्मी उपकरण का उपयोग किया है, अनुशंसित है। ए या बी स्थापित करते समय, घटक समस्याओं के बिना पंजीकृत है।WIX: दो प्रोग्रामों में से एक को हटाने पर COM अनियंत्रण
लेकिन जब मैं ए और बी स्थापित करता हूं, तो ए को हटाएं (जोड़ें/निकालें प्रोग्राम) COM कक्षा अनियंत्रित हो जाती है और बी अब इसका उपयोग नहीं कर सकता है। क्या ऐसा होने से रोकने के लिए कोई साफ समाधान है? जब मैं ए और बी को अनइंस्टॉल कर दूं तो मैं COM को अनधिकृत करना चाहता हूं।
किसी भी मदद की सराहना की जाएगी,
सादर, madbadger
संपादित करें: अपनी प्रतिक्रियाओं के लिए धन्यवाद। मैंने दोनों इंस्टॉलरों में GUID को एक ही मान पर सेट किया है और अब रजिस्ट्री कुंजियों को ठीक से हटाया जा रहा है, यही वह समय है जब सिस्टम से अंतिम प्रोग्राम हटा दिया जाता है।
होवर, समस्या एक कारण के लिए बनी हुई है। मैंने HKEY_CLASSES_ROOT/CLSID/[उपयुक्त COM GUID] के अंतर्गत रजिस्ट्री की जांच की है। ऐसा होता है:
- मैं ए स्थापित करता हूं और COM का पथ [A/घटक.dll के पथ] पर सेट होता है
- मैं बी स्थापित करता हूं और COM का पथ सेट किया जाता है [बी/घटक.dll के पथ ]
- मैं बी को हटाता हूं और COM अवशेषों का पथ [बी/घटक.dll के पथ]
- अब ए पंजीकृत घटक के माध्यम से COM घटक तक नहीं पहुंच सकता है, क्योंकि [बी/घटक.dll का पथ] मौजूद नहीं है अब
अब मुझे लगता है कि COM घटक को दोनों अनुप्रयोगों के लिए एक ही निर्देशिका में रखना अनिवार्य है। क्या विंडोज इंस्टालर पुराने पथ पर वापस जाने में सक्षम नहीं है, या क्या यह कुछ है जो मुझे याद नहीं है?
क्या मुझे दोनों इंस्टॉलरों के लिए COM घटक को एक स्थान पर रखना चाहिए? क्या system32 फ़ोल्डर इसके लिए एक अच्छी जगह है? – madbadger
हाँ, आपको इसे एक ही स्थान पर रखना होगा।(विंडोज इंस्टालर GUID और फ़ाइल/रजिस्ट्री पथ दोनों के साथ पहचान करता है)। System32 एक अच्छी जगह नहीं है। मैं सामान्य फ़ाइलों फ़ोल्डर (आमतौर पर 'प्रोग्राम फ़ाइलें \ सामान्य फ़ाइलें \ YourCompanyName') के तहत कहीं भी सुझाव दूंगा। आप इसे विक्स में इस तरह दर्ज करेंगे: 'निर्देशिका = "[कॉमनफाइलफोल्डर] \ YourCompanyName" ' –
धन्यवाद यह बहुत अच्छी तरह से समझाने के लिए बहुत कुछ! – madbadger