Multiple Windows Builds – MichaelHinds.com

Me, drinking
Me, relaxing with a Guinness
After tinkering around with PCs for a while, you pick up one or two ideas. If you just play games, word process or surf on your PC then this section will be of no use to you, but the experienced user or the enthusiast might like to try some of the things listed below. Expert users worthy of the name will have already figured out at least this much, and I'd be grateful for any comments / recommendations regarding any of the issues discussed.

I've tried to make my instructions as simple as possible without getting too pedantic.

Multiple Windows builds - For advanced Win95/98 users with lots of disk space

Loathe it or hate it, you can't live without it. If only for compatibility with the rest of the world, you have to have MS Windows, which means GPFs and nasty blue screens. I have a way which can cut down on these errors (though not totally eradicate them).

On my main system, I have more than 1 installation of Windows. The idea is to have separate "builds" for the different types of jobs I might do. The inspiration for this came from the IT department of the Brewery in Dublin, where they use various builds for different departments. Each build is derived from a core build, which is a standard NT installation, plus programs that are common to the whole company such as MS-Office and the internal phone book. (Things were made vastly easier by buying new PCs for everyone in bulk, therefore eliminating hardware discrepancies between PC models or manufacturers). On top of the core build each department can have its own applications (programming languages for the developers, for example; Powerpoint for marketing; golf simulators for managers etc.)

