Saturday, August 28, 2010

Organizing Portable Applications in Windows XP

In a previous post, I have noted what I felt were several advantages of portable software, but have also mentioned one or two problems with my attempt to use the framework.  This post describes my progress toward another approach to using portable applications in Windows XP.

For quite a few years, I had used drive D to hold portable applications.  These were programs, links, and other materials that I would not have to reinstall, if Windows itself needed to be reinstalled on drive C.  So now it was pretty easy to set up a folder called D:\Installation\Portable Apps.  Under that folder, I set up a subfolder called _Menu.  (With the beginning underscore, Windows Explorer would put it at the top of the list of folders.)  In _Menu, I arranged shortcuts to each of the programs I had brought together into the Portable Apps folder.

This approach had its own advantages and problems.  On the positive side, it could be much faster to run programs from the hard drive than from a USB drive.  So treating drive D as the authoritative source, to be backed up and copied from, made sense.  Then, if I took the USB drive off to some other location and made changes on it and/or on drive D, I would want synchronization software that would let me reconcile those two drives in their changed form.

On the negative side, this rigid file structure, which worked well enough on the hard drive, might not work so well with a USB drive.  Imagine copying a program from drive D to a USB drive that would be plugged into some other computer, where drive D would not be available.  The jump drive would take some other letter -- say, G.  At this point, all of my menu shortcuts to portable files stored somewhere on drive D would fail.  Worse, every reference to drive D within my portable programs would fail.  For instance, if the program kept its settings in D:\Installation\Portable Apps\CoolProgram\coolprogram.ini, it would now be unable to find those settings.  (Fortunately, portable programs usually seemed to refer to other files within the same folder, so this might not be too much of a problem.)

To avoid problems with references to drive D, I went looking for another approach.  In the Portable Freeware Collection (PFC) website, I found a list of portable program launchers, ranked in terms of popularity.  At the top of that list, I found a program called PStart.  Its webpage said, "Unlike Windows shortcuts, PStart uses relative paths, when installed as a portable application. If your USB key drive gets another drive letter when you insert it into another computer, your portable applications still can be started properly" -- as long as those applications were on the same drive as PStart.  This appeared to be an improvement on, where there was some indication that relative addresses might not work for programs other than the .paf files you would get through itself.

So I downloaded PStart and ran it.  It acted like a normal installer, with advice to close all other programs before continuing.  It seemed that it might not let me install it as a portable application.  I went to the PStart FAQs page for guidance.  It seemed to say I could just go ahead.  Sure enough, I came to a screen that gave me a choice between local and portable installation.  But the portable one was not seeing any portable drive -- because, of course, I had not plugged one in.  That is, it was not going to let me do a portable installation directly to D:\Installation\Portable Apps.  I plugged in a USB drive, backed up, and tried again.  But it was still just saying "other drive" -- that is, it was not recognizing the USB device.  So, OK, I canceled the installation and tried again.  This time, it found the USB drive.  I noticed that, now, it did offer me a Browse button, and that led to any drive on the system.  So perhaps I could have installed it directly to somewhere on D after all.  But it was OK; I went with the approach of putting it in the default location, which was the root of the USB stick.

When installation was done, I accepted the option of starting PStart now.  It gave me a little pop-up window that said, "Rightclick to add items."  I didn't want it to add items to the USB drive, so I killed it, went to the root of the USB drive in Windows Explorer, and moved PStart.exe (the only thing I found there) to D:\Installation\Portable Apps.  Then I double-clicked on it and it ran.  But now I noticed I had two PStart icons in my system tray, so I killed this newly started session, right-clicked on one of those tray icons and selected Exit, and then right-clicked on the other one to show the pop-up window again.

