mirror of
https://github.com/mbirth/wiki.git
synced 2024-11-09 13:16:45 +00:00
161 lines
6.3 KiB
Markdown
161 lines
6.3 KiB
Markdown
---
|
|
title: U3Helper
|
|
language: en
|
|
layout: default
|
|
created: 2009-02-28 02:26:46 +0100
|
|
updated: 2009-09-12 01:38:44 +0200
|
|
toc: false
|
|
tags:
|
|
- software
|
|
- autohotkey
|
|
- u3helper
|
|
---
|
|
Preface
|
|
=======
|
|
|
|
Being proud owner of a [U3 capable]({% post_url 2011-07-22-u3 %}) flash drive, I wanted to add some of the tools I use
|
|
everyday but which were not U3 compatible.
|
|
|
|
Running a U3 program from the LaunchPad basically does the following things:
|
|
|
|
1. unpack the `.u3p` package (which is a `.zip`) to your local `Application Data\U3` directory
|
|
1. run the *hostConfigure* command from the manifest file (once per session)
|
|
1. run the *appStart* command from the manifest file (this starts the application)
|
|
|
|
Ejecting the U3 drive does the following for all programs which were ran in that session:
|
|
|
|
1. if the program is still running, run the *appStop* command from the manifest file
|
|
1. run the *hostCleanUp* command from the manifest file
|
|
|
|
Most programs store their settings in a key in the Windows registry. Some others need an `.ini` file in their folder.
|
|
So in both cases it's relatively easy to move them to another location and run them from there.
|
|
|
|
After I had successful runs using a batch file for *hostConfigure* which imported a registry file and another batch
|
|
file for *hostCleanUp* which exported the new settings to that file, I wanted to create a tool which automates most
|
|
steps neccessary for a program to run.
|
|
|
|
So the **U3Helper** was born.
|
|
|
|
The first version got too complicated after a while and so I started from scratch. The result it this tool.
|
|
|
|
|
|
Usage
|
|
=====
|
|
|
|
This manual assumes you already know which registry branches and/or configuration files and/or OCXes/DLLs your
|
|
application uses.
|
|
|
|
|
|
Manifest file
|
|
-------------
|
|
|
|
Make the `actions`-section of your `manifest.u3i` look like this (the parameters in the `appStart` tag are for *WebMon*,
|
|
not for the U3Helper):
|
|
|
|
{% highlight xml %}
|
|
<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>
|
|
{% endhighlight %}
|
|
|
|
<p><div class="noteclassic" markdown="1">
|
|
Note: The GUID `0f90f88c-5e05-4cab-8c3a-e1c0112b06fd` is that of the U3Helper, NOT the one of the application of that
|
|
manifest!
|
|
</div></p>
|
|
|
|
If the application writes something to `%USERPROFILE%\Application Data`, change the `appStart` line to look like this:
|
|
|
|
<appStart cmd="%U3_HOST_EXEC_PATH%\U3Helper.exe">appstart</appStart>
|
|
|
|
This way, the U3Helper will change some environment variables for the launched application so that it stores all
|
|
user-data on the flash drive instead of on the local harddisk.
|
|
|
|
|
|
U3Helper.ini
|
|
------------
|
|
|
|
Now create a file `U3Helper.ini` and put it into the `host` directory in your U3 package so that it gets extracted
|
|
to `%U3_HOST_EXEC_PATH%`.
|
|
|
|
Here is a template:
|
|
|
|
{% highlight ini %}
|
|
[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
|
|
{% endhighlight %}
|
|
|
|
* 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.
|
|
* if you put a file `regdataX.reg` into the `data` directory in your U3 package, this file gets imported into the
|
|
registry after all other files have been processed. But this file never gets overwritten by a newer dump so it's
|
|
perfectly to enforce some settings the program changes every time, like relative paths into absolute paths.
|
|
* 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.
|
|
|
|
|
|
Download
|
|
========
|
|
|
|
* [u3helper.zip]({{ site.url }}/assets/u3helper.zip) version 2.1, April 2007, incl. sources
|
|
* [u3helper.u3p]({{ site.url }}/assets/u3helper.u3p) version 2.4, June 2008
|