On 4/18/07, Detlef Riekenberg wine.dev@web.de wrote:
On Mo, 2007-04-16 at 16:44 -0500, Tom Spear wrote:
I took lines 196-197 and duplicated that, changing HKEY_LOCAL_MACHINE to HKEY_CURRENT_USER, and
You can move most of the code from FetchUninstallInformation() to a seperate function and use the rootkey as Parameter.
get_uninstallinfo_from_reg(HKEY_LOCAL_MACHINE); get_uninstallinfo_from_reg(HKEY_CURRENT_USER);
I ended up creating a new patch that does something similar, while keeping the FetchUninstallInformation function
Did you already checked, what windows does with duplicate Programm names?
No, but I will do that in just a minute.
More hints:
lstrcpyW(key_app, PathUninstallW); lstrcatW(key_app, BackSlashW); p = key_app+lstrlenW(PathUninstallW)+1;
Why not add the slash direct to PathUninstallW?
This was already part of the code that I copied. Why the original author of this code did this, I have no clue and was wondering about that as well.
sizeOfSubKeyName = 255;
Fixed numbers are not a good Idea (error-prone). This value is related to "WCHAR subKeyName[256];", but RegEnumKeyEx expect the max. size in TCHAR, including the terminating zero, so the correct value for sizeOfSubKeyName is 256.
A nice, automatic way is:
sizeOfSubKeyName = sizeof(subKeyName)/sizeof(subKeyName[0]);
Such a construct works independant from the type (WCHAR / CHAR) and the length of the String.
See above
All together looks like more than one Patch.
--
By by ... Detlef
Like I said, I ended up rewriting the patch, and in so doing, created a fairly large patch, because most of the functions had to be rewritten to support an array being passed as a parameter. The 2nd patch actually will have to be changed a little more as well because I didn't document anything, however I submitted it here for suggestions so I could have a rough base to work with.