【发布时间】:2011-02-23 18:40:19
【问题描述】:
我在那里
我有这种情况:
a) 笔记本:Windows Server 2008 R1, Visual basic 6 with all service pack。
b) 桌面:Windows Server 2008 R1(最近更新到 sp1,我不知道是不是有罪),带有所有服务包的 Visual basic 6。
c) 客户端计算机 (Windows XP)
我在 a) 中创建了一个可执行文件并将其安装在 c) 中。它使用 ADO (msado15.dll),在 a) 和 C)
中都能正常工作然后,使用相同的代码,我尝试在 b) 中执行相同的操作(在 b) 中编译)并且它在 b) 中工作 strong> 但在 c) 中失败。我验证了 a) 和 b)
中的代码相同在简历中:
一台机器
- executable_compiled_in_a.exe 工作
- executable_compiled_in_b.exe 工作
B机
- executable_compiled_in_a.exe 工作
- executable_compiled_in_b.exe 工作
C机(客户机)
- executable_compiled_in_a.exe 工作
- executable_compiled_in_b.exe 失败!
错误信息是
类不支持自动化或不支持预期的接口
并被线路触发
Set Data = New ADODB.Connection
所以,我不明白有什么问题,两者都使用相同的引用,但 b) 生成了不同的可执行文件。
ps:MSDAC_TYP 在 XP 中不起作用,这不是 MSDAC 的问题,因为在 a) 中生成的可执行文件在 c) 中起作用。
ps2:我也尝试使用 msado27.tlb 和 msado28.tlb,结果相同。
ps3:我的开发机器(a)和b)是64位,而客户机器是32位。
谢谢。
更新
Windows Server 2008 R1 的最新服务(我认为 Windows 7 也是如此)更新了 ADO 的版本和可执行文件。小故事,最新的SP1是邪恶的,会带来很多麻烦,至少对ADO和开发机器来说是这样。
没有服务包 6.1.7600 的 msado15.dll
带有 Service Pack 6.1 的 msado15.dll。7601
【问题讨论】:
-
MDAC 在 XP SP1 之前是带外组件。也就是说,更高版本的服务包(或操作系统版本)已预先安装并通过 Windows 更新自动升级。这意味着您不能再通过可再发行的 exe安装它。
-
我刚刚提到 mdac 是无效的解决方案,因为它是通用解决方案,即使它仅适用于 Windows XP 之前的机器。