阻止VB6项目将控件更新为新的

时间:2014-07-03 13:59:12

标签: vb6 activex ocx

在我的VB项目中,我们使用版本6.1.97.86的MSCOMCTL.OCX,并在vbp文件中引用

Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx

在具有版本6.1.98.34的MSCOMCTL.OCX的Windows 8或PC中打开此项目时,vbp文件将升级到Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx

现在当这个项目(有2.1)在具有旧OCX文件错误的pc中打开时,无法加载MSCOMCTL.OCX。

解决方案是编辑vbp文件并将2.1更改为2.0并打开项目。它将解决问题。但我想禁用这些ocx文件的升级。在这么多论坛中,这是discussed before并将NoControlUpgrade=1添加到vbp文件中,如上所述here

我尝试过相同但它没有工作。即使在添加NoControlUpgrade = 1(也验证未更新更新的ActiveX控件)后,当在具有新ocx版本且vbp文件更改为{的pc中打开时,项目会升级{1}}

那为什么这个解决方案不起作用?还有其他解决方案可以自动升级吗?请帮帮我

编辑:

以下是有问题的完整vbp文件

Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx

1 个答案:

答案 0 :(得分:0)

我在环境中看到了同样的问题。我们的(乐队援助)解决方案是确保我们永远不会分发具有2.1参考的VBP。我们当然将VBP文件保存在源代码管理中,并始终使用签入步骤作为比较和捕获此问题的机会。

(作为一般惯例,我们不会盲目地接受VB6本身对VBP所做的任何更改。通常我会仔细区分并合并到源代码控制中只有有效的更改。)

作为替代方案,您可能会尝试将2.1到2.0版本的机器上的MSCOMCTL.ocx降级。这可能会阻止VBP修改首先发生。