Win 7 SP1 Breaks ADODB Binary Compatibility
It appears that the current issue of Windows 7 SP1 (which might be re-released or patched later) made some breaking changes in its ADODB typelibs.
The symptom is that a program that early binds to ADO is compiled under Win7 SP1 can only be run on Win7 SP1.
Different errors may be seen, such as "Procedure declaration does not match description of event or procedure having the same name."
The suggested workarounds include:
- Don't install (or uninstall) SP1 on Win7 dev machines.
- Try to obtain pre-Win7 SP1 ADO library and typelibs and shoehorn them into Win7 SP1 (fighting Windows File Protection).
- Rewrite everything to use late binding with ADO.
This will impact anyone using early-bound ADO objects whether in VB6, VFP, Delphi, .Net languages, or anything else.
On WikiPedia I found the statement:
Quote:
Windows 7 SP1 has broken backwards compatibility of MDAC 2.8. Software compiled on Windows 7 SP1 that relies on MDAC 2.8 will not work on Windows XP (possibly not Vista either).
I don't know whether this is simply imprecise, or whether in reality it means only the Win7 SP1 typelib for ADO 2.8 compatibility is broken. In other words programs binding against e.g. the ADO 2.5 typelib might still work fine.
Breaking change in MDAC ADODB COM components in Windows 7 Service Pack 1
Note there there have been binary compatibility breaks in ADOX off and on over the different Service Pack levels of Vista and Windows 7 as well. The best fix there is probably late binding, which isn't so bad because ADOX object use tends to be more localized in typical programs.
This may be most painful to people who work on applications in a transitional state between VB and VB.net who are following the often-recommended "change things a piece at a time" approach and have hybrid applications. They may have a good working knowledge of VB.Net but much thinner VB6 and COM skills, resulting in a harder time coping with the problem.
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Thanks for the information!
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
The good part is compiling on Win7 RTM or Vista, XP, etc. your programs will still work on Win7 SP1 machines. You just can't work back from a Win7 SP1 compile.
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Some more on this: Changes in MDAC ADODB COM components in Windows 7 Service Pack 1.
Looks like this break will be with us from here on, so grab a Win7 RTM msado28.tlb and put it somewhere safe!
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Note that if you don't follow the chain of links you may be missing the option of installing and using the "back compat" type libraries. There is one each for i386 (x86), x64, and ia64 (Itanium, not applicable to VB6).
See the links toward the end of An ADO application does not run on down-level operating systems after you recompile it on a computer that is running Windows 7 SP 1 or Windows Server 2008 R2 SP 1 or that has KB983246 installed.
Changing to late binding is generally the most expensive option, both for making the change and for maintaining the program in the future. This should be your last resort.
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Well it appears that Microsoft is quietly admitting they screwed up. This is dated October 2nd, 2011 but I haven't seen it or seen anyone else mention it yet.
A better solution for the Windows 7 SP1 ADO GUID changes
Quote:
Unfortunately, we drastically underestimated the number of customers who were recompiling ADO applications on Windows 7 SP1. Even worse, when I say drastically, I really mean DRASTICALLY.
It is one thing to "eat your own dog food" but they really need to quit drinking their own, er, toilet water. :eek:
I'm concerned about the proposed solution though. The screwball Class IDs are going to be left in the ADO 6.1 typelib, which means the problem will likely surface and resurface as newbs screw up and choose that one. It is quite clear that most coders don't read docs and certainly don't keep up on Windows changes. Look how many posts we still get whining about issues that were "new" in 2006 when the Vista Dev Previews and docs came out.
Some other things related to ADO that Win7 SP1 breaks are listed there too.
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Re: Win 7 SP1 Breaks ADODB Binary Compatibility
Yes I had that link in post #1 above. But I'm sure it grows a bit day by day as people either stumble over this problem for the first time or feel the need to rattle the cage bars some more.