Ahhh... Something I can expound on. I don't ever do that do I?
This whole scenerio depends on what your trying to do, how automated you want it to be, how automated the programs you want to install can be, & how much work & time you want to invest in the project.
Everything you've asked for, & lots more can be done by doing some scripting. Even the scripting can be kept to a minimum with some extra tools (i.e. autoscriptwriter). The way I've been doing this kind of automation for the last 5-8 years is by using a scripting language called AutoIt. It is specifically written to do exactly what your asking. Anything it can't do (like dealing with compressed files) can be done by invoking other programs to handle the problem. There are numerous people on the AutoIt Yahoo! group who have used AutoIt to install MANY programs on 1000's of PCs (each having different requirements & programs) on LANs & WANs.
AutoIt started out as a very simple language that could do some pretty complicated things. Its newest version (3.1.1.?) can do VERY SOPHISTICATED things with VERY COMPLICATED GUI's. The beta program I wrote for donationcoder.com called WinFocus is written in AutoIt v3 (yeah I'm still working on it, honest...). AutoIt can even do all of the things "deltaend" asked for in his "IDEA: Annoying Toy" post which has nothing to do with automation, but AutoIt is sophisticated enough to even do very complicated GUI manipulations of any programs on the screen.
Best of all? It's FREE!
If your interested, go over to http://www.hiddensoft.com
& go to the version 3 section (on left of screen). You can also join their forums that are very active with not only users, but the creator of autoit (Jonathan Bennett), & many of the developers who are helping him now. The developers are also users of the language & are very open to suggestions & tend to fix bugs very quickly.