0

我正在谈论的应用程序由 vb6 (80%) 和 c#、.Net Framework 4.0 (20%) 组成。所有新组件都是用 c# 创建的。使用 Microsoft Interop Forms Toolkit 2.1,我们创建了稍后嵌入 vb6 的 COM 用户控件。对于表单,我们使用普通类在 vb6(COM Visible 项目)中创建和打开。为了创建我们使用的设置。

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

我们添加了一个类来打开 ac# Form 到现有的互操作工具包项目。它在开发人员机器上以及当我们在 pc(非开发机器)上进行新安装时工作正常。新类仅用于打开表单。

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

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

我很感激任何建议

4

1 回答 1

1

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

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

这可以提供更深入的洞察力并帮助您集中精力调试问题。

编辑

根据您的描述,似乎在全新安装时安装按预期工作。当您升级早期版本时,COM Interop 组件似乎没有正确注册。这可能表明,在将组件复制到机器并注册的时间与移除现有产品的时间方面,事件的顺序有些偏差。虽然不完全相同,但请参阅此SO Question and answer了解更多详细信息。此外,请查看Windows Installer 中的RemoveExistingProducts操作以获取更多信息。

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

于 2012-06-15T16:05:39.010 回答