Hans Leidekker : uninstaller: Don't list system components.
Alexandre Julliard
julliard at winehq.org
Mon May 30 12:41:17 CDT 2011
Module: wine
Branch: master
Commit: 3de8370a4e9c98590fcf95c3421a10fde830d292
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3de8370a4e9c98590fcf95c3421a10fde830d292
Author: Hans Leidekker <hans at codeweavers.com>
Date: Mon May 30 09:28:45 2011 +0200
uninstaller: Don't list system components.
---
programs/uninstaller/main.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/programs/uninstaller/main.c b/programs/uninstaller/main.c
index c85bf5a..e3178db 100644
--- a/programs/uninstaller/main.c
+++ b/programs/uninstaller/main.c
@@ -60,7 +60,7 @@ static const WCHAR PathUninstallW[] = {
'U','n','i','n','s','t','a','l','l',0 };
static const WCHAR UninstallCommandlineW[] = {'U','n','i','n','s','t','a','l','l','S','t','r','i','n','g',0};
static const WCHAR WindowsInstallerW[] = {'W','i','n','d','o','w','s','I','n','s','t','a','l','l','e','r',0};
-
+static const WCHAR SystemComponentW[] = {'S','y','s','t','e','m','C','o','m','p','o','n','e','n','t',0};
/**
* Used to output program list when used with --list
@@ -176,19 +176,27 @@ static int FetchFromRootKey(HKEY root)
{
HKEY hkeyApp;
int i;
- DWORD sizeOfSubKeyName, displen, uninstlen;
+ DWORD sizeOfSubKeyName, displen, uninstlen, value, type, size;
WCHAR subKeyName[256];
sizeOfSubKeyName = 255;
for (i=0; RegEnumKeyExW( root, i, subKeyName, &sizeOfSubKeyName, NULL, NULL, NULL, NULL ) != ERROR_NO_MORE_ITEMS; ++i)
{
RegOpenKeyExW(root, subKeyName, 0, KEY_READ, &hkeyApp);
+ if (!RegQueryValueExW(hkeyApp, SystemComponentW, NULL, &type, (LPBYTE)&value, &size) &&
+ type == REG_DWORD && value == 1)
+ {
+ RegCloseKey(hkeyApp);
+ sizeOfSubKeyName = 255;
+ continue;
+ }
if (!RegQueryValueExW(hkeyApp, DisplayNameW, NULL, NULL, NULL, &displen))
{
- DWORD value, type;
WCHAR *command;
- if (!RegQueryValueExW(hkeyApp, WindowsInstallerW, NULL, &type, NULL, &value) && type == REG_DWORD && value == 1)
+ size = sizeof(value);
+ if (!RegQueryValueExW(hkeyApp, WindowsInstallerW, NULL, &type, (LPBYTE)&value, &size) &&
+ type == REG_DWORD && value == 1)
{
static const WCHAR fmtW[] = {'m','s','i','e','x','e','c',' ','/','x','%','s',0};
command = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(fmtW) + lstrlenW(subKeyName)) * sizeof(WCHAR));
More information about the wine-cvs
mailing list