mirror of
git://source.winehq.org/git/wine.git
synced 2024-08-31 09:24:07 +00:00
|
||
---|---|---|
.. | ||
.cvsignore | ||
Makefile.in | ||
README | ||
regapi.c | ||
regapi.spec | ||
regFixer.pl | ||
regRestorer.pl | ||
regSet.sh |
Registry Command Line API Tool ------------------------------ This progam is intended to fill a particular need. I needed to make the wine registry look like it would have been if my application would have been installed by its installation program. Since this was not possible I took the following approach. 1 - Use regedit to export my full Windows registry before I install my application. 2 - Use regedit to export my full Windows registry after I had install my application. 3 - Generate the differences between the two image. What I obtain from the diff is what I need to apply to the wine registry. Obvisouly the process is not that straight forward to solve, first, you don't get the diff between two Windows regedit exported .reg file by doing a simple diff. What I had to do is a little more complex, but not that much... (Assuming that the registry picture files are named ./before.reg and ./after.reg) 1 - Parse the before.reg and after.reg file into regFixer.pl, in order to obtain lines in the form [HKEY\Sub1\Sub2\...\Subn]"Value"="Data" (where "Data" can be prefixed by the type identifyer : hex:, hex(0000000?) or dword:) 2 - Generate the diff between the before.reg.fix and after.reg.fix into app.diff Now we have a app.reg file that contain what has been done by installing the application. To this we extract the part's that we are interested in using grep (and fix it with sed) and put that into app.added by example ( let say we keep the added values only ). At this point we know which registry entry to add to the wine registry. It only remains to take the format we have and reset it into a format similar to the one we get from regedit. I say "similar" because there is a tiny difference between Windows regedit export format and the format actualy required by the tool. The problem with this (and it is not a big one) is that regedit export long data streams onto many lines, and since I dont have tons of time I setup another Perl script (regRestorer.pl) that fixes this (this could easily be done in C obviously) (left as excercise ;-) ). So, once you parsed app.added into regRestorer.pl you get a app.reg ready to process by regapi. So, this package comes with a few pieces: regFixer.pl - Will convert the export of regedit into something "diff-able" regRestorer.pl - Will convert "cleaned" diff file into something "regapi-able" regSet.sh - Will do the procedure explained herein for the added key only. FAQ --- Quick Start Guide ----------------- 1 - Get a snapshot of your windows registry in before.reg, (regedit/export) 2 - Install you're application, 3 - Get a snapshot of your windows registry in after.reg. 4 - Invoke ./regSet.sh before.reg after.reg Adding key I have in a regedit export file (nothing to diff with...) ------------------------------------------ 1 - Invoke ./regSet.sh /dev/null myRegistry.reg regapi help ----------- 1 - regapi has some sort of "man page like" help in it, simply invoke it without any arguments. Hope this is of any use to you. Sylvain St-Germain.