vb6.0 app distribution and dll hell

Posted on 2003-11-18
Last Modified: 2013-11-14

While shipping out a vb6 application that targets many versions of windows (98 to XP) one of the major problem is to ensure the right version of the dlls for the different platform. e.g. the msvcrt.dll from xp, when installed on 98 can unsettle the win98 system.

Following microsoft site is a good reference for checking out the versions of dlls.

however there is no place to download the dlls (all version) that you need. The only way seems to be to actually copy these files from respective installations of windows versions.

Is there a place where you can get to download different versions of these files?


ps: have some collection of dlls but that's restricted to only the most recent version available to them!
Question by:graceworks
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
  • +5
LVL 29

Expert Comment

ID: 9770383
What installation software are you using? Many of the windows system files are available as Merge Modules from Microsoft, and include their own logic whether they should be deployed or not, depending on the target OS.

I am currently using InstallShield Developer 8, and this is ideal to avoid OS version conflicts with MS dll's, as all I have to do is include the Merge Module in the InstallShield project.

Expert Comment

ID: 9770428
It appears that you are not using an Installer to deploy your applications. You cannot simply copy the EXE and any other files your applicaiton uses to target machines as it will not always work (as is your case).

The installers make sure that you have the associated DLL's also installed when installing your application on a target machine and that they are the same or newer than the ones used by your application. This prevents errors where you copy your application to a machine that does not have the required DLLs (or older versions).

We are using InstallShield Express 5.0 (around 349 Euros) to deploy our VB applications.

LVL 29

Expert Comment

ID: 9770472
InstallShield Express 5.0 is pretty good for simple deployments, but we needed the full development environment.

I think that ISDev8 was about 600 dollars when we bought it - check the website at We also have the western language pack (for multi-lingual installations) which was about 300 dollars.

Avoid using the PDW (package and deployment wizard) unless you absolutely have to.

Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

LVL 44

Expert Comment

ID: 9770651
I have always found the the best MULTI-PLATFORM development strategy is to develop on the 'LOWEST COMMON DENOMINATOR' syste,.  That is, if I plan to support Windows 98 and ABOVE, then I MUST develop on Windows 98.  As you correctly point out, the newer versions of DLLS that are NAMED the same ARE NOT backwards compatible.  But it is ALMOST universally true the the earlier versions of those DLLS ARE upward compatible - eiter you can safely install the older version on the newer O/S, or the New version DLL, already present on the O/S will support that coding required by the older version code in your program.  Most installers will NOT over-ride an NEWER version of a DLL - already installed, with an OLDER version - from your package, but almost ALL will over-write on OLDER version with a NEWER one, and that is what leads to DLL hell.

LVL 18

Expert Comment

ID: 9775476
I am using Inno setup which is absolutely free from As Authur_Wood correctly pointed out, you may not get DLL hell problem unless you are installing in the 1st version of Windows 98.

Author Comment

ID: 9776525
I forgot to mention that i use setup factory 6.0
sf6 have some merge modules for vb6sp5, mdac2.7, jet4sp3 and dcom95.

however these are currently not updated. e.g. the jet4sp3 merge module looks for mdac2.6

in any case sf6 does not have direct support for version checking of the core files such as comdlg32.ocx, msvcrt.dll, mfc42.dll that can play havoc when overwritten with the wrong version.

I have not tested InstallShield8.0 for its handling of these issues. But i am sure the problem must have been handled by someone (hopefully ms support) compiling a list of of all these troublesome files and their dependencies for various versions of windows (and are we forgetting the service pack ?? ;-)

I'd appriciate if anyone has a link to any such resource
LVL 44

Expert Comment

ID: 9778594
"jet4sp3 merge module looks for mdac2.6" this is becuase later releases of MDAC dor NOT include the JET, and JET is now considered to be 'obsolete' technology, and Microsoft has indicated the intention to stop supporting JET in the near future.

YOu should be investigating ADO, to replace DAO/JET.


Author Comment

ID: 9784878
I agree on down-with-jet line of action!

i use ado with jet oledb to connect to mdb....which is still an easy database format to include in the app, distribute, copy etc.


ps: can anyone suggest a resource (url, app, article...) that tells me in one place about the various combinations of dlls that i need to include in the distribution to avoide dll problem (see the original post of this thread...thanks!)

Expert Comment

ID: 10105175
Ok. This is a problem that i face every time that I deploy my app, also because I have 1 priority: the app must work from w95 to winxp the same, without special adaptations more than ADO or maybe IE version.
Do you want to know how do I solve it? I just correct the legend on the error message. Instead of the ugly "access violation" i chage it to something like "This file is already in your system but is in use, so you can ignore the copy of it with safety".
Mainly because there's no problem caused by pressing ignore.

There's another solution but I didn't tryed it (my customers don't pay that much), and it is, in the PDW source code, you can search the very line where the error is raised and jump its execution if the file is msvcrt. So, nobody will notice it... ;)

I hope that this can give you another point of view, when the situation is that a customer won't pay enough as to make us solve microsoft's bugs and for this I will raise a quotation from the microsoft website for this very problem
suggested solution: "you may want to consider the possibility of using a thinrd party application"

Regards, Mauro
LVL 49

Expert Comment

ID: 10548696
Moderator, my recommended disposition is:

    Save as PAQ -- No Refund.

Dan Rollins -- EE database cleanup volunteer

Accepted Solution

CetusMOD earned 0 total points
ID: 10598870
PAQed - no points refunded (of 250)

Community Support Moderator

Featured Post

Space-Age Communications Transitions to DevOps

ViaSat, a global provider of satellite and wireless communications, securely connects businesses, governments, and organizations to the Internet. Learn how ViaSat’s Network Solutions Engineer, drove the transition from a traditional network support to a DevOps-centric model.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction In a recent article ( for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question