我怎么知道我的程序是否需要MDAC?

时间:2009-07-08 15:49:26

标签: visual-c++ vb6 windows-vista installshield mdac

我有一组Windows程序,主要是用VB6和VC ++ 6创建的。它的安装程序是使用InstallShield创建的。

最近有几个用户报告了尝试在Vista上安装它的问题。它抱怨说“MDAC 2.6 Sp2无法安装在这台机器上.MDAC 2.6 Sp2需要以下任何一种配置”,然后列出几个操作系统,Vista不在其中。

有一点谷歌搜索shows,在InstallShield处理MDAC时有一个错误 - 它不应该在Vista上检查它,因为在Vista上没有MDAC这样的东西(有一个新东西 - “Windows DAC“)。

我可以对该页面上建议的InstallShield项目进行更改,但我担心这样做,因为我无法测试它(所有Vista机器上都没有出现此问题,我还没有能够在我有权访问的任何Vista机器上实现它。)

然而,在查看维基百科关于MDAC的页面后,我无法想象为什么我们首先需要它来支持我们的程序。我们没有使用任何数据库,至少没有明确表示(可能我们正在使用的某些Microsoft组件正在使用它)。

我不是InstallShield项目的原作者。我开始怀疑MDAC可能无意中添加到了它,或者可能是广告,但就像“呃,也许我们需要它”。

如何明确说明我的程序是否需要MDAC?我可以在VB6和VC ++项目中查看引用等;有没有办法告诉那些我是否可以安全地从InstallShield项目中删除MDAC?例如,也许只有一个MDAC引用,如果我的VB / VC ++项目中没有,那意味着我的程序肯定不需要MDAC?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

我希望你是对的,MDAC可能包含在最初的InstallShield项目配置中,并且没有人愿意删除它。

在VB6方面,您应该能够通过进入“参考”对话框来判断是否正在使用MDAC(我认为它在ide的“项目”下拉菜单中)并检查是否有任何内容使用MDAC或MSAccess。我有一段时间没有使用VB6,但文本看起来应该像“Microsoft ActiveX Data Objects 2.x Library”。

我猜它在C ++方面使用的可能性较小,但您可以尝试搜索msdado,mdac和msaccess等关键字,以查看其中一个mdac dll上是否有#import的任何迹象

答案 1 :(得分:3)

部署到Windows XP及更高版本时,没有理由包含MDAC或Jet 4.0,因为即使XP RTM(黄金)也随MDAC 2.7和Jet 4.0一起提供。

Microsoft Data Access Components (MDAC) release history

How to obtain the latest service pack for the Microsoft Jet 4.0 Database Engine进入最近的Jet历史。

MDAC版本包括ADO的兼容性类型库,因此即使您的程序是针对MDAC 2.6编译的,它实际上也会在目标计算机上使用最新的ADO。如果程序早期与ADOX结合,真正的悲痛就会出现。

ADOX从未附带适当的兼容性接口,因此程序几乎总是使用ADOX的后期绑定。

DAO是另一个问题,但是(a。)没有人应该在没有充分理由的情况下真正使用它,并且(b。)它在DAO 3.6中死亡,所以只要您的程序升级到3.6就不存在兼容性问题和Jet5x(Jet 4.0,Access 2000格式)。


当从XP下层部署时,故事变得更加复杂。

答案 2 :(得分:0)

开始我认为在Windows XP中微软开始包括MDAC。但是,在MDAC 2.6及更高版本中,它们不再包含Jet 4.0组件。 (Jet 4.0 SP8 can be found here

如果您使用的是Visual Fox Pro,则需要安装ODBC或OLEDB驱动程序,具体取决于您的代码。 ODBC OLEDB

所有这些下载都取决于至少安装了MDAC 2.6。