Solved

vb6.0 app distribution and dll hell

Posted on 2003-11-18
12
739 Views
Last Modified: 2013-11-14
Hi,

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.
http://support.microsoft.com/default.aspx?scid=/servicedesks/fileversion/dllinfo.asp

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?

pras

ps: www.dll-files.com have some collection of dlls but that's restricted to only the most recent version available to them!
0
Comment
Question by:graceworks
  • 2
  • 2
  • 2
  • +5
12 Comments
 
LVL 29

Expert Comment

by:Nightman
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.
0
 
LVL 3

Expert Comment

by:CyberSoft
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.

Regards,
CyberSoft
0
 
LVL 29

Expert Comment

by:Nightman
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 http://www.installshield.com. 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.

Cheers
Night
0
 
LVL 44

Expert Comment

by:Arthur_Wood
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.

AW
0
 
LVL 18

Expert Comment

by:Sethi
ID: 9775476
I am using Inno setup which is absolutely free from jrsoftware.org. As Authur_Wood correctly pointed out, you may not get DLL hell problem unless you are installing in the 1st version of Windows 98.
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

Author Comment

by:graceworks
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
thanks
0
 
LVL 44

Expert Comment

by:Arthur_Wood
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.

AW
0
 

Author Comment

by:graceworks
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.

pras

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!)
0
 

Expert Comment

by:Maurock
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
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 10548696
Moderator, my recommended disposition is:

    Save as PAQ -- No Refund.

Dan Rollins -- EE database cleanup volunteer
0
 

Accepted Solution

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

CetusMOD
Community Support Moderator
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

One of the most frequently asked questions on EE in the "Windows Installer" zone is how to eliminate self-triggered installation of some product.  The problem occurs when, suddenly, whenever a certain application is launched, or even when a folder i…
Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code o…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
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…

762 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now