Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a manifest file for TLBs which are used for remote COM objects only?

My Delphi application Client.exe needs a couple of .tlb files to work. These files define server interfaces. The corresponding object instances are created with System.Win.ComObj.CreateRemoteComObject.

What is the problem?

For now the .tlb files are registered globally during the installation using regtlibv12.exe and are unregistered on uninstalling the software. This makes it impossible to install and uninstall multiple instances of the same software since it can break the TLB registrations.

Attempt to solve it with Registration Free COM

The idea is to use the .tlb files without registration but with a .manifest file. I know how to use a customized Windows application manifest file with Delphi. But I don't know how to extract the information from the .tlb files and create the correct .manifest file.

I have found Mt.exe which can be used to generate .manifest files but it doesn't help me because

  • it's asking for a corresponding DLL file when the -tlb parameter is set but there are no .dll files shipped with the application since the COM objects are created on remote machines

  • it doesn't accept multiple .tlb files in the parameter list.

Other tools like Make My Manifest or Unattended Make My Manifest aren't available anymore or don't help me either.

What is the right way to create a manifest file in this case?

like image 495
Wosi Avatar asked Mar 22 '16 12:03

Wosi


1 Answers

AFAIK RegFree COM does only support registration of local instances, via a dll. There is no way of using it with DCOM, which is something much more complex than local COM.

From my own experiment, DCOM could be a real PITA, especially in terms of registration. IMHO you should either use local COM objects, or switch to another much standard approach, like REST services. You may be able to re-use almost the same interfaces using e.g. an SOA approach over REST/JSON - see especially sicClientDriven mode to emulate DCOM objects.

like image 101
Arnaud Bouchez Avatar answered Oct 13 '22 14:10

Arnaud Bouchez