.NET Installer

I am putting together a screensaver.  To do this, I am using VB.NET and when I tried to install it on an old PC the following happened:

1. It asked for .NET framework v1.1.4322 (I guessed this would happen - is there no way around this?)
2. I downloaded the .NET framework and the only version I could get was v2.0 (Can I distribute this with the software?)
3. Installed this version and went to install it.  It then asked for MS Installer v3.0.
4. Back to MS website, d/l it and installed it.  (Can I distribute this with my app?)  The installation went fine.  Restarted computer
5. Back to .NET framework v2.0.  Installed it without a problem.
6. Went back to the installer and it asked for .NET v1.1.4322 and it refused to continue, even though v2.0 was correctly installed.

OK - apart from the 3 embedded questions:

a. Can you make the installer .NET version independent?
b. Can you use VB.NET without the framework at all if you only use simple functionality?
c. Can you make the installer .NET framework with a minimum version?  If not, what happens for the next upgrade?  I would need to recompile and that just doesn't make sense?

Hoping to get some good answers to this one.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Confusing question but here goes:

1) If your app needs the 1.1 .NET RTL, you CAN redistribute it and you CAN download it from:


Read the license information there to be sure you comply.  I don't understand why you say "the only version I could get was v2.0".  V1.1, even V1.0 are available from MS.

2) You can redistribute according to the license agreement.  Read it and follow its requirements.

3) Many apps build using the V1.1 RTL will not work right on the 2.0 .NET RTL.  Get the 1.1 and use it for you 1.1 app OR upgrade your app to v2.0.

4) The installer should not be .NET independent but rather should verify that the version of the .NET RTL that is needed for your application is installed on the system and either direct the user to install it or install it itself.

5) No, ANY .NET application regardless of complexity is dependent on the .NET RTL (BTW, RTL = runtime library).  If you want to make an application that is not dependent on the .NET RTL, use C++ (not managed C++), C, or MFC.  VB6 is not dependent on .NET but it is dependent on the VB RTL.
ChrismAuthor Commented:
Hmmm...that being the case, it would appear that I am better off using VB6?  Would there be any problems using it even though it is an older technology?

Thanks for the link to v1.1 - but what happens if the client already have v2.0?  Does it overwrite this version or introduce any instability?

Finally, using VB6 or VB.NET, as I am using an animation, it is possible to get the WMV compiled into the resource file and played, or do the files need to be in WMV format as a standalone file?

I would not suggest going back to VB6.  It's an end-of-life technology.  You have the same issues with runtime.  VB6 needs the VB6 runtime.  .NET apps need the .NET runtime.  Same problem...

Microsoft has designed the .NET runtime versions to co-exist.  So if a customer has .NET 2.0 but not 1.1 you can install the 1.1 in addition to 2.0.  No problem and, in fact, what you must do to run a 1.1 app.
ChrismAuthor Commented:
Damn I hate MS.  How many applications (or 'frameworks') in the world are intentionally designed to co-exist.  Almost every other software provider provides upgrades or patches and strives for backward compatibility...

Still, thanks for your help jhance.

I don't suppose you know anything about the scr having a wmv compiled into it?
I think the .NET scheme is a great improvement over the old way.  Remember "DLL HELL", this is the situation where you app was built using an old version of a DLL that had been updated at some point.  But the upgrade was not 100% compatible and your application breaks.

.NET provides a way of keeping the original runtime intact for all eternity (in theory) so that even an old v1.1 .NET application will work 10 years from now.  Since all the .NET runtimes are designed to be installed side-by-side, the one your app needs to run (i.e. the one it was built to use and is specified in its assembly) will be used and the app should run perfectly.

In general, this scheme works really well.  The original idea was the the .NET runtimes would be able to provide both backwards and forwards compatibility in themselves as well but that proved to be impractical.  It's possible that a v1.1 app will work with a v2.0 framework but that can be tricky.  The best approach is to have your app use the version of the runtime framework that it was designed for.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.