An Unfinished Beginner's Development and Packaging Guide

Step 1: The Idea

The first step is the idea. What would be a handy application to be able to have portably? Some application types work better portably than others. So it helps to gauge of how much use a given application may be and how much interest there may be in the application from others.

Step 2: The Licensing

All software is licensed, in some way, to its users. This ranges from the standard commercial licenses (Microsoft Office, Adobe Photoshop) to open source licenses (Mozilla Firefox, Commercial licenses, as a general rule, do not permit you to alter an application in any way or redistribute it. Free applications with a commercial license (Internet Explorer, Opera) permit you to redistribute an app, but not to modify it. Open source license, on the other hand, allow you to both modify an app and redistribute your new version, making these the apps that are the most likely candidantes.

Step 3: The Analysis

The next step is to determine what needs to be altered to make a program portable. Does it store its settings in the registry? Does it store them within Documents and Settings? Does it use an INI file? Can any of these be changed with commandline parameters (eg: --config X:\appdata)? You'll need to find this out to determine what you'll need to do to make the app portable.

Step 4: The Code

Next, you'll want to create a launcher or wrapper to make the necessary changes to the app when it is launched. The prefered language of these launchers is NSIS (NullSoft Scriptable Installer System), a fairly compact, free language used most-commonly to create installers for software (it is ironic we are using a language designed for installers for apps that require none). The best way to get a feel for NSIS is to start looking at code. You'll find it included with every app that releases, in the FirefoxPortableCode directory, for example. You'll find examples of command-line switches and environment variables in each. Starting with the Sumatra Portable launcher is recommended as the code within is the most simplistic. If you have any questions, you can always drop a note in the Portable Apps Development forum.

Step 5: Compression

Making a portable app smaller is in everybody's best interest. It will consume less space on the portable device and launch more quickly as a result. EXEs and DLLs can be compressed using UPX. Most apps will compress fine. Some, occasionally, will have issues. Many apps also use JARs, which are actually just ZIP files with a different name. Using an application like 7-zip to recompress these to their maximum level can save even more space. (Note: A script to compress all the JARs, EXEs and DLLs in a given directory will be released soon.)

Step 6: Hosting

If you are creating a portable version of an open-source app, your best bet for hosting is SourceForge, which provides free hosting of these apps. You can create a project and have it up and running within days. You may also be interested in inquiring if it can be made a part of the PortableApps project on SourceForge. This will soon be opened to outside developers.

Step 7: Testing

After you have your app working and hosted, drop a note in the Beta Testing forum here on This will allow others to test out your app and provide you feedback to work out any bugs and provide constructive criticism.

That's it for now... just a quick overview of the process. The compression routines will be released soon as well as a universal launcher allowing you to make apps portable without coding. As always, if you have any questions, you can post a note on the forums.