Usually developers have to take care, their apps are U3-compatible, don't write anything to the registry, run without installation of some drivers, etc. pp. So the selection of U3-applications is rather small and it's taking ages for new apps to get released.
I already tried to make a script which takes care of registry entries, registration of .ocx/.dll files and movement of configuration files but this former project got too complicated and I stopped developing it. Now I wrote such thing from scratch in about 4 evenings. You configure it via an INI-file. But first the script:
Source code and compiled U3-Package can be downloaded here. (243 kB, Mirror)
[BugTracker]
[Forum]
To download various applications I converted to U3 using my U3Helper, go there:
[U3 Download area]
You just have to make the action-section of your manifest.u3i look like this:
<actions> <hostConfigure cmd="%U3_DEVICE_EXEC_PATH%\..\..\0f90f88c-5e05-4cab-8c3a-e1c0112b06fd\Exec\U3Helper.exe">config</hostConfigure> <appStart workingdir="%U3_APP_DATA_PATH%" cmd="%U3_HOST_EXEC_PATH%\WebMon.exe">-prefs "%U3_APP_DATA_PATH%\WebMon.ini" -pages "%U3_APP_DATA_PATH%\pages\WebPages.dat"</appStart> <appStop cmd="%U3_HOST_EXEC_PATH%\U3Helper.exe">appstop</appStop> <hostCleanUp cmd="%U3_HOST_EXEC_PATH%\U3Helper.exe">unconfig</hostCleanUp> </actions>
Note: The GUID 0f90f88c-5e05-4cab-8c3a-e1c0112b06fd is that of the U3Helper, NOT the one of the application of that manifest!!
Now, create an U3Helper.ini and put it in the "host"-directory inside the U3-package, so that it gets into %U3_HOST_EXEC_PATH%. The INI may look like this:
[U3Helper] AppName=PC OnPoint AppExe=PConPoint.exe ; enter commandlines to run before stopping the application and before ; ejecting the device. All variables mentioned under [FileDelete] work. RunBeforeStop= RunBeforeEject= ; set Unattended to 1 to suppress settings-related questions ; this way, previously existing settings on the host always get ; replaced by the U3's settings and restored on eject Unattended=0 [RegBackup] ; enter registry branches to be backed up (+deleted) on eject ; and restored on first run ; SHORTCUTS (HKCU, HKLM,...) DON'T WORK! HKEY_CURRENT_USER\Software\PC OnPoint [RegDelete] ; enter registry branches to be just deleted without backup [regsvr32] ; enter filenames to be registered using regsvr32 ; these files are assumed to be in %U3_HOST_EXEC_PATH% CCListBar.ocx [DataToExecDir] ; enter filenames or foldernames to be copied to the %U3_HOST_EXEC_PATH% ; and copied back to %U3_APP_DATA_PATH% afterwards ; ONLY SIMPLE NAMES, NO PATHS OR WHATSOEVER! safe.dat safe.ind [ParseIniFiles] ; enter filenames of .ini-files to be parsed for env vars on hostConfigure ; and re-replace the paths by envvars on hostCleanUp. The files should reside ; in %U3_APP_DATA_PATH% test.ini [FileDelete] ; enter filenames or foldernames to be deleted on eject ; Environment variables working (case sensitive!): ; %ALLUSERSPROFILE%, %APPDATA%, %CommonProgramFiles%, %HOMEPATH%, ; %ProgramFiles%, %SystemRoot%, %TEMP%, %USERPROFILE%, %WINDIR%, ; %U3_APP_DATA_PATH%, %U3_DEVICE_DOCUMENT_PATH%, %U3_DEVICE_EXEC_PATH% %ALLUSERSPROFILE%\Application Data\Spybot - Search & Destroy [EnvPath] ; enter folders to be added to the PATH environment variable ; upon running the application. All variables mentioned under ; [FileDelete] get replaced. %U3_HOST_EXEC_PATH%\lib\gtk\bin
And finally install the U3Helper.u3p to your U3 device. Note: The usual way of putting the U3Helper.exe into the "host"-directory of a U3-package still works. Just set the manifest.u3i correctly!
All registry keys listed under [RegBackup] are being backed up on eject of the U3-stick to sequential files (regdata1.reg, regdata2.reg and so on) in %U3_APP_DATA_PATH% and afterwards, the keys are deleted from the host machine. Also those branches are inserted back into the registry upon the first launch of that app after plugging in the stick.
The section [RegDelete] just deletes those keys upon eject.
Under [regsvr32] you can list all .ocx or .dll files which should be registered before launching the app and unregistered on eject. The files are assumed to be in %U3_HOST_EXEC_PATH%.
Finally [DataToExecDir] lists files which should be copied into the directory containing the application (many applications insist on their config-files lying where the .exe lies) and back to %U3_APP_DATA_PATH% on eject.
Using this helper script, you can get almost any application U3-smart. The most tricky part is to get the used registry branches and sometimes it's hard to find all needed OCXes for one program to work.
Hope here's at least one U3-developer who might find this useful. :-) I already "ported" CCleaner, CDBurnerXP, DeepBurner, EVEREST, Handy Safe, Media Player Classic, MWAV Toolkit, Notepad++, OffByOne, PC OnPoint, SmartFTP, TrueCrypt, UltraISO and WebMon. All these apps are now available on whatever Windows-PC I plug my U3-stick into - with my personal settings.
Cheers,
-mARKUS
P.S.: There's something I needed for CDBurnerXP: If you put a file regdataX.reg to %U3_APP_DATA_PATH% it is inserted into the registry after all other data has been inserted. CDBurnerXP set its paths to absolute paths in its registry settings and I had to find a way to reset them to U3-specific paths.
P.P.S.: Please, if you made any app U3-capable, Upload it to my FTP at ftp://riddick.is-a-geek.net/ . This FTP is not always available, so if it is down, try again some hours/days later. There are also many U3-Apps, I already converted.