Anyone running Windows is familiar with its performance decrease over time. It gets slower with the time. There are several reasons for it. One of them is an application install. The installation process writes to multiple places in the registry to store application and user settings. It also copies application files to the default installation folder (“Program files”). Since Windows is a multiuser operating system, the application creates some files to user specific folders as well. The end product is application data scattered throughout the file system and the registry.
During the uninstall process all the data needs to be removed. This is not a trivial task. Most applications are not capable of cleaning after themselves and leave their traces even after the uninstallation has been completed successfully. Every application installation, even if uninstalled, grows the registry file and adds new objects to the file system that Windows needs to track. The result is slower Windows start-up time and runtime performance. If we could eliminate the application installation and centralize all the application data, we could eliminate this “disease” plaguing Windows.
Portable applications are the cure. They do not require installation. They are copied to their own folder containing all the application files including the executable, application and user settings. Because of their portability, they can even be run from a USB drive. There are several portable application solutions, which provide portable versions of many popular applications. I prefer PortableApps (http://portableapps.com) solution. My favorite applications they provide are: Firefox, Notepad++, VLC (media player), OpenOffice, 7-Zip, KeePass (password management), and WinMerge (file comparison). There are many other portable applications independent of any solution. The trend in open source community is to provide two version of identical application. One that requires an install and one that does not. I really like CubicExplorer (win explorer replacement), Everything (file search), PdfXChange (fast pdf reader), Reflector (.NET disassembler), Revo (uninstaller), and Sysinternals suite. These are small and fast tools that I use on everyday basis. Since they are portable, they keep all their files and settings in their own folders. They do not pollute the system, keeping it clean and efficient. I keep them on the non-system drive so that in a case of the Windows state rollback or reinstall none of the applications would get affected. They would continue to function as they always have. Reinstalling Windows does not require reinstalling application and customizing them all over again.
The greatest benefit to portable applications is ability to have them available with identical settings on multiple systems. In order to accomplish this I use third party folder synchronization service called Dropbox. It is a service that requires registration. It provides 2GB of free space with an option to purchase more space. It installs as a windows service and synchronizes a folder on the user system with the cloud and any other machines having the service installed. I have it installed on three of my systems and pointing to PortableApplications folder located on the non-system drive. Updating an application on one system updates the application on all systems. No need to go to every machine and update the application individually. Modifying application settings on one machine propagates changes to all systems. Additional benefit is having all the applications available on the web on Dropbox website. User can log into his account and download files. This is convenient if you are using someone else’s computer and wish to use your application with your settings. For instance, when I use a public computer I download my portable Firefox from my Dropbox account with all the extensions, bookmarks, and other user settings. This way even when I am away, it feels just like at home.
Portable applications are not for everyone. Anyone sharing a computer should not be using portable applications unless he is willing to maintain multiple application versions for each user. Another drawback is the fact that it is not possible to go completely portable since not all applications have their portable counter part.
The reason I write about portable applications is that they have been working really well for me. Seems like we are going back to old DOS days where all application data was stored in application folder. My only wish is that there is an easier way to keep them in sync between multiple systems.
I will discuss best code commenting practices and Visual Studio features that make it easier in the next weeks post “Code commenting”.