Application Reinstaller/Mover Application Reinstaller/Mover
home Student Projects no local find frame, full screen Google search web for topic jump to footer translate with Babelfish by Roedy Green ©1996-2008 Canadian Mind Products

This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. It does not describe an actual complete program. I have no source, object, specifications, file layouts or anything else useful to implementing this project. Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; I have too many other projects of my own.

I do contract work for a living, which could include writing a program such as this. However, 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 any way you please.

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

Use

You use your program like this: To backup, you run your program to extract the tree of files and burn a CD or DVD 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, 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 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.


CMP_homejump to top
CMP logo
feedback Please email your feedback for publication, errors, omissions, broken/redirected link reports
and suggestions to improve this page to Roedy Green : feedback email
made with CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[65.110.21.43]
Your face IP:[38.103.63.17] The information on this page is for non-military use only.
You are visitor number 1,149. Military use includes use by defence contractors.
You can get a fresh copy of this page from: or possibly from your local J: drive (Java virtual drive/Mindprod website mirror)
http://mindprod.com/project/reinstaller.html J:\mindprod\project\reinstaller.html