PortableApps.com Wins Big in the 2009 SourceForge Community Choice Awards and hits 100 million portable apps served!

Creating A Portable App: A Guerilla Field Guide

OliverK's picture
Submitted by OliverK on July 31, 2008 - 7:42pm

Introduction:Often, somebody will make a post asking for help. I wrote up a guide real quick for this poster, here. After a suggestion by r-andom, I re-posted as a forum topic. If you have a suggestion for the guide, post here. If you need help portablizing, make a new post in the Portable App Development Forum. So, without much more text, I loose the gorilla. . .

  1. Use the search box to find out if someone's done the work or some of the work for you. Search PortableApps.com.
  2. Become familiar with the launchers available. For instance:
  3. Determine the license. Is it OSS or another type of license? If its Open Source Software, you can post all of the launcher and the program on the forums. Since PortableApps.com is dedicated to OpenSource software, its against the forum rules to post a piece of software that contains closed source (even if you are allowed to redistribute) software. If its closed source, well, you can post a launcher, similar to what I've done here, only. Why is this first? Well, you have to decide if its worth the work.
  4. Determine the programing language. Why? Well, you have to be careful. Is it done in:
    • .Net? Sorry. While some don't care, alot of people here despise .Net, as its not installed on all computers. See this link For a whole discussion on the subject of .Net.
    • Java? As I understand there's the Java Portablizer, but there is not yet an Open Source JRE. So use of Java applications is somehow limited.
      You can study the following application to get an idea of portable Java implementation.

  5. Get the tools. Load up- you'll need them.
    • I whole heartedly suggest the use of HM NIS Edit (Portable) Select either the download with NSIS included, if you don't intend to download it separately, or without if you do. It adjusts properly in both occasions.
    • Note also if you wish to use another editor, you can download a portable version of NSIS separately, from here.
    • Regshot. which is used to figure out what changes a program made during the install process.
    • Alternately, you can use Process Monitor to figure out what registry entries its reading.
    • NirSoft RegfromApp is a small freeware utility that allows you to specify a specific process to monitor. You can even launch a process with it and monitor those specifically. It produces a nicer output of what registry entries the program has modified.
    • I also suggest picking up Notepad ++ Portable. Just in case.
    • To handle making the icons, use something like IcoFx
  6. Do your research. Read up on these topics in the forums:

    Feel your head is about to explode? Mine to, writing all this html. There's more Laughing out loud

  7. Download your program. If you have keyboard loggers, malware protection or anything that runs in the background, consider turning them off before taking a regshot. Now, fire up regshot and take a regshot of the computer by scanning the C drive, more on that in a minute, before installation. Go have a cup of coffee or a can of Mountain Dew. Don't touch the computer! You'll get extra registry entries.
  8. Install your program and run it a couple of times. Make sure you do this from a clean install. If you don't, you may have skewed results. Do NOTHING else during this time
  9. Take second regshot and then compare the results. Save it a html, it produces a nicer printout then .txt
  10. Figure out where the program is saving files. Check C:/Documents and Settings/UserName/Application Data for %appdata%. If you scan the entire C:\ Drive with regshot, those changes should show up.
  11. What to do with registry entries:
    • HKCU:Regshot will show a HCKU modification as HKU\Random Numbers\whatever. Look for those in HKCU\Software\ and handle them in NSIS as HKEY_CURRENT_USER\Software\Whatever.

      • Useful Entry: HKU\S-1-5-21-1060284298-823518204-725345543-1003\Software\Texas Instruments\TI Connect\StartUp\.
      • Useless: HKU\S-1-5-21-1060284298-823518204-725345543-1003\Software\Microsoft\Windows\ShellNoRoam\MUICache
    • HKLM:HKLM is a branch of the registry that cannot be modified by someone with a Limited account- just an Administrator. Handle them by double checking that they are needed. Often, something like InstallDir: whatever can be ignored. Else-if those entries really really are needed, you will need to check that the launcher can do it, then launch the software. If you don't have the rights, you'll use a message box to say so and terminate the launcher. Handle them in NSIS as HKEY_LOCAL_MACHINE\Software\whatever
    • HKU: You can ignore these.
  12. Find a base launcher that deals with those issues.
  13. Adjust the launcher to reflect the changes you need made
  14. Compile, test, and adjust
  15. When it works, drop a note with it in the Beta Testing Forum., using this format. Let us have at it. We'll be glad to Laughing out loud