Since I had already accumulated a boatload of portable apps in D:\Installation\Portable Apps, I didn't want to right-click and add each of them manually.  I didn't find guidance on the webpage, but in the program itself, File > Search for Executables seemed to be just what the doctor ordered.  This placed a single top-level item in the Items tab, called simply D:\Installation\Portable Apps, with an indication that it had found 429 items.  I opened that item, dragged the corners of the little window to make it bigger and easier to read, and started down the list.  There were a lot of items to delete.  For example, in the case of 7-Zip, it found 7-Zip Portable, 7-Zip Console, 7-Zip File Manager, and 7-Zip GUI.  I had to decide which ones to delete, and then select and delete them one at a time.  Sometimes I had to try them out; sometimes I had to consult D:\Installation\Portable Apps to see which ones I would actually want to run.  In this way, I reduced the list to 102 programs.

Now there was the question of organizing them.  In my _Menu folder, I could create subfolders for various categories of programs -- web browsers, for example.  PStart's list of 102 programs was not the easiest thing to sort through and find what you were looking for.  I sent PStart's makers a question about that.  In the meantime, I planned to keep both organizing approaches.  I would use PStart for its dynamic ability to start a program regardless of the drive letter assigned to the USB drive; but I would use my menu and its submenus of shortcuts, when copying the Portable Apps folder to another hard drive, because I had long been running portable apps from the same place (i.e., D:\Installation) on my various virtual and native Windows installations.

Before long, I found that I was not using PStart very much.  One reason was that it was just more familiar to use the menu of shortcuts.  I wasn't doing very much work in situations where I actually needed a portable drive.  When I did need to run an app from the jump drive, I could just navigate to its folder and click directly on its .exe to run it.  I wanted portable apps primarily so that I could reduce the number of program complexities and reasons for a system crash in Windows XP.  I wasn't sure if portable apps would actually help in that, but that was the nature of the investigation in process.  So I was just using shortcuts to run my portable apps from their own menu, with the idea of adding that menu to my regular Start Menu at some point.

If I had tried to depend more heavily on PStart, it seemed that I would have had some problems.  First, it was not easy to keep its menu updated.  If I brought in a batch of a dozen new portable apps that I had just downloaded from some website, there didn't appear to be any way to detect just the newcomers.  If I ran PStart's regular "Scan for executables" menu option, I would get the list of 400+ executables again, and would have to go picking among them.  I didn't have that kind of time to devote to this.  In some future iteration, I hoped, the program would remember what it had found previously, and would present me only with the newcomers.

A second problem was that PStart did not provide a way to categorize shortcuts.  I was just stuck with this list of 102 programs.  The office software, video software, file utility software -- it was all just lumped in together.  The Edit > Add Folder option didn't mean that I could add a folder to the PStart file list; it meant that I could add a folder that I wanted to list along with all these applications.  If I knew I needed a video program, but couldn't remember its name or just wanted to see which ones I had available, I couldn't go to a subfolder entitled "Video," within the PStart panel, and choose the most suitable app from there; I'd have to just go down the list of 102 programs, one at a time.  Even then, I'd be limited to those whose names made sense.  If a killer new video program called itself XPQ, it just might not occur to me that this was what I was looking for.  I'd have to edit its name, in the list, to make sure I could recognize it -- thereby increasing the amount of reading I'd have to do when I went searching for a program.

Instead of PStart -- indeed, instead of a menu that I would have to maintain -- I decided to try something different.  It occurred to me that I could just arrange the portable app folders themselves in a menu structure.  So under my Multimedia top-level folder, I would have an Audio subfolder; and in there, I would put the actual program folders for each program that I thought of as being primarily audio-related.  I made a copy of my Portable Apps folder and experimented with this.  Along the way I noticed that I (or whoever I got the idea from) had been mistaken:  shortcuts did seem to keep track of their targets, even when they were copied to another drive -- at least as long as they were all copied together.

This hierarchical arrangement seemed to work pretty well, and I decided to make it my approach, at least for the time being.  The next question was how to integrate that hierarchy into my regular Start Menu, with its shortcuts to installed programs.