We all have a problem when distributing our programs. Some computers have the VB runtimes. Some don't. It's a pain to distribute 1.2MB of runtimes with a 30kb program. So...

Would someone mind writing (in a language that compiles to a dependency-less exe, not vb) a program that downloads runtimes to a computer?

It should check in its own directory for a file called runtimes.txt which will have the following syntax:

The first line of the file contains the exe to run if all the runtimes exist, and the title of the app.
The remaining lines of the file will be files that must be downloaded if not present or if too old.

i.e.
"<yourAppName.exe>","<YourAppTitle>"
"<localFileName>","<minimumVersion>","downloadURL"
"<localFileName>","<minimumVersion>","downloadURL"
"<localFileName>","<minimumVersion>","downloadURL"
...

Example:
"myapp.exe","MyApp"
"%System%\msvbvm60.dll","6.0.92.37","mysite.com/runtimes/msvb60.dll"
"%System%\mydll.dll","2.0.44.33","mysite.com/runtimes/mydll.dll"
"%System%\mydll2.dll","1.1.22.12","mysite.com/runtimes/mydll2.dll"

1) The program should go through each of the files to ensure that they exist, and that their version is at least as good as the specified version.

2) If all files exist and versions are correct, run the application (in the first line of the file) and exit quietly.

3) If not, alert the user: "Some files need to be downloaded before running <appTitle>. Click OK to download them, or Cancel to exit." (where <appTitle> is taken from the first line of the file.)

4) If Cancel is clicked, exit quietly and do not run anything.

5) If OK is clicked, download the files from the URLs specified to the local file names specified, preferably with a progress bar.

6) After files finish downloading, run the app.

I know that I am asking a lot, but we could all use this utility and it would be very useful. I'd write it myself but I don't know what to write it in. I'm not so good at anything but VB (and QuickBasic, but you can't call DLL's or download files from there, can you?)

Thanks in advance,
DovyWeiss