Something I really miss in a hard-core Windows environment is the concept of symbolic links.
Symbolic links are fantastic for pointing to the latest version of a program, or an obscure config file hidden deep in applicationurbia. It makes scripting and programming a breeze.
For example, let’s assume in a UNIX environment I have the latest version of our company software installed at: /usr/local/iCinema/iCinema-enterprise-3.05.01.1123-beta-servicepack1-8-11-09/. I can then create a symbolic link called /usr/local/iCinema/latest which points to /usr/local/iCinema/iCinema-enterprice-3.05.01.1123-beta-servicepack1-8-11-09/.
This now means I can write scripts to monitor logs, modify config files, record metrics, or run tests to my heart’s content simply by pointing to /usr/local/iCinema/latest/bin/iCineme.exe, /usr/local/iCinema/latest/logs/errors.log, /usr/local/iCinema/latest/tests/ etc.
I might have a dozen scripts and programs referencing the latest version of the application, all running completely different tasks.
And then if the following Monday we upgrade to a new version called iCinema-enterprise-3.05.01.1128a-beta-servicepack1-8-11-09, all I need to do is install the application under /usr/local, and update my symbolic link to point to the new latest version.
And my scripts continue to run just fine.
Unfortunately, this is something Windows XP does not support. The closest thing it has is shortcuts, but those are not the same. Windows shortcuts are just files with a .lnk extension, which the operating system will run if opened. So, while I can create a Windows shortcut to C:/Program Files/iCinema/latest which points to C:Program Files/iCinema/iCinema-enterprice-3.05.01.1123-beta-servicepack1-8-11-09/, and can click on that shortcut to get to the latest version, I cannot do copy *.config C:/Program Files/iCinema/latest/conf/. or run C:/Program Files/iCinema/latest.lnk/tests/loadtest.exe.
There is no easy work-around.
In short, this means to achieve any form of automation I need to set up complex array of policies all supported by a myriad of scripts and rules, leaving me feeling rather dirty in the process.
Fortunately, there is a light at the end of the tunnel.
Windows Vista has a wonderful new command called mklink which does support the concept of soft and hard linking to files and directories. It has some limitations like working over a network, but that’s forgivable.
But alas, the real hindrance to using this undeniably powerful feature is that Vista’s primary competitor remains Windows XP.
So, until the general population is finally ready to embrace Vista or beyond, you can spot me at my desk pining for ln -s.