There are many communities out there dedicated to software portablization. By joining one of them, you can:
- get assistance on portablizing applications;
- help other developers and users of portable applications;
- offer your application for testing before publishing it in the wild.
Each community usually has its own standard and guidelines for portable applications, as well as specific ways to achieve portability. This guide will focus on PortableApps.com, the site I am member of. You are free to choose any other, but you will need to adapt or ignore many parts of the rest of the guide.
PortableApps.com (PA.c for short) is a website and community intended to be the best development site and knowledge center related to portable applications. It has been founded by John T. Haller in 2004, after the release of Portable Firefox, which started the portable software trend.
PortableApps.com started as a showcase for Haller's apps, but has grown over time and now counts with a dozen active developers that work on new portable applications and in some tools we will see later; new developers are always welcome.
All portable applications intended to be released by PortableApps.com must be in the PortableApps.com Format. These are usually called portable apps.
The PortableApps.com Format
The PortableApps.com Format is the specification that governs the file and directory structure as well as the operating behavior of portable apps. The following paragraphs will briefly overview the basic part of the specification; there is do not need to worry about it, though, as we will get to it in the process.
A portable app is enclosed in a directory usually named the same as the portable app's ID (more on it later). This directory contains three other directories,
App directory contains the application itself, as well as any runtime support files.
Data is where the application's settings are stored. And finally,
Other contains miscellaneous files and is not necessary for proper execution of the portable app.
App\AppInfo directory holds metadata about the portable app, like the
appinfo.ini file and icons.
appinfo.ini file is the most important file in this directory. It contains details like the portable app name, category, description, license, version and dependencies. An important value defined in this file is the portable app ID. It is a unique human-readable identifier for the app. It is used in various places and is usually the same as the portable app's name, but without spaces.
Also present in that directory are the application's icons, in ICO and PNG formats.
With regards to its operation, a portable app is permitted to modify registry entries and files on the local drive during use; however, the original state of the registry and local files must be restored on exit. A portable app must also continue to work as the drive letter changes. The application's Most Recently Used (MRU) file list should continue working as well.
So far, we defined the concept of portable application and learnt about PortableApps.com and the PortableApps.com Format. We are now ready to work on a portable app... aren't we?