如何为仅用于远程 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 注册。
想法是使用 .tlb
文件而不注册,但使用 .manifest
文件。
我知道如何使用 customized Windows application manifest file with Delphi。但我不知道如何从 .tlb
文件中提取信息并创建正确的 .manifest
文件。
我发现 Mt.exe 可用于生成 .manifest
文件,但它对我没有帮助,因为
它在设置 -tlb
参数时要求相应的 DLL 文件,但由于 COM 对象是在远程计算机上创建的,因此应用程序没有 .dll
文件
它不接受参数列表中的多个 .tlb
文件。
Make My Manifest 或 Unattended 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 对象。
我的 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 或 Unattended 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 对象。