新编译后的软件在客户环境中出现activex不能创建的问题?
各位,碰到一个问题,现在在维护一个旧系统时,该旧系统是使用VB6.0开发,
在源码的基础上稍微改动了几行对数据库业务操作的SQL语句代码,然后重新编译生成一个新版本的exe文件给客户,
在开发环境中测试时OK的,但是该新版本的exe文件发布到客户处,运行时,报告 "Activex 部件不能创建"的错误,
我使用VB自带的打包工具打包的新版本软件,并与旧版本的打包文件的SETUP.LST进行对比,只有发现以下的一些差别:
其中有些系统的dll或ocx差别较大的有以下:
新版本安装包 旧版本安装包
stdole2.tlb 版本 5.1.2600 2.40.4275.1
asycfilt.dll 版本 5.1.2600 2.40.4275.1
OLEPRO32.DLL 版本 5.1.2600 5.0.4275
OLEAUT32.DLL 版本 5.1.2600 2.40.4275
scrrun.dll 版本 5.7.6002 5.6.0.88
msvcrt.dll 版本 7.0.2600 6.0.9782.0
msado25.tlb 存在 不存在
各位是否有经验这些系统组件版本的差异是否会造成"ActiveX部件不能创建" 的错误。
该错误是出现在软件系统的主界面的显示过程中,是在 Form_Load()函数中,
我在代码中加入了启动日志记录的功能,通过日志分析清楚了解软件连接数据库,查询启动数据时成功的。
主界面上通过拖放控件的形式放置了一个第三方的控件A (ocx文件方式的),在From_Load()函数中,通过
Set mainCtrlB = New MCtrlB 的方式调用了另外一个第三方的控件B (该控件是以 ActiveX exe方式存在的,假设为 MCtrlB.exe。)
mainCtrlB.openpart aaa
代码的流程大致如下:
Private Sub Form_Load()
On Error GoTo ErrHandle
'连接数据库成功
ConnectDB();
LogText("1 连接数据库")
'显示登录界面
LogText("2 登录界面")
'显示主窗体
Me.Show
LogText("3 显示主窗体成功")
'New 控件B
Set mainCtrlB = New MCtrlB
mainCtrlB.openpart aaa
LogText("4 加载控件B成功")
ErrHandle:
'出现错误后,继续执行
MsgBox "主界面错误:错误号" & str(err.Number) & " 来源:" & err.Source & "描述:" & err.Description, vbExclamation, "系统错误提示"
End
End Sub
在客户环境中所观察到的日志记录是,存在 "3 显示主窗体成功" 的记录,但是没有 "4 加载控件B成功" 的记录。
控件B是以一个exe文件的方式存在system32的目录下的。
通过这个日志观察是否可以确定控件A是成功能够加载的,出现错误的是控件B不能创建与运行?