I've never been a huge fan of how Windows organizes a User's programs and files. The move to "My Documents" and "Program Files" in Windows 95 (if I recall correctly) made things probably worse than in the Windows 3.1 and DOS days. Now we found ourselves subject to programs installing into "C:\Progra~1\Micros~1\" and user files winding up inside a hodgepodge of folders like "C:\Documen~1\Steve~1\Access~1\" and so forth.
Vista has made things a little tidier. Users are still given an individual "home" folder, but it's in a more reasonable place: C:\Users\Steve -- no more spaces in the filenames. However, they're still using the poorly named "C:\Program Files\" folder as a destination for program installs. Why, oh why, can't we just have a "C:\Programs\" directory instead?!?! It's less than 8 characters, and there's no spaces. It would eliminate all the "~1" garbage now and forever.
Honestly, though, I'm digressing. The point of this post is that I took a close look in my "My Documents" folder today, and I was just disgusted to see how many other applications feel that they have the right to install their related files into MY documents folder, without so much as a by your leave. 10 different applications had all dumped settings and output files into my home location!
A few points for every application developer to take note:
- Settings for your application should go into an appropriately labeled sub-folder under the User's "Application Data" folder, not into this documents folder, where a User can easily change and/or delete your application's settings.
- If an application needs a spot for temporarily downloading files (for updates or whatever), this is NOT the place for that. Use one of Windows' myriad of temp directories, or create your own under the User's base (C:\Documents and Settings\
\) directory. And for the love of all that is sweet and good -- if you absolutely, positively have to, have to, have to, create a temporary folder here -- CLEAN IT UP WHEN YOU'RE DONE!! I have no need to see the ugliness of your update system's directories and files, especially in amongst my personal documents! Augh!
- If you have any sort of graphical installer -- and this is Windows, so 99% of you do -- during the install, make sure to ask the user where they want to install the program. Sure, having a "Program Files" folder preset as a default is great, and some folks will be fine to just hit the "Next" button, but be sure to include an option for users that don't like to default to the C: drive, or who use a separate "Programs" folder. And make sure your application knows how to deal with this scenario. It's no good asking for user input if you're just going to ignore it.
- Also ask the user where in the Start Menu they want to have your shortcuts. I cannot stand Start Menus that spew out to multiple columns. I have my own organization, and I ask that you respect it.
- If you do require a place for user specific settings and update temp files to live, provide an Options panel choice so the user can pick where to put these files. Don't leave the location option specified in a lonely .ini file somewhere, and the only place that option is documented is in the .ini file itself. Likely the average user won't be bothered to change it, provided your location makes sense, but it's a great feature to have for the advanced user.