| 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 - 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. |