7

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

问题是什么?

目前,这些.tlb文件在安装期间使用全局regtlibv12.exe注册,并在卸载软件时取消注册。这使得安装和卸载同一软件的多个实例变得不可能,因为它会破坏 TLB 注册。

尝试使用免费注册 COM解决它

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

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

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

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

其他工具(例如“制作我的清单”或“无人值守的制作我的清单”)不再可用或对我没有帮助。

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

4

1 回答 1

2

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

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

于 2016-03-23T14:16:42.297 回答