[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now


Deploying VB Apps

Posted on 2002-06-27
Medium Priority
Last Modified: 2010-05-02
I have a general question about deploying VB apps to run on a variety of platforms.  

I gather this is a complex issue, yes?  no?

I ran into a problem deploying a VB app built on my XP Pro machine, when I tried putting it onto a Windows 98.  My installation package included a DLL that would not run on Windows 98.  The specific DLL is the Microsoft C Runtime Library (msvcrt.dll).  I assume this is just one example of the general problem of managing VB apps to run on a variety of platforms.

I assume there must be some well-known basic approach to managing this problem.  Can anyone provide the ABCs for how to do this?

As always, any information will be gratefully appreciated.

Question by:Danimal
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
  • 4
  • 3
  • 3
  • +3
LVL 18

Expert Comment

ID: 7114338
It sounds as if the .dll you supplied wasn't backwardsly compatible, which I think is a big irritation caused by Microsoft.

I wish I had a clear answer for you, other than to say yes it is a complex issue.  Supposedly to be improved by .net technology though.

Author Comment

ID: 7114386
That is good to know I am not completely uninformed to think this is a tough issue.

But, there must be some standard way of dealing with this, yes?  It is that standard approach I am looking for.
LVL 16

Expert Comment

ID: 7114460
Welcome to "dll hell" :(
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.


Author Comment

ID: 7114521
I thought I noticed a sign saying "dll hell" as I entered into this question..  lol :-)

I have a feeling I got off fairly easy with my dll problem this morning.....

....still no suggestions on the basics for coping?

Software companies seem to ship software that installs ok....how do they do it?


Expert Comment

ID: 7114565
Deploy Ur Program on Win 98

resulting setup file will work 'EASily' on XP
as Package & deployment wizard will not over write New DLLs
LVL 16

Expert Comment

ID: 7114675
Bahnass, not a bad idea but i think you did want to say:
"package" your app in win98, is that right?

Anyway, sometimes the setup program doesn't likes to install some dll (in fact, msvcrt.dll is one of them), if they are in use.
Maybe that dll is backward compatible but since it is in use... ( and i hope that setup not overwrites new one with old one!!)
LVL 16

Expert Comment

ID: 7114680
Other way could be not package that dll since it is present on almost any Windows OS ("Done" by Bill Gates, i mean)
LVL 15

Expert Comment

ID: 7114880
>Software companies seem to ship software that installs ok

No, they have many problems.

>But, there must be some standard way of dealing with this, yes?

MS standard way is ... to break their own COM rules.  You don't want to go that way.

If there is a known conflict (newer version of some component is not compatible with previous version) - the best way is:
- give older version in setup package and provide newer version of the component via your web site

Companies often go the other route - "always install the last version of everything and force users to do the same" but that can break other people's software.

Author Comment

ID: 7114952
ameba, I think you are starting to get at what I am looking for.  However, I want to make sure I understand:

Almost any software I install on my puter runs fine.  I basically never have a problem.  I am running XP Pro.  That fits with what you are saying, because I have all the latest stuff (at least for now)?  

People running Windows 98 run into probs with new software all the time?  

Regarding the practice of always giving the older version in setup package....what happens if someone has a newer version on their machine already?  The installation will skip that file?  How can you rely on the installer to do that and not replace the newer version with the older one?

One more thing:  what is the reason for putting the latest version of the dlls on your website?  How does that help your customers?


Expert Comment

ID: 7115393
Look into using the Visual Studio Installer. With this you can include the WinNT or Win98 (or what ever) drivers and only install the ones that apply to the OS you are installing in.

This selective install is controlled using the "Condition" field for the file you are trying to install.

If your DLL is an ActiveX DLL there may be more issues and late binding may be required (using CreateObject) If it is a standard DLL and the WinNT version is not named the same as the Win98 version you will have to do some conditional compiling and make 2 different executables to release (not sure on any way to conditionally declare different dll files without creating 2 or more exe files.

If you end up with more than one exe, you can use the "Condition" field to install the proper version in your single installer pack.
LVL 15

Accepted Solution

ameba earned 200 total points
ID: 7115422

>Regarding the practice of always giving the older version in setup package

It is not that simple. There isn't any "always" you can simply use.

>Almost any software I install on my puter runs fine.

You are just being lucky, there are many, many problems with XP.

>what happens if someone has a newer version on their machine already?

During install, if newer version is found on computer, older version will not be installed automatically.

The problem is if there is an old version on PC, and NEW version, which did NOT RESPECT RULES, is to be installed - this will be done automatically *WITHOUT* asking user "You have version 1, do I overwrite it with version 2 ?"
After version 2 is installed, all the software which worked correctly with version 1, will stop working!  One different interface definition and ciao...

Of course, new software, just installed, will work with the new version.
Old software will be invalid, killed by the new, shiny app.  Is this fair?  Whose fault is this?
Component producer made a mistake, of course.  But if you know the component will cause big problems, e.g. some important applications will stop working, using it is also YOUR FAULT.

What to do:
If new bad component is in use on 95% computers, the minimum trouble you'll have if you go with the new bad version.
If you received complaints on other applications destroyed:
   "We paid $100000 for XY app, and now your free Calculator prevents it from running"
- ship old component in setup
- this will not cause other applications to stop working and this is THE MOST IMPORTANT THING
- your application will not work if there is already new bad version installed
   - you are aware of the problem and you make a FAQ and a special download

     sample: http://www.crispconsortium.com/faq/gwvbx.html
"PS We do not include MFC version 6 DLLs in the default setup of SAGE-CRISP
as they are likely to cause problems for other third party applications."

Of course, the best route is not to use any component which cannot be controlled.  Make all the components yourself.  From MS you should use only SYSTEM COMPONENTS.  Forget MSChart, MS Calendar, FSO,... or expect trouble.

Author Comment

ID: 7115507
Thanks for the intro to the topic....

just what I was looking for....

...sounds like a lot of bad news...

LVL 15

Expert Comment

ID: 7116255

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

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

I’ve seen a number of people looking for examples of how to access web services from VB6.  I’ve been using a test harness I built in VB6 (using many resources I found online) that I use for small projects to work out how to communicate with web serv…
Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
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…
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…
Suggested Courses

649 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