a few things regarding this install command:
why not get the engine to directly load the paks etc from the zip file? (especially good when you consider downloads from servers).
(@NightFright: compression within (most) pk3s means that you need to rewrite half the engine to use calls that can either read from a memory buffer or decompress the file on demand. pak files have no compression and are typically opened simply by re-opening the pak and seeking to an offset. I suppose that decompressing to a temporary file that will be automatically deleted would also work. Either way, it isn't a bolt-on feature and can be quite daunting, at least if you want to do it properly.)
how do you update when a new version is available? 'uninstall foo full;install foo'? you'll lose your configs/saves/etc
(this is also incredibly relevant when considering random quake servers running different versions of a mod)
never trust the filename in a url. some examples:
http://example.com/download.php?id=123
http://example.com/...zip (evil huh, note that nvidia drivers will obligingly attempt to load a whole load of dlls from the working directory)
use the user's home directory instead of the quake dir for the Downloads path. Noone will ever find it there!
stuffcmd(self, "uninstall id1 full\n");
also, aliases.
nuff said.
console commands have almost no discoverability. if I don't know the name of a package, I have no way to install it. eg the install command needs a way to list all packages with 'rubicon' or something in the filename or description (apropos style or something).
also, needs a menu so you can easily delete everything.
replacement/generic content like texture packages shouldn't need a -game
map packages will often have a dependancy upon an existing mod, and should be installed in that mod's gamedir instead.
I did consider doing something similar myself, but I ended up overengineering it to be too weird for anything but standalone mods. oh, and I didn't bother with an uninstall option (partly because of the problems with multiple versions of a mod needing to be installed in order to cope with servers running different versions of the mod, as well as mods potentially requiring generic/shared stuff like texture packages).
hence fte's
.fmf thing.