Is there a tutorial for creating portable applications?
I downloaded NSIS but it looked so hard
anybody can help?
New: Kanri (Oct 9, '24), Platform 29.5.3 (Jun 27, '24)
1,100+ portable packages, 1.1 billion downloads
No Ads November!, Please donate today
John has released the source code for the launchers he has made thus far... I'm afraid it's not easy to understand. But, once you've looked through the NSIS help and start to understand the syntax, you might try looking at his code.
Perhaps a more conceptual approach will be useful... I'm afraid I have little practical experience to draw from.
First, we have a program we want to make portable. Many programs aren't designed with this in mind. Some have optional features that can make them more portable-friendly. Here's a few examples.
Let's say we want to make ScummVM (www.scummvm.org) portable. First we need to see if it does anything unfriendly to portability.
Ex: Writing user settings to the registry is very unfriendly. At best, the default settings suit you and this can have little impact. Worser, you may need to change some settings. When you go to another computer, these settings will have reverted because they were stored on the first computer. Thus our program would have to work around this. At worst, a program might leave pointers to itself in the system registry (file associations, start menu, desktop... I found a program that places its icon on the desktop every time you run it, yeck!) which will of course break once you remove the usb drive. Not fun. Your program would have to revert or block all these system registry changes.
Fortunately a quick search through the registry reveals ScummVM does not utilize it, so we don't have to be concerned with that.
Now, user settings can also be written to files on the computer's hard drive or in a user profile. Same problems as above; however it is easier to fix, because moving files around is easier than moving registry entries around since your USB drive can't have it's own mobile registry (actually... that's a good idea. Get on that Microsoft, I want a HKEY_MOBILE_DEVICE!).
A quick hard drive search reveals ScummVM dumps its configuration file in your Windows directory. This is a problem, mainly because if you set up games in ScummVM, they won't be there when you switch computers.
Now, we could solve this by making a launcher which does the following:
1) Look in the Windows directory for a scummvm.ini.
2) Back it up somwhere
3) Put our scummvm.ini from the usb drive in its place.
4) Run ScummVM
5) Wait for ScummVM to quit.
6) Move scummvm.ini from Windows back to the drive.
7) Restore the old scummvm.ini
Indeed, this may have to be done with some programs. With registry changes, it becomes more complicated because you can't just move a file; you have to manipulate the registry (I think John uses command line regedit.exe options to do all the hard work for him... I tip my hat, since I would have done it the hard way!).
Again, fortunately, a quick search through the ScummVM docs for information about scummvm.ini reveals a useful command-line param: --config. Now all we have to do is point it to OUR USB drive file to make ScummVM (almost) portable! We don't even need more than a batch file as a launcher... although with a different program a launcher may be required.
(Actually, it's slightly more complicated since ScummVM stores absolute paths in the INI file. Luckily, you can edit them by hand with Notepad into relative paths and everything works, but ideally a launcher could scan scummvm.ini after ScummVM quits and make these changes automagically... this is left as an exercise to the very determined reader.
Signature automatically removed for being too awesome.
Thanks a lot for this small guide.
But, as in your example, what would happen if the application crashed suddenly?
1- The original version of scummvm.ini will be lost.
2- The portable application can't take a copy of it (scummvm.ini).
------------
Another question..,
Can't I use a program other than NSIS?
Like Autoit (http://www.autoitscript.com) because it looks easier for me, as I usually create my applications using it.
------------
About Firefox Portable..
When I explored the FirefoxPortable folder, I saw many different folders.
App, Dara and Other
I understood what 'Other' contains.
But for 'Data' I didn't. (Especially 'Data\profile')
As for 'App', I found three folder, firefox, Appinfo and DefaultData.
I found out that firefox contains the data of the Firefox itself, so, what are AppInfo and DefaultData used for?
-------------
Was FirefoxPortable.exe created by using NSIS?
If not, for what is that source in the 'Other\FirefoxPortableSource' folder?
-------------
If I want to make my app portable, and install it on PortableApps, the extension has to '*.paf.exe'. How to do that? Is that by comperssing it using 7z ?
And thanks very much again
Data = Your settings
AppInfo = For the menu, don't worry about that yet until John releases the spec.
DefaultData = Default settings, copied to Data if there are no settings.
Yes, you can use AutoIt if you want, it doesn't matter.
Yes, FirefoxPortable.exe is created by NSIS, but it's open-source so you have to have the source.
Yes, it's a self-extractor from 7-Zip. You have to have inside the archive:
----
Ryan McCue
Person 1: Oh my god. You will never believe what just happened.
Person 2: What?
Person 1: I can't remember, I've forgotten.
"If you're not part of the solution, you're part of the precipitate."
What if the application crashed suddenly? like the USB was disconnected suddenly.
What would happen to the data stored on the PC ? and the back up of the data (if existed somewhere on the harddisk) ?
It would just stay there.
The backup is kept in the Data directory anyway.
----
Ryan McCue
Person 1: Oh my god. You will never believe what just happened.
Person 2: What?
Person 1: I can't remember, I've forgotten.
"If you're not part of the solution, you're part of the precipitate."
I recommend looking at the launcher for Suduko, I think thats the simplist ive found so far.