从 Powerbuilder 应用程序调用 .Net COM 程序集(无需注册)
Posted
技术标签:
【中文标题】从 Powerbuilder 应用程序调用 .Net COM 程序集(无需注册)【英文标题】:Invoking .Net COM assembly from Powerbuilder application (without registration) 【发布时间】:2010-03-26 20:03:56 【问题描述】:我们有一个使用 .Net COM 程序集的 Powerbuilder 10 应用程序。我们正在尝试将清单嵌入 PB 应用程序(以调用 COM 程序集而无需注册)。合并的清单文件添加了 .Net COM 程序集依赖项的部分。我们尝试了各种工具来注入具有不同结果的新清单 - 使用 GenMan32 注入将应用程序从 6MB 截断到 45KB。 - 使用 ResourceTuner,文件大小看起来还可以,但尝试启动应用程序会出现“致命磁盘错误”。
对未经注册的 PB 调用 .Net ComEnabled 程序集有何建议?
【问题讨论】:
【参考方案1】:您是否尝试过使用外部清单并确保其有效?如果外部清单不起作用,则说明清单信息不正确。
拥有有效的外部清单后,您可以尝试使用 .Net SDK 中的清单工具 (MT.EXE)。它适用于真正的 EXE 文件。正如 Terry 所指出的,PB 生成的可执行文件包含操作 EXE 的工具需要遵守的附加信息,否则它们会破坏它。
http://blogs.msdn.com/patricka/archive/2009/12/09/answers-to-several-application-manifest-mysteries-and-questions.aspx
【讨论】:
【参考方案2】:这更像是一个重定向而不是一个答案。您需要注意的一件事是 PowerBuilder 生成的可执行文件不遵循 Windows 可执行文件的标准。本质上,它们是加载 PowerBuilder 虚拟机的引导例程,以及一组类定义(对象)。您提出的案例并不是我第一次听说用于修改可执行文件的实用程序在 PowerBuilder 可执行文件上不起作用的情况。
至于对其他方向的积极贡献,我真的不知道足以提供合格的建议。如果是我,如果 ConnectToNewObject() 失败,我会尝试注册 COM 对象,但我不知道这是否可能,或者该路线是否是死胡同。
祝你好运,
特里。
【讨论】:
以上是关于从 Powerbuilder 应用程序调用 .Net COM 程序集(无需注册)的主要内容,如果未能解决你的问题,请参考以下文章