Topic 2.1

To Begin

Getting Started

Let's Begin

There are many options in considering which method you'll be using when creating a stand-alone portable application. The easiest method is probably virtualizing and that's not what we're focusing on in this guide. If that is what you're looking for than you might find this interesting. I'm not here to judge you.. Lol. We've all got to start some where. My first portable was a virtualized IE8. Why? Well because I could using virtualization. Which should tell you how easy it is to use virtualization software. Like FukenGruven said in one of his tutorials,

If you're a beginner.. I suggest getting your feet wet with ThinApp or Spoon Studio. Especially Spoon Studio because it comes with templates where it will essentially hold your hand and walk you through the entire process.

He goes on to say he preferred Spoon Studio over ThinApp because the finished product's size was smaller, a bit faster, and had greater support for 64-bit compatibility. If I remember correctly Spoon Studio also won't force you to use a splash screen either. If you'd like to see what he's talking about you can get Spoon Studio 2012 here and ThinApp Enterprise here.

Don't get me wrong though; virtualization is a good mechanism for getting familiar with the practice. However, as you retain more knowledge you'll come to see virtualization has both it's upsides and it's downsides. More on this topic can be found here.

Portable/Steath
The following was inspired by an article written by LegendaryHawk. Thank you LegendaryHawk for your original thoughts on this topic.

First, let's review what portable means when it pertains to a program. A portable application is software designed to be easily moved from one computer to the next. A portable application is mostly designed for use with USB drives but isn't limited to just removable media. They can also be used from cloud storage services giving it true meaning to portable software as they are used on any compatible device, wherever the end-user is working from.

Portable programs are not installed on a computer and won't store any configuration information on the host machine as all data is usually self-contained within it's own directory. In the end, portable applications are created for compatibility with specific operating systems. The portability in portable software refers to the way they can be physically carried from one place to another, not interoperability among different computers.

Software portability is a different concept entirely which involves programming techniques using certain compilers/services to wrap or create a launcher for the main program itself. This portability launcher or wrapper is a characteristic attributed to a computer program if it can be used in an operating systems other than the one in which the main program was created for without requiring any major revisions.

Porting is the task of doing any work necessary to make the computer program run in the new environment without fault. The portable wrapper/launcher should clean up any and all data it added to the host PC on exit. When using the program, an end-user should feel as though they are using a program that is installed without limitations then close the program keeping the illusion that it is running without dependencies from the host PC. This is the mainstream conception when people are talking/referring creating/using an application to be portable.

Terminology

People need to be aware about the different variations in terminology when it comes to the word portable in regards to software. Many people are using certain keywords out of context and/or with misguided attempts to convey subject matter. The following programming vernacular is a short list of definitions on the vocabulary as I've come to understand them with respect to portable applications.

PAF
Probably the most well-known term in this genre as well as probably the most misused term too. This acronym is often abused to describe any portable application most of the time, however not every portable and/or stealth application is automatically a PAF. PAF really means PortableApps.com Format and is supposed to be governed by PortableApps.com for best practices.

The standard is supposed to mean that a portable application is made with quality and assures the end-user of its completeness and clean up procedures. Sadly, as many novice developers are more concerned with just the program launching instead of what it truly means to be portable and cleaning up on exit, the word has lost its meaning. This is mainly due to the ease of use when using PA.c Launcher to create a portable application as you just need to edit a few .ini files and do not need to know any programming.

Moreover, the PA.c format is basically a design preference a developer chooses to employ when creating portable software. The PA.c standard stipulates a certain folder structure and a dedicated location for the launcher to store all saved data to retain the application's settings. There are many other formats like this one but this format is the mainstream which people usually use in reference to other portable providers like LiberKey and so on.
Stealth
This is often confused with the idea of a program being untraceable. Stealth does not mean flying in stealth-mode like a F-117 Nighthawk which is designed to avoid detection. As far as I'm aware, software doesn't have capabilities to be undetectable. A technical savvy administrator can find traces of your activities on a Windows based PC. Stealth, in regards to software, just means when an application is launched from a well-developed wrapper/launcher, it does not leave behind any entries in the registry or file system. Stealth does mean completely portable. Everything is factored in the launcher so nothing is ever left behind on the host machine.
Virtual
Virtual applications are programs that are optimized to run in a virtual environment. Simply put, a virtual application simply runs on a computer without being installed on it, just like in the above instances. Remote applications are a popular virtual application delivery solution which allows the virtual applications installed on a server to be delivered to an end-users' machine. These applications are not installed on the end-user's device; instead, speciality software called a client is installed on the device that connects to the server and the application is then presented as screenshots to the end-user's machine.

Application streaming is the process which the application's resources are carried to the endpoint at the time of its execution. VMware ThinApp is an example of an agent-less application virtualization solution, while Microsoft App-V represents an agent-based virtual application solution. Parallels Remote Application Server, Citrix, and VMware are the leading providers of application virtualization solutions and are the standards in this category.

There are several other virtualization solutions such as portable applications which is what we're discussing here. These virtualized portable applications will encapsulate all files/DLLs and registry information in one standalone executable file. Thus allowing the end-user to copy and move the application in one single file and carried with them on any removable media device.