I have inherited a fortran executable that makes function calls to a VB.NET dll (called Linker.dll). It looks like the Fortran Module Wizard was used to create an interface module. COMCreateObjectByGUID is then used to create new instances of the COM object. The problem I have is that the executable needs to be deployed on machines that might not have admin rights (meaning I can't register the dll). I've looked into registration free COM using manifests but I can't seem to get this to work. The first question I have is: Does COMCreateObjectByGUID support registration free COM (i.e. am i going down a deadend)? If Registration free COM is possible is there something I'm missing:
The application, however, failed to create the necessary object suggesting that either my manifests are not working as intended or the COMCreateObjectByGUID is completely ignoring them and instead looking in the registry. I've attached the two manifests and the sxstrace log.
I'm very new to Fortran and so I don't know what I'm missing
I have successfully used the tools and advice available on this site www.mazecomputer.com to implement regfree com. They also have a tool available for a small price to generate the manifest (I have no commercial association with mazecomputer by the way).
In my experience the manifest has to be attached to the primary executable. You don't need a manifest for the COM dlls. The dlls are listed in the manifest attached to the primary executable.
Hi Peter. Thank you for the reply
I used the maze computer site, and others, to generate the necessary manifest files (attached to the original post). The side by side trace, also attached, confirmed that it had registered everything correctly. I even tested it with minor mistakes in the manifests and the program failed to load with SxS errors. However, when it came to actually using the COM object in the Fortran executable, it refused to load. in your post you say:
"The dlls are listed in the manifest attached to the primary executable."
I think I've correctly registered the COM dll in the solve.exe.manifest file but maybe I haven't?
I also tried strong signing all the components as well to see if this made a difference, but I ran into a few problems with this (a whole other kettle of fish).