【发布时间】:2012-02-16 11:09:31
【问题描述】:
我们目前正在根据提供给我们的 API 使用 .net 4.0 开发外部实用程序。
启动外部实用程序的主程序位于虚拟服务器上。因此,每个用户都通过转到网络文件夹并启动 .exe 来启动程序。
在主程序中有一个启动外部实用程序的选项,这些实用程序也是从网络路径启动的。
外部实用程序通过 api dll 连接到主程序。如果我没记错的话,这个dll是一个activex组件。
所有开发人员都在本地安装了主程序。这是在 .Net 中创建引用所必需的。如果安装不可用,则无法绑定引用。 对于开发人员来说,该工具是有效的。
但是对于没有完整安装的最终用户,该工具不起作用,因为它会进入注册表并查找一些值。这些在最终用户站不可用。
最终用户在尝试启动时收到此警告
无法将“System.__ComObject”类型的 COM 对象转换为接口类型“MegaMapp.MegaCurrentEnv”。此操作失败,因为 IID 为“{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE))
{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F} 是最终用户无法使用的注册表项。
有没有办法告诉工具他们应该从 exe 所在的服务器而不是从本地注册表加载注册表项?
【问题讨论】: