wix

2012-05-09 32 views
8

में कॉम डीएल पंजीकृत करने पर स्वयं पंजीकरण नहीं है। तो WIX का उपयोग करते हुए इंस्टॉलेशन करते समय हम COM dll पंजीकरण कैसे करते हैं?wix

tutorial के अनुसार, मैंने कॉमप्लस अनुप्रयोग उदाहरण (गैर .net डीएल) का उपयोग किया। लेकिन यह काम नहीं कर रहा है। यह पंजीकरण करने में विफल रहता है।

मैं कमांड लाइन से regsvr32 का उपयोग करके सफलतापूर्वक पंजीकरण कर सकता हूं। मैं कॉम डीएलएस पंजीकृत करने के लिए कस्टम क्रियाएं नहीं बनाने के बारे में पढ़ता हूं।

तो सबसे अच्छा तरीका क्या है? अगर हमें गर्मी का उपयोग करने की आवश्यकता है, तो हम कहां लिखते हैं और मुख्य परियोजना में परिणाम wxs जोड़ते हैं?

+0

हालांकि आपने पंजीकरण करने का कोई तरीका मांगा है, तो आप COM घटकों को पंजीकृत नहीं कर सकते हैं। पंजीकरण मुफ्त COM मॉडल आपको रजिस्ट्री को छूए बिना COM dlls का उपयोग करने की अनुमति देता है। देखें: http://msdn.microsoft.com/en-us/library/ms973913.aspx – harper

उत्तर

17

मैं करूंगा दृढ़ता से सभी डेटा कॉम घटक रजिस्टर करने के लिए आवश्यक फसल Wix उपकरण Heat.exe उपयोग करने की अनुशंसा और फिर अपने .wxs में टुकड़ा संदर्भ इस तरह दायर:

<ComponentGroupRef Id="FooBar.dll" /> 

या में शामिल अपने .wxs इस तरह दायर:

<?include FooBar.dll.wxi?> 

इस विधि तुम क्या पंजीकरण/कॉम घटक का अ-पंजीकरण के दौरान होता है पर पूरा नियंत्रण देता है।

हालांकि आप अभी भी एक विक्स प्रोजेक्ट में Regsvr32 का उपयोग कर सकते हैं। लेकिन यह COM घटक में RegisterServer/UnregisterServer कार्यों का सही क्रियान्वयन पर निर्भर करता है

<CustomAction Id="RegisterFooBar" 
        Directory="INSTALLDIR" 
        ExeCommand='regsvr32.exe /s "[INSTALLDIR]FooBar.dll"'> 
    </CustomAction> 
    <CustomAction Id="UnregisterFooBar" 
        Directory="INSTALLDIR" 
        ExeCommand='regsvr32.exe /s /u "[INSTALLDIR]FooBar.dll"'> 
    </CustomAction> 

फिर स्थापित अनुक्रम को अपनी कार्रवाई जोड़ें।

<InstallExecuteSequence> 
     <Custom Action="RegisterFooBar" After="InstallFinalize">NOT Installed</Custom> 
     <Custom Action="UnregisterFooBar" After="InstallFinalize">REMOVE="ALL"</Custom> 
    </InstallExecuteSequence> 
+0

मैंने उत्पन्न करने के लिए ताप उपकरण का उपयोग किया और फिर आउटपुट को मेरी .wxs फ़ाइल में कॉपी किया। – rakheep

+0

@ राखीप: यदि आपको कोई उत्तर उपयोगी लगता है, तो कृपया इसे ऊपर उठाएं। जब आपको एक या अधिक सही उत्तर प्राप्त हुए हैं, तो कृपया उत्तर के रूप में सबसे अच्छा चुनें। – JOG

+0

ऐसा लगता है कि उपरोक्त पोस्ट में अपंजीकरण कमांड गुम है। इसके अलावा मुझे इस विधि का उपयोग करना पड़ा जब मैं 1 विशेष डीएल के लिए गर्मी का उपयोग करके रजिस्ट्री जानकारी निकालने में असमर्थ था। किसी विशेष परियोजना में 1 के लिए सभी के लिए काम किया। –

2

आप heat.exe प्रोग्राम का उपयोग करने का प्रयास कर सकते हैं, और फिर अपने विक्स कोड में खंड का संदर्भ दे सकते हैं।

heat.exe फ़ाइल -gg

आउट में के रूप में:

heat.exe फ़ाइल my.dll -gg आउट my.wxs

Ps। जोड़ना -ग स्विच ग्रिड उत्पन्न करेगा, अन्यथा यदि आप मैन्युअल रूप से उन्हें जोड़ना चाहते हैं तो आप इसे छोड़ सकते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^