Log in

View Full Version : Moving Spb Pocket Plus to the File Store - a tutorial


Menneisyys
05-01-2005, 11:41 AM
Spb Pocket Plus (SpbPP) doesn't allow for installation on a storage card, not even in the File Store (see for example http://discussion.brighthand.com/showthread.php?s=&postid=767272 on this). The reasons for not allowing for installing the program on storage cards can be found at http://www.pocketpcthoughts.com/forums/viewtopic.php?t=36674 . The built-in File Store, which is already available at the first stages of booting up your device, is a completely different question: as it has turned out, much as the battery indicator service is invoked in the first half of booting up the device, it will run OK off a file store, as with all the other SpbPP plug-ins that are not displayed on the Today screen. So, it's definitely worth doing the hack (also see the bottom line on the size of the memory that can be freed up.)

This task is a kind of relocating applications from main memory to a file store. I've already mentioned in my article on relocating applications (see, for example, http://www.firstloox.org//forums/showthread.php?t=3705 or http://pocketpcmag.com/forum/topic.asp?TOPIC_ID=15329 ) that relocating can be quite complicated. This is the case with SpbPP too.

As, so far, noone has published a working hack for this problem, I've decided to do it myself. Here're the results - pretty impressive if you don't need the additional Today display, only the "additional" goodies like app closing, battery monitor, PIE and File Explorer plug-ins!

In relocating any DLL's (SpbPP has some of DLL's in \Windows), you first need to modify the so-called 'system path'. It's quite similar (but, unfortunately, still not the same!) to the PATH variable in other operating systems. A Windows Mobile device can have several directories in the system path, and these directories may also be on storage cards/built-in file store, not just in the main memory. You may copy DLL files to these directories (to a certain extent, that is).

If you already have set up a DLL directory in the File Store, you may safely skip the following part and go right to the The Spb Pocket Plus hack section.

Modifying the System Path

1. create a directory in your File Store with any tool (File Explorer etc) that you plan to use as a shared DLL repository. It can be named anything; let's assume it's DLLs in the root.

http://menneisyys.freeweb.hu/SpbPPHack/CreateDLLsDir.gif

