如何为仅用于远程COM对象的TLB创建清单文件?

Wos*_*osi 7 windows delphi com winapi regfreecom

我的Delphi应用程序Client.exe需要几个.tlb文件才能工作.这些文件定义服务器接口.使用创建相应的对象实例System.Win.ComObj.CreateRemoteComObject.

问题是什么?

目前,.tlb文件在安装期间全局regtlibv12.exe注册,在卸载软件时未注册.这使得无法安装和卸载同一软件的多个实例,因为它可能会破坏TLB注册.

尝试使用免费注册COM解决问题

我们的想法是在.tlb没有注册但使用文件的情况下使用这些.manifest文件.我知道如何使用Delphi定制的Windows应用程序清单文件.但我不知道如何从.tlb文件中提取信息并创建正确的.manifest文件.

我找到了可用于生成文件的Mt.exe,.manifest但它对我没有帮助

  • -tlb设置参数时,它要求相应的DLL文件,但.dll由于在远程计算机上创建了COM对象,因此应用程序附带的文件没有

  • 它不接受.tlb参数列表中的多个文件.

其他工具,如Make My ManifestUnattended Make My Manifest不再可用,或者也不帮助我.

在这种情况下,创建清单文件的正确方法是什么?

Arn*_*hez 2

AFAIK RegFree COM仅支持通过 dll 注册本地实例。无法将其与 DCOM 一起使用,DCOM 比本地 COM 复杂得多。

根据我自己的实验,DCOM 可能是一个真正的 PITA,特别是在注册方面。恕我直言,您应该使用本地 COM 对象,或者切换到另一种更标准的方法,例如 REST 服务。您可以使用例如基于 REST/JSON 的 SOA 方法来重用几乎相同的接口- 尤其sicClientDriven请参阅模拟 DCOM 对象的模式。