【问题标题】:VB6: Question about version numbers of dependent OCXsVB6:关于依赖OCX版本号的问题
【发布时间】:2010-06-17 23:10:11
【问题描述】:

VB6 应用程序引用某些 OCX 版本是否重要?

我注意到,如果我通过 IDE 将我的 VB6 应用程序代码放在一台机器上,那么与使用另一台机器相比,表单文件将引用一些 OCX 的不同版本。

这有什么经验法则?可以安全地假设这些旧 OCX 版本中的大多数将相互兼容,因此我不必担心吗?

一些有问题的 OCX 是:

RICHTX32.OCX  v1.1 and v1.2
COMCTL32.OCX  v1.2 and v1.3

【问题讨论】:

    标签: vb6 activex dependencies versioning ocx


    【解决方案1】:

    您可能应该安装通过替换现有版本创建您的应用程序的 ocx 文件仅当您正在安装的版本较新。这是一个问题How can you force VB6 to use the DLLs and OCXs from the app directory?,它解释了将所有应用程序文件安装到同一个文件夹并从那里运行。

    【讨论】:

    • +1,您也不必注册它们。这意味着您很可能无需安装即可 XCOPY 部署您的应用程序。
    【解决方案2】:

    VB6 应用引用某些 OCX 版本是否重要?

    • 是的,因为您将代码“绑定”到 ActiveX 控件的接口。

    这有什么经验法则?

    可以安全地假设这些旧 OCX 版本中的大多数将相互兼容,因此我不必担心吗?

    • 别担心。有问题的两个控件是 Microsoft 控件。一个用于富文本框,另一个是 Windows 通用控件的包装器。这些控件应该没有问题。 (旧版本的 Windows 上的富文本控件存在问题,但在 Windows NT 版本上已解决。)

    对于其他 ActiveX 控件,通常来自第三方供应商或内部,您可能会遇到问题。在你的具体情况下,我不会担心它,直到它发生。这是一个非常复杂的主题。

    【讨论】:

    • @Missico:“升级 Activex 控件”不会将项目中的控件升级到机器上可用的最新版本吗?如果是这样,为什么这一定是个好主意?
    • 更新到开发机器上的最新控件。
    • 始终创建安装。在安装新版本之前始终卸载旧版本。您不能通过简单地分发可执行文件来部署依赖于其他控件的 VB6 应用程序。
    • 更新到开发机器上的最新控件。这是默认行为,并且在 99.9% 的时间都有效。唯一一次我不得不更改此设置是当我将 VB5 应用程序迁移到 VB6 时,我不得不使用其界面在版本之间发生变化的旧控件版本。 (这是一个复杂的主题。)
    【解决方案3】:

    版本中的更改是否会产生“破坏性”更改可能很重要。如果在您的开发人员机器上,它似乎不会以不利的方式影响应用程序,那么您在这些机器上可能会很好。但是,如果/当您需要将此代码部署到一台或多台用户机器上时,您还需要确保这些控件在这些机器上以及与您的代码兼容的版本上。

    您可以创建一个安装包来打包并安装您正在使用的版本,以确保这不会成为问题。

    【讨论】:

    • 在其他机器上执行应用时,正确版本的 OCX 是否会自行注册?
    • 许多 OCX/控件可能已经存在于另一台机器上,但在您的情况下,我不知道您感兴趣的两个是否存在。有一个可以在客户端机器上应用的 VB6 运行时下载,但我不确定其中的全部内容。如果它们在另一台机器上不存在,则仅在该机器上执行应用程序将不起作用。您必须通过 VB6 Runtime 下载(如果其中包含这些控件),通过创建执行此操作的安装程序或手动执行此操作,将控件复制到该机器上,然后将所需的文件复制到机器并注册控件。
    • 如果机器上存在具有相同文件名的 OCX,但它实际上与应用程序所期望的版本不同,那么该应用程序还能工作吗?
    • 视情况而定。如果版本差异在它们之间没有重大更改或兼容,那么它将。你必须试一试,看看会发生什么。就像您发现在您的两台开发机器之间的版本差异并没有破坏您的应用程序一样,它可能在另一台机器上是相同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2019-12-25
    • 2011-08-23
    相关资源
    最近更新 更多