我的Delphi应用程序Client.exe
需要一些.tlb
文件才能工作。 这些文件定义服务器接口。 相应的对象实例使用System.Win.ComObj.CreateRemoteComObject
创build。
问题是什么?
现在, .tlb
文件在安装过程中使用regtlibv12.exe
全局注册,并且在卸载软件时未注册。 这使得不能安装和卸载同一软件的多个实例,因为它可能会破坏TLB注册。
试图解决它与注册自由COM
这个想法是使用.tlb
文件而不用注册,而是使用.manifest
文件。 我知道如何使用Delphi自定义的Windows应用程序清单文件 。 但我不知道如何从.tlb
文件中提取信息并创build正确的.manifest
文件。
我发现可以用来生成.manifest
文件的Mt.exe ,但它不能帮助我,因为
当设置-tlb
参数时,它会要求相应的DLL文件,但由于COM对象是在远程计算机上创build的,因此应用程序没有随附的.dll
文件
它不接受参数列表中的多个.tlb
文件。
其他工具,如“ 使我的清单”或“ 无人看pipe使我的清单”不再可用或不帮助我。
在这种情况下创build清单文件的正确方法是什么?
AFAIK RegFree COM只支持通过dll注册本地实例 。 DCOM没有办法使用它,这比本地COM复杂得多。
从我自己的实验来看,DCOM可能是一个真正的PITA,特别是在注册方面。 恕我直言,你应该使用本地COM对象,或切换到另一种标准的方法,如REST服务。 您可以重新使用几乎相同的接口,例如使用REST / JSON的SOA方法 – 尤其是可以使用sicClientDriven
模式来模拟DCOM对象。