我的Delphi应用程序Client.exe
需要几个.tlb
个文件才能工作。这些文件定义服务器接口。使用System.Win.ComObj.CreateRemoteComObject
创建相应的对象实例。
有什么问题?
现在,.tlb
文件在安装期间使用regtlibv12.exe
进行全局注册,并在卸载软件时取消注册。这使得无法安装和卸载同一软件的多个实例,因为它可能会破坏TLB注册。
我们的想法是使用.tlb
文件而不注册,但使用.manifest
文件。
我知道如何使用customized Windows application manifest file with Delphi。但我不知道如何从.tlb
文件中提取信息并创建正确的.manifest
文件。
我发现Mt.exe可用于生成.manifest
个文件,但它对我没有帮助,因为
在设置-tlb
参数时要求相应的DLL文件,但由于COM对象是在远程计算机上创建的,因此应用程序附带了.dll
个文件
它不接受参数列表中的多个.tlb
文件。
Make My Manifest 或无人看管Make Man Manifest 等其他工具不再可用,或者也无法帮助我。
在这种情况下创建清单文件的正确方法是什么?
答案 0 :(得分:2)
AFAIK RegFree COM 仅支持registration of local instances, via a dll。没有办法将它与DCOM一起使用,这比本地COM要复杂得多。
根据我自己的实验,DCOM可能是一个真正的PITA,特别是在注册方面。恕我直言,您应该使用本地COM对象,或切换到另一种标准方法,如REST服务。您可以使用例如重新使用几乎相同的接口。 an SOA approach over REST/JSON - 请参见sicClientDriven
模式以模拟DCOM对象。