Well, that about sums it up.

More General Help
Open Source Software is generally found at SourceForge
You can get general help here
If you have any specific questions, give post, and we'll be happy to help.
You can also join us at #portableapps on irc.freenode.net. You'll need a IRC client. You can use X-Chat, Pidgin, or Miranda. Helpful hints are here. Don't want to download a full blown IRC client? Well, I'm sure you will eventually, but here's a web based IRC client that's fast.

Thanks to . . .
r-andom, for his blurb on java\
MaienM and Bart.S for letting me know about those pesky updates

Changelog

  1. 10SEP08
    • Updated a few spelling issues
    • Added NirSoft RegfromApp
    • Updated link to installer thread
    • Changed up the way registry was talked about, added examples
  2. 08APR09
    • Add NSIS Portable to the Tools List
  3. 02OCT09
    • Add examples of Portable Java implementation
    • Update links to the PA.com format, Installer
    • Update link to NSIS Portable

( categories: )

[MOD] Please make sticky

Good work!

This post answers a lot of the repeating questions in this forum. Can a moderator please make this sticky?

(you may delete my comment afterwards.)

Stick it!!!!!!!!!!!!!!!!!!!!!

That is a freakin' awesome tut!

Sticky it!

It even inspired me to start and try to make a portable app (unfortunately I am lazy and it may not happen Sticking out tongue ).

Very good tut Oliver.

Photoshop? No… I use GIMP. No, It's not pirate. No, I didn't pay for it. It is possible! Because it's free. Yes, free! Ok! Stay with your pirated Photoshop!!! Idiot…

Sticky it!

Sticky it!
This is great!

Windows XP Home Edition SP3
Developing: Lincity-NG, LMarbles, WinHTTrack, Gourmet, and NVDA Portable

Great write up Oliver. This

Great write up Oliver. This should help out quite a bit.

The developer formerly known as ZGitRDun8705

Sounds perfect!

