Solved

vb6.0 app distribution and dll hell

Posted on 2003-11-18
12
782 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
[X]
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
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
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 
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
 

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

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

Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

705 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