90 lines
3.2 KiB
Plaintext
90 lines
3.2 KiB
Plaintext
|
|
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 identifier : 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 parts that we are interested in using
|
|
grep (and fix it with sed) and put that into app.added by example
|
|
( let's 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 actually required by the tool.
|
|
|
|
The problem with this (and it is not a big one) is that regedit exports long
|
|
data streams onto many lines, and since I don't have tons of time I setup
|
|
another Perl script (regRestorer.pl) that fixes this (this could easily
|
|
be done in C obviously) (left as exercise ;-) ).
|
|
|
|
So, once you parsed app.added into regRestorer.pl you get an 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 your 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.
|