使用 WISE 注册 COM 互操作 Dlls

本文关键字:互操作 Dlls COM 注册 WISE 使用 | 更新日期: 2023-09-27 18:37:23

我所说的应用程序由vb6(80%)和c#,.Net Framework 4.0(20%)组成。所有新组件都是使用 c# 创建的。使用Microsoft互操作表单工具包 2.1,我们创建了稍后嵌入到 vb6 中的 COM 用户控件。对于表单,我们使用普通类在 vb6(COM 可见项目)中创建和打开。为了创建设置,我们使用明智的设置。

本地一切正常 - 仅当我们使用明智创建的设置在非开发人员计算机上安装应用程序时,才会出现问题。

我们添加了一个类,用于向现有互操作工具包项目打开 c# 窗体。它在开发人员机器上运行良好,当我们在 pc(非开发机器)上进行新安装时也是如此。新类仅用于打开窗体。

但是当我们将应用程序更新到较新版本时,该类不再工作。我们必须卸载旧版本并安装新版本才能使其再次工作。

以前有人遇到过类似的问题吗?

我很感激任何建议

使用 WISE 注册 COM 互操作 Dlls

这似乎是Windows安装程序和升级期间排序的问题。您的应用程序是否允许并行安装(例如,版本 1 和版本 2 可以同时安装),或者您的安装程序是否将早期版本升级到最新版本?您可以尝试记录安装并查看日志文件,以准确了解安装/升级过程中发生的情况。

您可以通过从命令行调用 Msiexec 来记录 msi 安装。

这可以提供更深入的见解,并有助于将精力集中在调试问题上。

编辑

从您所描述的内容来看,似乎在全新安装时安装按预期工作。升级早期版本时,COM 互操作组件似乎未正确注册。这可能表明,与删除现有产品相比,将组件复制到计算机并注册的时间与事件顺序略有偏差。虽然不完全相同,但有关更多详细信息,请参阅此SO问题和答案。此外,请查看 Windows Installer 中的 RemoveExistingProducts 操作以获取详细信息。

我会记录一个你知道可以正常工作的安装(例如

,在"干净"的机器上),然后记录一个你知道会失败的安装(例如升级),然后使用工具比较两个日志文件以查看输出是否相同。如果没有,这将为您提供有关在哪里查找的线索。如果它们相同,则可能是时候与供应商联系,看看他们是否可以帮助确定导致问题的原因。