2. start the Resco Registry Editor (I use it throughout the tutorial; unfortunately, free editors are not so good as Resco so I had to use a commercial one in here. Note that it's the only commercial app I use - I refrain from using, for example, MemMaid), go to [HKEY_LOCAL_MACHINE\Loader] and click System Path.

http://menneisyys.freeweb.hu/SpbPPHack/HKEY_LOCAL_MACHINELoader-1.gif

3, enter an entirely new row under the last entry, after pressing an Enter at the end of it. Enter the full path of the new DLL directory; for example, \iPAQ File Store\DLLs\ or, as with the image below, \LOOXstore\DLLs\. Note the leading and the trailing backslashes!

http://menneisyys.freeweb.hu/SpbPPHack/HKEY_LOCAL_MACHINELoader-2.gif

Press OK, and, after a reset, your new System Path will be used.

Please note that you can also extend the system path with a great utility from the "Mad Programmer" without needing to do any manual and, therefore, error-prone reghack. (Incidentally, Mad Programmer has written a lot of great and free system utilities. Check out, for example, http://www.vancouverpocketpc.com/CAB_installation_tweak.html , http://www.pocketpcthoughts.com/forums/viewtopic.php?t=34790 and http://discussion.brighthand.com/showthread.php?s=&threadid=117760 on his best apps.). Go to http://www.geocities.co.jp/SiliconValley-Cupertino/2039/ and look for the string 'System Path Ver.1.10'. Download 'systempath.lzh'. Also, look for the string 'gsGetFile.dll' and get 'gsgetfile-i.zip'. (Sorry, I can't give direct links to the archives because the hosting site seems to check for the Referer HTTP header so you must visit the main page before downloading!).

From systempath.lzh, copy \ARM\systempath.cpl to the \Windows directory of your PDA and do the same to \ARMRel\gsgetfile.dll from gsgetfile-i.zip.

Then, on your PDA, start the newly added Settings/System/System Path. You'll be presented the following screen:

http://menneisyys.freeweb.hu/SpbPPHack/MadProg1.gif

Just click the + symbol in the upper left corner. You'll see something like this:

http://menneisyys.freeweb.hu/SpbPPHack/MadProg2.gif

Navigate to the target File Store directory and check in the subdirectory there that you also want to use as a DLL store (note that you'll see different subdirectories than mine; it's just that I have these subdirs in my built-in File Store)

http://menneisyys.freeweb.hu/SpbPPHack/MadProg3.gif

Just press the OK button in the lower left and let the reset go on.

Now, your DLL cache is created and you may move your stuff there. Here comes the SpbPP-related stuff.

The Spb Pocket Plus hack

1. install Spb Pocket Plus, if you haven't already done so. It can only be installed into main memory.

2. start Resco Registry Editor and go to [HKEY_LOCAL_MACHINE\Services\PocketPlus]:

http://menneisyys.freeweb.hu/SpbPPHack/ServciesBeforeRemovingPocketPlus.gif

Tap and hold it; choose Export. Save it under any name:

http://menneisyys.freeweb.hu/SpbPPHack/HKLMServciesExport.gif

tap and hold again and choose Delete. From the popup dialog:

http://menneisyys.freeweb.hu/SpbPPHack/HKLMServciesPPlusDelete.gif

choose either Delete or Delete all.

3, in Settings/Today/Items, uncheck Pocket Plus to be able to move plusactions.dll to the DLL store:

http://menneisyys.freeweb.hu/SpbPPHack/DisablePPlusTodayPlugin.gif

Reset your device

4, move

\Windows\plusactions.dll

and

\Windows\PlusService.dll

to the shared DLL folder you've previously created in the file store. It's the best to use the desktop based Total Commander with the WinCE FS plug-in to do this:

http://menneisyys.freeweb.hu/SpbPPHack/MoveTheTwoDLLs.gif

5, restart Resco Registry Editor and choose File/Import. Choose the registry entry file you've just exported.

http://menneisyys.freeweb.hu/SpbPPHack/ImportPrevRegfile.gif

6, reset your device.

7, now, you can re-enable the Today plug-in at Settings/Today/Items - both it and the other Spb Plus services will work OK. If, on the other hand, you don't need the Today plug-in at all (because you only need, just like me, the close/PIE/File Explorer plug-ins and the highly useful battery bar), you can also delete (don't re-enable then the Today plug-in!!)

\Windows\PlusTodayPluginMFC.dll

and the entire contents of \Program Files\PocketPlus.

You may also want to move the 150k-long \Windows\PocketPlus.cpl to anywhere else. Then, the Pocket Plus setting screen won't be available from the Settings/System tab, but you will always be able to access the same functionality by just starting it from a file explorer capable of displaying hidden/system files. The built-in ROM-based File Explorer isn't able, but, for example, Resco File Explorer is, if you allow it to do so by checking in File/Options/Browser/Show all files. Then, just click on the CPL file. It can be located anywhere.

If you choose for getting rid of the Today screen plug-in (but keeping all the other goodies with all their options), the resulting main memory consumption of Spb Pocket Plus may be reduced to zero bytes if you also delete \Windows\Spb Pocket Plus.unload, all \Windows\*.tsk files installed by Spb Pocket Plus (if you don't need additional themes) and the \Windows\PocketPlus.htm help file, if you don't need online help either. Also, you may want to delete the registry entry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Today\Items\"Pocket Plus" then so that SpbPP is no longer listed as a (non-functioning) Today plug-in in Settings/Today/Items.

If you, o the other hand, plan to further use the Today plug-in, not just the additional goodies, that is, the case when the main memory consumption can't be reduced to zero:

- moving \Windows\PlusTodayPluginMFC.dll to a shared directory doesn't work. If you also need the Today plug-in, you need to keep it at its place, as with \Program Files\PocketPlus.

- do NOT try to move \Program Files\PocketPlus\PlusTodayPlugin.dll to anywhere else by accordingly editing HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Today\Items\"Pocket Plus"\DLL ! It will result in a need for a hard reset (tested!)

Bottom line: even if you decide for keeping the Today plug-in functionality, you can move 331k (or, 469k, if you also move PocketPlus.cpl) of previously unmovble system files out of \Windows with the above hack. If you entirely disable the Today plug-in functionality because you just don't need it, you free up some 1.6 Mbytes, which is indeed considerable.

This hack has been tested on both my iPAQ 2210 and Fujitsu-Siemens Pocket Loox 720 and worked flawlessly.

Jon Westfall
05-01-2005, 02:51 PM
Thanks for the helpful information!

DinarSoft
05-02-2005, 08:25 PM
If you want to make the steps shorter here is what you can do

When you go the registry entry, what you need to do is rename the DLL key to anything else (for example xDLL) or change the value (for example xPluseService.dll).

Now you need to force the system to re-read the registry, you can do it this in two different ways (you don't need to go to the settings and turn this plugin off)
- A quick soft reset will free the dll (remeber you changed its name).
- or you can go to the today plugin settings and move any today plugin up or down (this forces the system to free the DLL then re-read the registry and load the DLLs again)

Now you can proceed with the DLL copying.

After you're done, just change the registry entry back to its correct value (remove the x).

and force the system again to re-load the DLLs (like above).

I think this will get you away from using any comercial registry editors, as any free reg. editor will allow you to change registry values witout problems.

Hope this helps