2011-04-11 14 views
7

का उपयोग कर .NET DLL को कैसे पंजीकृत करें मैंने कंप्यूटर की हार्डवेयर जानकारी (उदा। एचडीडी/एसएसडी) पढ़ने के लिए विजुअल स्टूडियो 2010 सी # का उपयोग करके कक्षा पुस्तकालय लिखा है। मैं लक्ष्य कंप्यूटर की हार्डवेयर जानकारी पढ़ने के लिए InnoSetup का उपयोग कर इंस्टॉलर बनाने के लिए इस डीएल का उपयोग करूंगा। अब मेरी समस्याएं हैं .NET dll का उपयोग सीधे तब तक नहीं किया जा सकता जब तक कि यह पहले से पंजीकृत नहीं है। मैं InnoSetup में InitializeSetup के दौरान dll को पंजीकृत करने का कोई तरीका ढूंढने का प्रयास कर रहा हूं, इसलिए मैं डीएलएल में फ़ंक्शंस का उपयोग कर सकता हूं। यहां इंस्टॉलर के लिए मैंने लिखा स्क्रिप्ट है।इनो सेटअप

function InitializeSetup(): Boolean; 
var 
    obj: Variant; 
    diskPartitions: Integer; 
    va: String; 
    ErrorCode: Integer; 
    b: Boolean; 
begin 
    ExtractTemporaryFile('SSHardwareChecker.dll'); 
    RegisterServer(False, ExpandConstant('{tmp}\SSHardwareChecker.dll'), False); 
    obj := CreateOleObject('SSHardwareChecker.SSClass'); 
    va := obj.GetDiskDriveInformation; 
    MsgBox(va, mbInformation, mb_Ok); 
    b:=UnregisterServer(False, ExpandConstant('{tmp}\SSHardwareChecker.dll'), False); 
end; 

समारोह RegisterServer work.It प्रतीत नहीं होता है एक त्रुटि जो RegSvr32 failed with exit code 0x4 कहते हैं फेंकता है। मैंने नेट में बहुत से लेख पढ़े हैं जो कहते हैं। नेट डीएल शॉज को विनियमन का उपयोग करके पंजीकृत किया जाना चाहिए। मैं वास्तव में यह नहीं जानता कि यह कैसे करें, खासकर इनो सेटअप में।

कृपया लोगों की मदद करें।

उत्तर

0

ऐसा करने के लिए, आप चाहिए ..

1) सुनिश्चित करें कि .net 4.0 स्थापित किया गया है (सबसे मशीनों पर डिफ़ॉल्ट रूप से अभी तक नहीं)

2) निकालने बनाने के लिए और रजिस्टर DLL (आप की जरूरत है निकाले गए डीएलएल पर regasm.exe को कॉल करें)

यह केवल "GetDiskDriveInformation" को इंस्टॉल करने के पहले चरण के रूप में करने के लिए बहुत कुछ है।

इनो में मूल रूप से जानकारी प्राप्त करना या मूल डीएलएल को कॉल करना कहीं बेहतर है जिसमें पूर्व शर्त नहीं है।

9

हालांकि यह एक साल से भी अधिक है, लेकिन मुझे हाल ही में एक ही समस्या थी और नीचे दी गई स्क्रिप्ट का उपयोग करके सुधार करने में सक्षम था।

[Run] 
Filename: "{dotnet20}\RegAsm.exe"; Parameters: /codebase YourDLL.dll; WorkingDir: {app}; StatusMsg: "Registering Controls..."; Flags: runminimized 

यदि फ़ाइल प्रारंभिक चरण में पंजीकृत है, तो हम इनो सेटअप के समर्थन कार्यों में से एक का उपयोग कर सकते हैं।

function Exec(const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer): Boolean;

अधिक जानकारी में पाया जा सकता: Inno Setup Help

+1

ध्यान दें कि यह के दौरान होता है स्थापित करने और इस तरह के रूप में, बहुत देर हो चुकी के लिए DLL 'InitialiseSetup' दौरान इस्तेमाल किया जा रहा है। अन्यथा, बाद में डीएलएल का उपयोग करने के लिए यह एक वैध समाधान है। – Deanna

+0

क्या होगा यदि आप ढांचे 3.5 पर काम कर रहे हैं? इसके लिए कोई स्थिरता नहीं है ... – Nyerguds

+1

@Nyerguds मुझे लगता है कि यदि आप 3.5 में काम कर रहे हैं तो आपको लगता है कि आपके पास 2.0 के अंदर सभी कोर एक्जिक्यूटिव के साथ भी स्थापित होना चाहिए। मुझे उम्मीद है कि यह ओएस का भी हिस्सा है। –

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