kerncadne is not registering error in application installer

Forum for reporting problems
Post Reply
Ibi
Posts: 19
Joined: Mon Jul 29, 2013 12:44 am

kerncadne is not registering error in application installer

Post by Ibi »

Hi
I created an installer for my program using kernelcad, but I am having some problems with installaller. Normally I get “KerCADni.ocx failed to register. HRESULT -2147024769. Contact your support personnel.” message

Can anybody suggest anything?
Regards
Ibi

nickz
Site Admin
Posts: 236
Joined: Fri Jul 26, 2013 3:58 am

Re: kerncadne is not registering error in application instal

Post by nickz »

Hi Ibi

I had same problem with another installer. The problem was that when I added a .NET application to a VS setup and deployment project Visual Studio adds automatically KernelCADne.ocx and two wrapper dlls because application depends on them. In addition to that KernelCADne.ocx was installed by the runtime. So there was a duplication. The error comes from the automatically added ocx.

My solution was to delete the automatically added .ocx from the setup project. Visual Studio does not allow doing it directly. So instead of delete I selected the file and in properties selected “Exclude” (I believe it was)

Regards
Nick

nickz
Site Admin
Posts: 236
Joined: Fri Jul 26, 2013 3:58 am

Re: kerncadne is not registering error in application instal

Post by nickz »

Another common problem is that your installer might be missing some dlls or supporting runtime files which KerCADne.ocx depends on so it cannot load to register.

The best way to make sure everything is installed is to run KernelCAD_Runtime_*_*.exe as a prerequisite for the installation.

If you do not want to run the prerequisite you can do everything yourself too. See the Redistribution topic on top in the installed help you can also check what files KernelCAD_Runtime_*_*.exe is installing

Nick

Ibi
Posts: 19
Joined: Mon Jul 29, 2013 12:44 am

Re: kerncadne is not registering error in application instal

Post by Ibi »

Hi Nick

would you tell me what are those wrapper dlls? Are they part of the explorer? in my case kernelcad works the only element that does not is the explorer. This means the OCX is registered, but may be, i need to re-build the explorer.

my bestr egards
ibi

nickz
Site Admin
Posts: 236
Joined: Fri Jul 26, 2013 3:58 am

Re: kerncadne is not registering error in application instal

Post by nickz »

Hi Ibi

KernelCAD is a native 32 bit COM component from .NET point of view. .NET communicates with COM components using some wrappers to convert incompatible types. This is what contained in the dlls normally called AxInterop.KernCADnet.dll and Interop.KernCADnet.dll. They are thin .NET wrappers for the type library inside KerCADne.ocx

They are generated or updated each time Visual Studio opens a project depending on KerCADne.ocx. Contents of these libraries (after conversion to .NET) appear in the Object browser. AxInterop.KernCADnet.dll is mostly concern with Microsoft’s core COM types. Interop.KernCADnet.dll contains interfaces and types implemented in KernelCAD.

The dlls should be included in installer which uses KerCADne.ocx. This is what Visual Studio does automatically in Setup and Deployment projects. So it is better just leaving them there.

I do not think the problem with your customisation of Explorer is related to this. When explorer option is selected in context menu KerCADne.ocx loads at runtime kcstb32.dll, which is expected to be located in the same folder, and calls an API inside like LaunchExplorer(IModel model, IView view, INotify notify). LaunchExplorer () in turn loads KCEdNnt32.dll and connects the interfaces for communication.

So the explorer is sort of a plug-in. If any dll is not present nothing happens quietly. The explorer project included in KernelCAD has same target KCEdNnt32.dll. If you redistribute your modified KCEdNnt32.dll instead the original one everything should work same way.

If everything works in development environment I would try to install your application and try to debug the explorer by changing the target temporary like .....\MyInstallationDirectory\ KCEdNnt32.dll

Try starting this with the initial explorer code. If it does not work it is our problem. If it does, add small modifications one by one to transform the code to your version. The first failing change will give you/us lots of information.

For completeness: The default KernelCAD explorer implementation has little different code for various reasons. So on screen behaviour is little different, but both versions are supported. We hope to unify this in the next version.

Regards
Nick

Post Reply