I want to write an app that downloads files.
April 12, 2010 7:44 AM   Subscribe

I want to create a very specific software application. Which language should I use?

Part of my work involves scanning infected Windows machines. Said machines require cleanup with anti-virus and anti-malware programs. Usually, I go out to several different web sites to download their free tools to combat these nasties. At some point, I got it in my head to create a batch script that uses wget to go out and grab these programs automagically. It works pretty well, but it is not easily customizable. It is an "all or nothing" fetch.

This is what I want:

I would like to have one "program" (an .exe either available locally on Windows [preferred], or perhaps even a web app that is accessible by any Internet-connected machine) that will present a list of programs that it can get. You either tick the box beside what you want, choose where to save all of these files on your local machine, and hit go. The program then automatically fetches said desired programs. Nothing fancy. It doesn't need to install anything it downloads. I would like for it to have a simple GUI, though. I don't want this to be based strictly on the console.

I don't know any programming language that well, but I am willing to study. I am moderately well versed in programming theory, and I can mangle some php and javascript to suit my needs. I have made some Firefox extensions that work well enough. I know a fair amount of writing batch scripts.

I think visual C# would be the best to create this with, but I am not familiar with its limitations or capabilities yet. I have read about AutoIT but haven't experimented too heavily with it-- this seems an easier route, though. For the pure mechanics of downloading, I have played around with aria2c, which uses multiple connections and seems to improve my original script.

If you were me, with the added benefit of knowing Language X, what would you use for this? It's okay if I don't know the language. I am very interested in learning something that would allow me to write small apps of this nature in the future.

It has to run on Windows. This is what I will use the programs on anyway. Open source is a bonus, but not binding. I will also re-distribute this app to some fellow workers so they can use it too, so simplicity for executing the app is essential.

posted by ehamiter to Computers & Internet (9 answers total)
While I haven't used it, I believe the windows equivalent to MS-DOS batch files is the Windows Scripting Host. Looks like it'll do what you want.
posted by gadha at 7:54 AM on April 12, 2010

Your software basically needs to:

- Read a list of names and URL's
- Present a GUI for selecting items from the list
- Fetch those URLs to a specific directory

Right? You could whip that up pretty easily using Visual Basic and storing your data in an XML file. There's probably enough Wizard-ish functionality to get you most of the way there (everything except fetching the URLs).

Potholes to consider:
- How do you plan on updating URL's? I'm thinking mainly about version changes here.
- Is all the software available via direct link download? If there's anything that requires some kind of human interaction, leave those out.
posted by mkultra at 8:27 AM on April 12, 2010

I would suggest checking out the NullSoft Scriptable Installer System. Minimal programming required, and I'm pretty sure it can be configured to download other files from the interwebs via the NSISdl plug-in.

At the end you would get a shiny packaged .exe that presents the user with some checkboxes, which is pretty much what NSIS is made for.
posted by ubermuffin at 8:35 AM on April 12, 2010 [1 favorite]

If you're using the same programs they list, Ninite (Pro: $20/mo) might be the same as what you're looking to make - it lets you pick and choose a bunch of software, including a bunch of security stuff, and download an installer for them all.
posted by ADoubtfulTrout at 8:57 AM on April 12, 2010

You might check that the software you need isn't already covered by one of the bulk installers out there (zeuapp, ninite, allmyapps, etc.)


If you don't get that lucky but are still somewhat lucky you might find that one of the bulk installers uses some sort of an editable config file so you could turn it to your wishes.

Honestly before I wrote a made-to-order program for this I'd look hard for utilities with enough scripting abilities to be turned to this.

If I didn't need a GUI I'd consider using powershell but the platform support for that might not be what you need (it'll require an install on older Windows OSes and I'm not sure how far back it goes.)
posted by Wood at 9:10 AM on April 12, 2010

Windows Scripting Hosts / visual basic looks interesting, but I'm having trouble finding any modern resources, especially with downloading files on to a local system. Most articles caution about using it for Windows 95, or mostly, how to disable it on a system.

Ninite is great but it doesn't have the tools I need. It also installs the downloads, which I do not require.

NullSoft looks like it may be a viable candidate. I'll check it out in detail in a bit.

Please keep the suggestions coming!
posted by ehamiter at 9:13 AM on April 12, 2010

I think Ketarin is just what you're looking for. I've used it for almost the exact same purpose as you've described.
Ketarin is a small application which automatically updates setup packages. As opposed to other tools, Ketarin is not meant to keep your system up-to-date, but rather to maintain a compilation of all important setup packages which can then be burned to disc or put on a USB stick.
posted by niles at 10:08 AM on April 12, 2010

JavaScript, either online or in a local HTML file. It can pop up the "file ... save as" dialog and download the file.
posted by knz at 10:29 AM on April 12, 2010

Niles, that indeed is just what I was looking for. I'll give it a shot tonight. Thanks!
posted by ehamiter at 10:30 AM on April 12, 2010

« Older Lots of current pop music as b...   |  What's the best/easiest way to... Newer »
This thread is closed to new comments.