image provider

Application Reinstaller/Mover


This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything else useful to implementing this project. Everything I have prepared to help you is right here.

This project outline is not like the artificial, tidy little problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the define the end point, or a series of ever more difficult versions of this project and research the information yourself to solve them.

Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many other projects of my own.

Though I am a programmer by profession, I don’t do people’s homework for them. That just robs them of an education.

You have my full permission to implement this project in any way you please and to keep all the profits from your endeavour.

Please do not email me about this project without reading the disclaimer above.

The Problem

Microsoft was far more concerned about reducing piracy than the convenience of its customers. It made it as difficult as possible to move an application from drive to drive or to a new machine. You pretty well have to start from scratch with a tedious process of installing the software package from the original CD (Compact Disc) or distributable.

If you buy a new machine, you can spend days reinstalling all your old software and trying to reintegrate your old data. If your C: drive gets full, it is almost impossible to safely move some applications to a drive with more free space.

Microsoft has deliberately made this project intractable. The Registry is their prime weapon.

The Task

Instead of trying to create a general purpose reinstaller, solve the problem first for one fat application that often needs to be moved. I would not tackle a Microsoft product since they may have used all manner of undocumented tricks to foil you. A JVM (Java Virtual Machine) would be worthy quarry without fear of legal harassment, since Sun wants Java to be freely passed around.

Your first task is to watch what your application does during install. You will need a file monitor and a registry monitor to see what files the installer creates/changes and what registry changes it makes.

Now run the application program for a while exercising its various functions. Watch what additional changes it makes to disk files and registry entries. Watch where it hides all its data files.

Now uninstall and install on a different drive and directory name. Notice the differences in what it does. The drive letter and the directory name will become embedded in many places. Reinstall for a different user.

Now write a program to capture all the program files into a directory tree for backup, and all the common data files into another and the per-user data files in another. Also export the registry entries to a file for backup.

Now write a program that prompts the user for the new drives and directories where all this stuff is supposed to go. Your program then patches files in the directory tree as necessary and copies them into place. and pokes the registry with the necessary entries.


You use your program like this: To backup, you run your program to extract the tree of files and burn a CD or DVD (Digital Video Disc) with either the program data, the data files or both. If you need to restore to a freshly formatted machine, you run your restore program which will merge a program backup with the latest data backup.

If you want to move the program to a new drive on your same machine, you uninstall the application, then run your restore.

If you want to move the program to a new computer, you point your restore program at the backup CD/DVD (Compact Disc/Digital Video Disc), or at the file tree restored to disk and tell it to restore, copying all the files into place.

The Ultimate Task

After you have written reinstallers for a number of programs, the process can get more and more automated. Eventually you may have a tool that can be used by any technopeasant to create more uninstallers, at least for programs without features designed to defeat it. These uninstallers can then be centrally collected so eventually all commonly used software can easily be moved around.

To do this ethically, you should not support any sort of change to the branding keys during the reinstall, particularly ones that lock the software to a particular CPU (Central Processing Unit) serial number. I think though it perfectly ethical to try to crack any scheme that locks software onto a particular drive.

Linux users may be puzzled what the fuss is about. To move an application in Linux, you just copy the files. Once you have written a sufficiently large suite of reinstallers, this task should be almost as easy for Windows.

Consider the huge expense this software could save businesses every time they upgrade their computers, not to mention the usual loss of data and programs that the typical home user experiences on buying a new computer or hard disk.

Your program could also be used in corporate environments for rapidly bulk installing software based on a script of the needed packages. Every install works the same way, unattended, no matter who the original vendor and hence can be more easily automated, customised and centrally controlled.

This page is posted
on the web at:

Optional Replicator mirror
on local hard disk J:

Canadian Mind Products
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.

Your face IP:[]
You are visitor number