Visual c++ 我如何知道我的程序是否需要MDAC?

Visual c++ 我如何知道我的程序是否需要MDAC?,visual-c++,vb6,windows-vista,installshield,mdac,Visual C++,Vb6,Windows Vista,Installshield,Mdac,我有一套Windows程序,主要是用VB6和VC++6创建的。它的安装程序是使用InstallShield创建的 一些用户最近报告说,试图在Vista上安装它时出现问题。它抱怨“此计算机上无法安装MDAC 2.6 Sp2。MDAC 2.6 Sp2需要以下任何一种配置”,然后列出了几个操作系统,Vista不在其中 谷歌搜索InstallShield对MDAC的处理有一个bug——它不应该在Vista上检查它,因为Vista上没有MDAC(有一个新东西——“Windows DAC”) 我可以对该页面

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

一些用户最近报告说,试图在Vista上安装它时出现问题。它抱怨“此计算机上无法安装MDAC 2.6 Sp2。MDAC 2.6 Sp2需要以下任何一种配置”,然后列出了几个操作系统,Vista不在其中

谷歌搜索InstallShield对MDAC的处理有一个bug——它不应该在Vista上检查它,因为Vista上没有MDAC(有一个新东西——“Windows DAC”)

我可以对该页面上建议的InstallShield项目进行更改,但我担心这样做,因为我没有办法对其进行测试(这个问题并不是在所有Vista机器上都会发生,而且我还无法在我可以访问的任何Vista机上实现)

然而,在看过维基百科关于MDAC的页面后,我无法想象为什么我们的程序首先需要它。我们没有使用任何数据库,至少没有明确地使用(不过,也许我们正在使用的某些Microsoft组件正在使用它?)

我不是InstallShield项目的原始作者。我开始怀疑MDAC可能是无意中添加到它中的,或者可能是无意中添加到它中的,但正如“嗯,也许我们需要它”

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


提前感谢您的帮助。

我想您是对的,MDAC可能包含在最初的InstallShield项目配置中,没有人愿意删除它

在VB6端,您应该能够通过进入“引用”对话框(我认为它在ide的“项目”下拉菜单中)并检查其中是否有与MDAC或MSAccess有关的内容来判断是否正在使用MDAC。我已经有一段时间没有使用VB6了,但是文本应该类似于“MicrosoftActiveX数据对象2.x库”


我猜它在C++方面使用的可能性更小,但是你可以尝试搜索像MSDADO、MDA和MSAccess这样的关键字,看看是否有任何一个Mac ACL DLL上的“导入”的符号。

开始,我想随着Windows XP微软开始包括MDA。但是,在MDAC 2.6版和更高版本中,它们不再包含Jet 4.0组件。()

如果您使用的是Visual Fox Pro,则需要根据您的代码安装ODBC或OLEDB驱动程序。


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

当部署到Windows XP和更高版本时,没有理由包括MDAC或Jet 4.0,因为即使是MDAC 2.7和Jet 4.0附带的XP RTM(黄金版)

进入最近的喷气机历史

MDAC版本包括ADO的兼容性typelibs,因此即使您的程序是根据MDAC 2.6编译的,它也会在目标机器上实际使用最新的ADO。如果该程序提前绑定到ADOX,那么真正的悲伤就会到来

ADOX从来没有附带适当的兼容性接口,因此程序几乎应该始终使用ADOX的后期绑定

DAO是另一个问题,但是(a.)没有好的借口,任何人都不应该再使用它了,(b)它在DAO 3.6中消亡了,所以只要您的程序升级到3.6和Jet5x(Jet 4.0,Access 2000格式),就不应该存在兼容性问题


当然,从XP部署底层时,情况会变得更加复杂