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

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

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

问题是什么?

目前 .tlb 文件在安装过程中使用 regtlibv12.exe 全局注册,并在卸载软件时注销。这使得无法安装和卸载同一软件的多个实例,因为它会破坏 TLB 注册。

尝试用Registration Free COM解决

想法是使用 .tlb 文件而不注册,但使用 .manifest 文件。 我知道如何使用 customized Windows application manifest file with Delphi。但我不知道如何从 .tlb 文件中提取信息并创建正确的 .manifest 文件。

我发现 Mt.exe 可用于生成 .manifest 文件,但它对我没有帮助,因为

Make My ManifestUnattended Make My Manifest 等其他工具不再可用或对我没有帮助。

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

AFAIK RegFree COM 仅支持 registration of local instances, via a dll。没有办法与 DCOM 一起使用,这比本地 COM 复杂得多。

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