Now as soon as I film my hand plugging in my new flash drive (which is supposed to come today! AAH!!! I CAN'T ENDURE IT MUCH LONGER!!!!!), I'll get started on a video with some cool music.

Insert original signature here with Greasemonkey Script.

This is awesome! It's totally

This is awesome! It's totally perfect for newbies for portabalizing apps (like me) or just a great reference.
Thanks for writin' this up!

There's no place like 127.0.0.1

Thanks for the reference to my IRC widget...

It's nice to get people mentioning/using it Smiling

I believe that .Net is .Net, not .net.

I find HM NIS Edit good for gooey stuff Sticking out tongue, but not for code editing. I use GVim for pretty much all coding I ever do. (/me presses escape, :w, enter - save, for you people that don't use [G]Vi[m] Sticking out tongue)

Also, X-Chat is X-Chat, not XChat (as you list it in your first link). My understanding is that there was a problem with X-Chat, and some crazy guy illegally sold fixed copies of it as XChat, with closed source components, etc., violating the GPL. Ask Patrick for more details.

Another thing: SourceForge, not Source Forge.

Oh, and Notepad++, not Notepad ++

One last thing: the search PortableApps.com link should point to http://portableapps.com/search/node, not http://portableapps.com/search... it doesn't really matter, but I like picking nits Laughing out loud

Why is this so fun..?

STOP SUBMIT! (Somewhat like stop press?) You have an "its" without an apostrophe between the t and the s, where there should be one, because it is an abbreviation of "it is"! Shocked

Christian, developer, moderator

no prob on the mibbit. Your

no prob on the mibbit. Your right about those errors. I'll fix them when I get a better connection.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

First, great guide...

I'm a big proponent of offering people guidance so that they can jump in and help where they can!
But I have a serious question:
What are steps 15, 16, etc?
That is, once an app has been portablized and makes it into the Beta Testing Forum, how does it achieve the last steps to become a final release Portable App?
What rights and responsibilities does the original (unofficial?) developer have to keep moving the app's development forward? How much testing is enough?
By a rough count, there are ~110 apps listed in the Development Test Releases on the Test Release page, some of which are out of date compared to their parent app. Meanwhile, most of the releases are just new versions of existing apps.

Is their anything that us non-devs can do to help the process - perhaps if we knew what kind of feedback is expected when we beta test? Any tips from experienced testers to help in stressing apps, forcing out bugs, etc?

Thanks again to all the devs out there for making PortableApps such a great site.

Harmony and understanding; sympathy and trust abounding;
Mystic crystal revelations and the mind's true liberation.

Well, I wasn't to worried

Well, I wasn't to worried about 15 and 16. Basically, it'll sit in the forums for awhile.
When you become a developer, you need to support your app for 1-2 years (I believe it was).

When testing, you need to:

  • Give the computer OS. It important to know if its Vista, XP, or Wine.
  • Duplicate it. Honestly, it needs to be reproducable. And the more information you can give, the better.
  • Which development test versionm your using, make sure your up to date.
  • See if the installed version of the app has the bug. If it does, report that to the original app builders.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Thanks for the tips on testing.

Are devs waiting for a certain amount of positive (no bugs) feedback before release? I don't know how often satisfied beta testers communicate back to the devs...

When you say that a developer needs to support the app for 1-2 years, is that after it has reached Release status, or throughout the pre-release too?

Harmony and understanding; sympathy and trust abounding;
Mystic crystal revelations and the mind's true liberation.

I don't know. It when John

I don't know. It when John decides its ready. How that works, I haven't the foggiest.

Actualy, I was wrong. Its a 6 month support after release.
Here's what John wants.
http://portableapps.com/node/11772

I'm guessing, when you thinks its ready you post here, and John takes a look and says yeah or nay.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

@John T Haller:

@John T Haller:
Is there anyway you could make this sticky or tell me what you would want added to make it a sticky?

Thanks.
*EDIT*
UPDATED 22AUG08
Some info on RegHandling
Added IcoFx link

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Nicely done

Wow. Thanks OliverK. Your guide has convinced me that I just may be able to do this after all.

A suggestion...
Somewhere around step 7 you may want to recommend turning off or killing background processes before doing your Regshots. Folk running on-access malware scanners, defraggers, keyboard monitors, etc. may find themselves having to wade through a fair amount of registry garbage in order to find the relevant entries. (Though I guess if you run in a "development" image or sandbox this wouldn't be necessary.)

Anyway, thanks again.

I think

you are actually thinking about Process Monitor.
It tracks every file and registry handle from a given program.

Insert original signature here with Greasemonkey Script.

Yes, at which point you can

Yes, at which point you can filter it.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Too much on-access stuff...

I actually meant RegShot. I'm running VIPRE, Sunbelt's new A/V + A/S, and it's on-access scanner peppers the registry with newly created and deleted values. PerfectDisk drops a few in too. Not really a big deal since RegShot's html report makes it easy to see the changes that really matter. Just caught my eye.

Godd suggestion. I'll add

Godd suggestion. I'll add it.

And . . . your welcome!

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Hey,

great job Oliver, we've been needing something like this for a while. Smiling

[EDIT: In regards to #2, maybe you should add Eraser Portable for dealing with HKLM entries that need special permissions. I've seen a lot of people using the 7-zip method for HKLM.]

"It ain't what you don't know that gets you into trouble. It's what you know for sure that just ain't so." - Mark Twain

That's a good point. Thing

That's a good point. Thing about EraserPortable is that it doesn't actually need them. I'll tack in a note that HKLM keys are dealt with differently.

I deal with them by checking for admin rights. If the user doesn't have them, we go no farther.

I'm also play with this little toy: Nirsoft RegFromApp. Its not open source, but really slick. You fire it up, then select the process to run. It captures those keys-and you can save them. It displays them in the program. Everything that that program uses, it shows. I'm thinking of adding it to the top.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Great Guide :)

Now I'm really thinking about making my own portable apps Smiling

Some things:

  • Step 6: There is a link to the Offical Installer, but it points to an outdated one.
  • Step 11: Point a. says look for HKU\Random Numbers\whatever and Point c. says ignore HKU. I'm a bit confused now.

you're right. this should

you're right.
this should be:
HKCU\RandomNumbers\whatever
Most stuff stores info here

HKU can be ignored.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Actually,

Actually, HKU\RandomNumbers\something is worth looking for, then just replace HKU\RandomNumbers\ with HKCU\

There is no HKCU\RandomNumbers\ key

The developer formerly known as ZGitRDun8705

Hmmm, let me sum up.

HKU\Random Numbers\whatever is worth looking for, because there is no HKCU\RandomNumbers\whatever.
Right, but HKU\whatever can be ignored. Well, I'm still confused Sticking out tongue

HKU\RandumNumbers\ = HKCU\ If

HKU\RandumNumbers\ = HKCU\

If you use RegShot to look for which reg keys are modified, it will show them all under HKU\RandomNumbers\, but this key is unique to the PC. HKCU is universal. All instances of HKU\RandomNumbers\ should be replaced with HKCU\

The developer formerly known as ZGitRDun8705

Yeah,

I understand. But then I shouldn't ignore HKU in Regshot, at least partially Eye-wink
@ Oliver: Thanks for the examples!

Correct, don't ignore HKU in

Correct, don't ignore HKU in RegShot. unless it's something like Oliver said.

The developer formerly known as ZGitRDun8705

A tool that might help in the

A tool that might help in the monitoring of application would be Sandboxie. When a program is executed in the sandbox, all the modifications made by the application to the system are contained in the sandbox folder, as well as all the registry entries.

True, but I don't know how to

True, but I don't know how to use SandBoxie and prefer that I list portableapps when possible Laughing out loud

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

I need more detail explanation about step 12~14

I don't understand after step 11.
What is the launcher?
Compile What? How?

The launcher is the file

The launcher is the file called AppNamePortable.nsi in Other\Source. You compile it by downloading NSIS and the loading that file into what is called the compiler. Minute latter, you have a standalone executable.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Nice work!

Nice! But you should also mention having:

A) the app or
B) the installer

in a .ZIP or .RAR .

theg721

I dont know WHY i do signatures, but I DO know that I do 'em.

No

They're meant to be put in the .paf.exe format at the end (made by compiling the installer). If they're in ZIP or RAR or anything like that, they're not in the PortableApps.com™ Format.

Christian, developer, moderator

You might mention in your

You might mention in your Java section that BabilooPortable (dev test) is an example that shows one way to launch a Java "jar" file while redirecting it to save settings to the Portable Drive by using the

 -Duser.home=

command line option to javaw.exe.

Many programs can be set up to use a Java Virtual Machine or Java Runtime Environment that has been copied to the Portable Drive. While we can't easily distribute such a JVM/JRE ourselves, there is nothing that prevents a person from putting Sun's JVM/JRE on their Portable Drive and taking it with them.

Also note that some programs (e.g. Firefox) wouldn't use an OSS JVM/JRE even if we had one, at least not without changes. They access Java in a non-Portable way. I'd say that is the real problem with carrying your JVM/JRE with you, or with our trying to have a universal, OSS, portable Java.

MC

how about the inclusion of

how about the inclusion of NSISPortable to the tools list so that users who don't want to install NSIS locally could use this as an alternative

The day Microsoft produces something that doesn't suck is
probably the day they start producing vaccuum cleaners. (author unknown)

please

Create a video-instruction please (training video).

Creating a video instruction

Creating a video instruction would be some what difficult. I've attempted the videos, but never quite got them to satisfaction.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Done :D

Done Laughing out loud

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

creating portable apps

Hey guys try using this video
gr8 video

so simple

http://www.5min.com/Video/How-To-Make-Portable-Applications-For-Free-914...

Thank's

Maturnuwun sederek sedoyo,, meniko manfaat sanget kadose. senajan kulo nggeh mboten ngertos

Visual Basic

May I use MS Visual Basic 4 (or 6) to make portable app?

It is not a .Net version of VB!

Thanks

certainly :D

certainly Laughing out loud

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Compilers??

Does any 1 no any C++ compilers!

No need

There's no need for any C++ compiler. Additionally, if you don't know about C++ compilers, it's unlikely that one would be of any use to you.

To respond to your question though, MinGW compiles C++ code.

Christian, developer, moderator

Help and guides want you to have it up to read the translation.

Help and guides want you to have it up to read the translation.
도움말이나 가이드 정도는 번역한 글을 올려줬으면 좋겠습니다.

You are viewing the page through Google Translate.
But does not really understand.

현재 페이지를 구글번역을 통해 보고 있습니다.
그런데 이해가 되질 않습니다.

Been looking for something like this

i have been wondering how everyone makes these wonderful apps i use everyday. now i might be able to make myself one now lol. That's if i can figure out how to do it exactly. Because i have no experience with scripting at all or anything.

Anyone got any tips just xfire me or post it here

Also im having issues getting x-chat from the link above y is this? Is there another way i can get that program or is there a newer way of making portable apps

I also saw a post about someone wanted a copy of the walk through so i edited some of the html on this page and made this:

http://docs.google.com/View?id=dccw2b6_4hpcmn7ff

Right click and save link and after the name of the file add .html and select the scroll menu and put all files. That's if u want to have a copy on hand all the times.

~(edited using notepad)
~(quoted from Creating A Portable App: A Guerrilla Field Guide
Submitted by OliverK on July 31, 2008 - 8:42pm)

Dalton M. Kadar

(Don't Mind Me I'm A Noob)

Virtual PC

noobie here...i could just figure this out thru trial and error..but, can i create portables within a virtual pc? thanx for reply...

hi everybody.

Yes, you may use Virtual PC

Yes, you may use Virtual PC to create a environment for testing and developing an application to portable.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Java? As I understand there's

Java? As I understand there's the Java Portablizer, but there is not yet an Open Source JRE. So use of Java applications is somehow limited.

Now that we have java portable you might want to change this guide to reflect that Eye-wink Also, the links to the format specification and the installer are outdated.

Other than that, still an great guide.

Behold, the DutchLander has arrived.
Grammatical errors are copyrighted.

NSIS Portable

Hi Oliver,
you might want to change the link to NSIS Portable too. It's official Smiling
Well, keep up your work on this great guide.

updated Thanks for letting

updated Laughing out loud Thanks for letting me know. You to, MaienM

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Thanks

for mentioning my Dia Portable, but it isn't a Java app. Sticking out tongue
It's GTK.

Fine, I'll take it out. I

Shocked

Fine, I'll take it out. I thought it was though. I guess I didn't read my search well enough.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world

Update for freeware

Don't forget to update this to include the new freeware apps.

yeah, I'll have to update

yeah, I'll have to update that somehow. I'm rather swamped with RFL right now, but I will try to work on it. I gotta give out ta seal on eclipse on and fix screamer so hoepfully I can get another release.

Too many lonely hearts in the real world
Too many bridges you can burn
Too many tables you can't turn
Don't wanna live my life in the real world