**Please note this page is currently being improved and changed and as such may be unreliable at times** ---- ====== Beginner's Guide ====== ===== Step 1: The Idea ===== __//[[ideas|Read the full article on portable app ideas]]//__ 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 ===== __//[[licensing|Read the full article on 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, OpenOffice.org). 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, Lavasoft Adaware) permit you to redistribute an app, but not to modify it. Some commercially licensed applications will allow you to redistribute and modify the package, however you may not self-promote these on the forums, as per the [[http://portableapps.com/forums/guidelines|forum guidelines]]. Open source licenses, 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 candidates. ===== Step 3: The Analysis ===== __//[[analysis|Read the full article on 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 command-line 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 ===== __//[[creation|Read the full article on launcher creation]]//__ **This section has been marked as out-of-date. Feel free to edit it and bring it up-to-date** Next, you'll want to create a launcher or wrapper to make the necessary changes to the app when it is launched. The preferred language of these launchers is [[http://nsis.sourceforge.net/Main_Page|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 PortableApps.com releases, in the Other\Source directory, for example. You'll find examples of command-line switches and environment variables in each. Example scripts for many situations are available from the [[creation]] page. If you have any questions, you can always drop a note in the Portable Apps Development forum. ===== Step 5: Compression ===== __//[[compression|Read the full article on compression techniques]]//__ 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 [[http://upx.sourceforge.net/|UPX]]. Most apps will compress fine. Some, occasionally, will have issues, including the launcher, as NSIS does internal checks of the launcher. 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. ===== Step 6: Packaging ===== __//[[packaging|Read the full article on packaging]]//__ __//[[pre-deployment_checklist|Pre-Packaging Checklist]]//__ **This section has been marked as out-of-date. Feel free to edit it and bring it up-to-date** Many people will appreciate you packaging your portable app with a PortableApps.com Installer. This provides an easy to use interface for end-users and a simple install for PortableApps Menu users. To make a PortableApps.com Installer, download the latest release and copy Installer.nsi to AppNamePortable\Other\AppNamePortableSource\Installer.nsi and edit the details inside. When you are ready to package the app, move everything inside AppNamePortable\ to a folder called Files and copy Installer.nsi to AppNamePortable\Installer.nsi. You will need to make a wizard.bmp in the same folder with the dimensions 164 pixels by 314 pixels. Simply compile the Installer.nsi and the installer will be created for you. ===== Step 7: Hosting ===== __//[[hosting|Read the full article on package 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 8: Testing & Deployment ===== __//[[deployment|Read the full article on application testing and deployment]]//__ **This section has been marked as in need of improvement. Feel free to edit it and add links and needed content** After you have your app working and hosted, drop a note in the Beta Testing forum here on PortableApps.com. 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 [[http://portableapps.com/forums/development/portable_app_development|the forums]].