How to organize setup packages

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!).

file_mess

Story

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).

Task

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.

Conditions

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.

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.

Directories

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.

Markers

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.

Real example

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

Issues

Two so far:

  1. single-executable portable can create mess with their settings files, not much of an issue if sticking with sort by type;
  2. 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).

Plans

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.

Overall

This works for me. Time to share you secrets! :) How do you deal with setup files mess?

Related Posts

7 Comments

  • I use Flashget to download most of my software. It has a comment field that I use to paste info from the site I am downloading the .exe or whatever.

    In the options there is an option to create an individual .log file for each download. This log file holds the comment data and data regarding the download stats.

    So I am now in the habit of putting info into the comment field. When I am not sure what a “setup.exe” is I look in the log file for a comment(Description)

    P.S. the last version of Flashget sucks…keeps crashing…but I have not come accross another download manager that has this function.

  • @Ralph

    I’ve used FlashGet for a long time myself, but gradually left it. Development got wacky and stability questionable.

    Now using Free Download Manager but lately rarely as well. Not much need for small stuff and large is mostly torrents nowadays.

  • I started with a similar directory structure, adding links to remember where I got it, adding text about how to setup it up nicely etc. But I was always getting outdated files after some weeks. I was not finding anything like apt-get on debian, so I started something similar to get setup files directly from the editor’s web site. Then I added the silent install flags whenever possible, removed the junk bars etc and this gave soft2base.com
    I don’t manage windows update stuffs, the system is already doing it nicely. I just keep a copy of latest SP for XP/Vista/Seven so that I can update “quickly” any machine

Comments are closed.