Optical line to my house died on Friday evening. Naturally nothing broken on Friday evening gets fixed earlier than Monday morning.
So I got stuck in offline, which makes computer surprisingly useless for usual routine, but pleasantly free for cleanup. Except that I hadn't found a thing in need of cleanup. Meaning my file organization is reasonably stable (at last!).
Windows platform critically lacks unified process of software installation and updates (hey, why hadn’t you made Appnews into something that will automagically update all my software? Because it is hard!). Platform suffers from:
- inconsistent licensing and distribution policies;
- inconsistent installation and uninstallation mechanisms and no awareness for portable that often lacks both;
- poor meta storage mechanism (registry) that was treated nearsightedly and ended up being more of a problem than solution.
This makes creation of sane software management system near-impossible (unlike on Linux).
Without such we have to settle for next best solution – organization of setup packages.
As for me and my needs it must fit specific conditions:
- ease of management and updates, nothing works if it is a chore;
- ease of transfer (full or selective), like a good database it must serve what is needed, when needed and where needed;
- ease of usage, it must work even in retarded native Explorer as interface. Stuff happens.
Windows files are scarce on meta information. It is either irrelevant to file content (file type, timestamps) or is not consistent enough. Try to open Revo Uninstaller and Process Explorer and count what percentage of software has filled authorship and version information and is digitally signed.
There are several ways of associating external notes with files, such as ancient descript.ion files for comments and md5 files for checksums. Newer addition would be XML-based Portable Application Description files. But again they are either not used consistently or must be created and managed.
As for me that leaves file names.
It is safe to assume that file name defines:
- content, except the case of stupid setup.exe that had almost died out;
- type, less important because for the task it is either executable, archive or mix of both.
There is one unobvious rule about directories – less is better. I am unable to remember source but I've read somewhere many years ago that file organization only remains efficient for two (at most) directory levels.
This makes sense:
- for time needed to move from any directory to any directory;
- for short full file names (that include paths);
- for sorting files by any of possible criteria.
I just invented name for technique on the spot. Been using for few years already. The idea is simple – prepend file name with something that makes sense (or maybe not). For example everything Windows-related I prepend with Windows (deep, I know). For portable I use underscore _ which makes it conveniently stick at the start of directory.
This adds level organization that splits files into groups without need to spread them by directories.
So what I have is roughly following (directory names are evolutionary and no longer reflect purpose):
- SOFTWARE stable core of portable and most used setup packages, adds up to neatly 1GB
- \_*\ directories with portable software
- _*.exe single-executable or self unpacking+running portable
- *.* rest of stuff
- INSTALL large and new, adds up to messy 10GB
- \Docs\ tech documentation
- \ISO\ folder for disc images
- \My Dropbox\ self-explaining
- Windows*.exe service packs and such
- *.* rest of stuff
Two so far:
- single-executable portable can create mess with their settings files, not much of an issue if sticking with sort by type;
- some portable likes to spread through insane amount of small files which is complete performance killer overall and especially for sync over WiFi.
Nothing that can’t be dealt with (maybe with little help of SpaceSniffer).
Now that I have stuff settled I’d like to push on AutoIt and probably Ketarin to automate most of updates and create silent install routines for typical scenarios. It is easy to automate file tasks when you know where exactly files are.
This works for me. Time to share you secrets! :) How do you deal with setup files mess?