Getting back to my own PC, I roughly classified all the stuff I might do under these builds:

  • Fun - Tiberian Sun, speccy emulator (I know, I'm living in the past)
  • Developer - C++, JDK, Clipper
  • Media - Sequencer, MP3 stuff, latest Internet Explorer.
  • Test Bed - For trying out those dodgy downloads
  • Skeleton - Like the core build. The others are based on this.


  • I always found a nice clean Windows installation with a handful of applications on it runs quite nicely, but once you start piling on all your favourite apps, utilities and plug-ins, things can start getting messy.

    By segregating applications from each other, conflicts are reduced, blue screens of death are a thing of the past, and monitor/keyboard life-span is increased due to a reduction in punches thrown. It means that there is no danger of newly acquired badly written drivers and software bringing the whole system to its knees. Anything suspect can be tried in the Test Bed. At the first hint of a corrupt registry or even worse, the nasty piece of software can be erased from your disk never to haunt you again. Uninstallation routines are not 100% reliable either, but this is not an issue, as you will see below.

    Stop waffling on about it and tell me how to do it

    If you don't have the basic DOS/Windows knowledge work out how to do this yourself, you probably shouldn't be doing it. Then again, I don't care if you screw up your own system, so here's how I did it.

    1. Formatting Freak

    If you're a formatting freak as I used to be, this whole idea will seem pointless to you. I always held the view that I was pretty much immune to virus attack simply because I ended up formatting my machine regularly in order to start from scratch. I was obsessed with having a "clean" Windows setup and was uncomfortable after a few install/uninstalls. The problem for me was that when the inevitable protection faults etc. did arise, I could never be sure if it was a fault with the current application, with something lingering from a long erased installation or with Windows itself. So, in order to keep the PC running smoothly, I would reinstall Windows onto a blank disk every few months.

    For people with lives outside of computers who don't have an hour to spare on a regular(ish) basis, the multiple build idea might be a good one. You don't have to start with a blank partition but the whole point of doing this is to cut down on errors by reducing the amount of software installed on any one build. Another reason is if you want to be really tidy, you won't want windows installed to the default directory. Mine is in C:\WINDOWS\WINDOWS. Before you start a new Windows install, you might like to check this out.

    2. Tweak it

    Make a nice Windows setup for yourself. Change the folder settings. Add your own file types, but don't install any heavy-weight software or anything you don't fully trust. Windows 98 users MUST set the boot menu doodah here*. See here for some of the things I do.

    3. Replicate

    You now have your skeleton build which (if you haven't forgotten anything) you may never need to alter again. Copy and rename your windows folder for as many builds as you need. I had these:
    C:\WINDOWS\MEDIA
    C:\WINDOWS\FUN
    C:\WINDOWS\DEVELOP
    C:\WINDOWS\TESTBED
    C:\WINDOWS\SKELETON
    Notice I don't have a C:\WINDOWS\WINDOWS, which is where I installed Windows to. If we try to restart Windows right now, it won't be able to find itself.

    4. Test

    Me, drunk
    I can't handle my drink (especially when it's windy)
    Get your F8 finger ready, and restart Windows (don't press shift, we want a total reboot). Press 'F8' when it says "Starting Windows 95" (or 98) to go into the startup menu. Select command prompt. Go into your windows directory, pick a build and rename it to WINDOWS. To choose the media build on mine I would do:
    CD WINDOWS
    REN MEDIA WINDOWS

    (Unlike with real DOS, you can rename directories in Win95 Command Prompt)
    Type WIN and you're away. That's all there is to it. All you do when you want to change builds is restart Windows, go to a command prompt, rename the current build back to its name and rename the build you want to Windows. Of course I'm too lazy to do that every time...

    5. Make a menu

    Every time I start my PC I get a menu with 1-5 for the five builds and 0 for whatever the previous one is. After 10 secs it defaults to the previous one anyway.

    C:\CONFIG.SYS
    My menu is in colour, which means you need the line device=c:\windows\windows\command\ansi.sys in your \config.sys. It also needs three small files, which live in c:\sys\build on my system.
    C:\SYS\BUILD\ENTER
    The first two are a byte long. One is called ENTER and contains the newline character, ASCII 0Dh. This is used because DOS (and the '95 command prompt) won't display the date without waiting for you to press enter.
    C:\SYS\BUILD\BEEP
    The other 1 byte file is called BEEP and contains the bell character, ASCII 07h. I need this for when I'm working on one build, then decide to switch to another. I restart the machine, get bored of waiting, wander off and come back 40 secs later to the same build. I could stop it from timing out altogether, but this would be even more annoying when I turn the thing on in the morning to carry on with last nights work, go for a shower and breakfast, then come back to see it patiently waiting for me to tell it which build to use. So now it beeps at me when it wants me to select a build, but assumes I'm preoccupied with bacon sandwiches if it has to wait 10 secs.
    C:\SYS\BUILD\MENU.BAT
    Finally the menu itself is in a batch file called from C:\AUTOEXEC.BAT. This is how mine reads:

    @echo off
    cls
    date<c:\sys\enter
    echo {1B}[2;1H                         {FF}
    time<c:\sys\enter
    echo {1B}[4;1H              {FF}
    if not exist c:\windows\fun\win.com set prevbld=fun
    if not exist c:\windows\develop\win.com set prevbld=develop
    if not exist c:\windows\media\win.com set prevbld=media
    if not exist c:\windows\testbed\win.com set prevbld=testbed
    if not exist c:\windows\skeleton\win.com set prevbld=skeleton
    if %prevbld%==fun echo Previous build was Fun
    if %prevbld%==develop echo Previous build was Developer
    if %prevbld%==media echo Previous build was Media
    if %prevbld%==testbed echo Previous build was Test Bed
    if %prevbld%==skeleton echo Previous build was Skeleton
    echo.
    echo.
    echo.
    echo.
    echo                             {1B}[44m愔种种种种种种种种种种瘂1B}[40m
    echo                             {1B}[44m                     1B}[40m
    echo                             {1B}[44m  1. Fun             1B}[40m
    echo                             {1B}[44m  2. Developer       1B}[40m
    echo                             {1B}[44m  3. Media           1B}[40m
    echo                             {1B}[44m  4. Test Bed        1B}[40m
    echo                             {1B}[44m  5. Skeleton        1B}[40m
    echo                             {1B}[44m                     1B}[40m
    echo                             {1B}[44m  0. Previous build  1B}[40m
    echo                             {1B}[44m                     1B}[40m
    echo                             {1B}[44m灾种种种种种种种种种种瑊1B}[40m
    choice /n /t:0,10 /c:123450
    if errorlevel 6 goto end
    ren c:\windows\windows %prevbld%
    if errorlevel 1 set changeme=fun
    if errorlevel 2 set changeme=develop
    if errorlevel 3 set changeme=media
    if errorlevel 4 set changeme=testbed
    if errorlevel 5 set changeme=skeleton
    cls
    if %changeme%==fun echo Loading Fun build...
    if %changeme%==develop echo Loading Developer build...
    if %changeme%==media echo Loading Media build...
    if %changeme%==testbed echo Loading Test Bed build...
    if %changeme%==skeleton echo Loading Skeleton build...
    ren c:\windows\%changeme% windows
    :end
    set changeme=
    set prevbld=
    

    The funny letters around the menu should come out as double lines in DOS. The numbers in curly brackets should not be taken literally. You should replace them and their surrounding brackets with the ASCII character that number represents.

    Of course, you could just download a copy of my menu.bat!

    * Can somebody mail me and tell me how to make Windows 98 pause for you to press F8 at boot, as I don't have a Win98 machine at the moment.