The built-in Add/Remove Applications feature of Windows is something of a paradox. It should be one of the more powerful pieces of software in the system since it gives you control of most software that is on your computer, but it’s more of a limited viewer/launcher type of tool. For this reason, I created a program called Install / Uninstall (IU), that allows the user to look at the uninstallable applications, edit the entries, see the non-installable entries, and install an application. This should give you a better idea of what is setup on your computer, hidden or not.
What Install/Uninstall does
The purpose of IU is to augment the Add/Remove Programs utility inside of most versions of Windows. IU is a 32 bit PE file compiled for the i386 platform. As such this likely will not run on ARM versions of Windows. This tool started as a novel idea that I saw in another form inside of TweakUI. I wanted to extend that a bit and IU was born. I hope this application proves useful.
Installation of new application
To install an application, click on the button labeled “Install Application…” and choose the setup program that you wish to launch. When done with the installation, the user can come back to IU and continue working on applications.
About the setup package that comes with IU
The installation process provided with IU was created with the wonderful Nullsoft Install System version 2.46. This great tool allows for a process to let the user choose source files, directory locations and eventually an easy enough Uninstall process. You find the installation script named “iu.nsi“ in the source directory if you’d like to see the details on that.
The idea behind the installer is to keep this process away from Windows’ own uninstall routines. As such, IU will only create a file “uninstall.exe” in it’s own folder and that can be run any time to remove the tool. For your convenience, a shortcut to that is placed on the desktop.
Why are you using UPX?
One of the trickier issue with Lazarus and Dephi before that is the large executable size. To combat that, I make use of an executable compressor called UPX. This tool is provided with Free Pascal as well as widely available on the Internet. In the source directory you will find a file “compress.bat” that shows the command line I used to compress. If this causes issues for you with virus scanners and the like, decompressing should be trivial.
While IU does run Windows 8, it will be limited to managing non tile-based applications (formerly called Metro apps). Applications installed to interact in the classic non RT versions of Windows 8 are manageable with IU.
Source Code Details
Install / Uninstall was originally created on Delphi, but has now been built on Lazarus and Free Pascal. And, like all utilities we make available, includes the entire source code for the application. IU requires no other components to run the simple EXE (in fact, you can simply download that), so you can recompile it on your own with out looking for other parts on the Internet. IU makes heavy use of the Tregistry component to do most of what it does, and can give a developer a good look at what it takes to use this powerful component in conjunction with the Windows registry.
This utility uses the HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall registry key to keep track of all the applications that are installed on the computer and which of them can be removed and the command that it uses to remove them. Since IU directly works with entries in this registry location – it is suggested that a user take great care when working with a program of this type. In many versions of Windows IU requires administrative access to work on this information.
In IU, the user is presented with 2 levels, the first level is called “Exposed to the User” and displays all of the applications on the computer that are usually shown in the Add Remove Programs tool in Windows. To remove the application, expand this level and then double-click on the the application name. This will start the uninstall process. The second level, called “Not Exposed to the User”, shows the application references in the registry that do not contain information about uninstallation, and thus cannot be uninstalled (but are otherwise view-able).
Launching processes from IU is done with the Aprocess class in Lazarus (which is more cross-platform aware). The launch of a process looks like this:
The process of populating each of the nodes in IU is done with a series of for loops. The entirety of that process looks like the following:
Also of interest, IU will exit and terminate upon the user pressing the ESC key. The code that handles this event looks like the following:
Inside of IU, the user can use context menus (right-click) on any item and choose to uninstall the application or edit the reference.
If you have any thoughts or other information you’d like to see listed on this page, please do contact us and we’ll do our best to accommodate the request. If you would like to contribute a monetary amount to CWL Inc, you can do so here [Paypal]. Download links follow. You might be curious what VirusTotal thinks of IU.EXE, you can see their analysis here.