【发布时间】:2014-07-03 13:59:11
【问题描述】:
在我的 VB 项目中,我们使用版本为 6.1.97.86 的 MSCOMCTL.OCX,在 vbp 文件中的引用将类似于
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx
当此项目在 Windows 8 或具有版本 6.1.98.34 的 MSCOMCTL.OCX 的 PC 中打开时,vbp 文件将升级到 Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx
现在当这个项目(有 2.1)在 pc 中打开时出现旧的 OCX 文件错误,因为无法加载 MSCOMCTL.OCX。
解决方案是编辑 vbp 文件并将 2.1 更改为 2.0 并打开项目。它将解决问题。但我想禁用这些 ocx 文件的升级。在很多论坛中,这是 discussed before 并将 NoControlUpgrade=1 添加到 vbp 文件中,如提到的 here
我尝试了相同的方法,但没有成功。即使在添加 NoControlUpgrade=1(还验证更新的 ActiveX 控件未选中)后,在具有新 ocx 版本和 vbp 文件更改为 Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx 的 PC 中打开项目时,项目也会升级
那么为什么这个解决方案不起作用?自动升级还有其他解决方案吗?请帮我解决这个问题
编辑:
下面是有问题的完整vbp文件
Type=Exe
Form=Form1.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\STDOLE2.TLB#OLE Automation
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx
IconForm="Form1"
Startup="Form1"
HelpFile=""
NoControlUpgrade=1
Command32=""
Name="Project1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
[MS Transaction Server]
AutoRefresh=1
【问题讨论】:
-
它会忽略你,因为如果你尝试使用 2.0,它会告诉你你的程序不会运行。这与 Internet Explorer 10 或 Office 2013 的安全更新有关。您必须摆脱它才能恢复您的机器,以便 2.0 可以再次工作。在虚拟机中运行 VB6 是迟早要发生的事情,你可能要早点考虑。
-
这里是a guy with a very similar problem,虽然他说得倒过来了。