From e2b1a7e4e4d9bfc32aab9921c30a6e40e08b8210 Mon Sep 17 00:00:00 2001 From: Andras Timar Date: Wed, 12 Sep 2012 16:06:07 +0200 Subject: fdo#39791 do not steal .doc association from MS Word I don't think it made sense to check OpenWithList at all. When we found WordPad there, we registered the file type, even when it was registered by MS Office. Change-Id: I15a151051cadd329e8614388ceb84470ea28805a --- .../customactions/reg4allmsdoc/reg4allmsi.cxx | 37 +++------------------- 1 file changed, 5 insertions(+), 32 deletions(-) (limited to 'setup_native/source/win32/customactions') diff --git a/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx b/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx index f0f89fc1051e..63e065c028bc 100644 --- a/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx +++ b/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx @@ -108,13 +108,13 @@ static BOOL CheckExtensionInRegistry( LPCSTR lpSubKey ) DWORD nSize = sizeof( szBuffer ); lResult = RegQueryValueExA( hKey, "", NULL, NULL, (LPBYTE)szBuffer, &nSize ); - if ( ERROR_SUCCESS == lResult ) + if ( ERROR_SUCCESS == lResult && nSize > 0 ) { szBuffer[nSize] = '\0'; OutputDebugStringFormat( "Found value [%s] for key [%s].\n", szBuffer, lpSubKey ); if ( strncmp( szBuffer, "WordPad.Document.1", 18 ) == 0 ) - { // We will replace registration for word pad + { // We will replace registration for WordPad (alas, on XP only) FIXME bRet = true; } else if ( strncmp( szBuffer, "LibreOffice.", 12 ) == 0 ) @@ -122,38 +122,11 @@ static BOOL CheckExtensionInRegistry( LPCSTR lpSubKey ) bRet = true; } else if ( strncmp( szBuffer, "lostub.", 7 ) == 0 ) - { // We will replace registration for ooostub, too + { // We will replace registration for lostub, too bRet = true; } - else - { - OutputDebugStringFormat( " Checking OpenWithList of [%s].\n", lpSubKey ); - HKEY hSubKey; - lResult = RegOpenKeyExA( hKey, "OpenWithList", 0, KEY_ENUMERATE_SUB_KEYS, &hSubKey ); - if ( ERROR_SUCCESS == lResult ) - { - DWORD nIndex = 0; - while ( ERROR_SUCCESS == lResult ) - { - nSize = sizeof( szBuffer ); - lResult = RegEnumKeyExA( hSubKey, nIndex++, szBuffer, &nSize, NULL, NULL, NULL, NULL ); - if ( ERROR_SUCCESS == lResult ) - { - OutputDebugStringFormat( " Found value [%s] in OpenWithList of [%s].\n", szBuffer, lpSubKey ); - if ( strncmp( szBuffer, "WordPad.exe", 11 ) == 0 ) - { // We will replace registration for word pad - bRet = true; - } - else if ( nSize > 0 ) - bRet = false; - } - } - } - else - { - OutputDebugStringFormat( " No OpenWithList found!\n" ); - } - } + else // we have a default value -> do not register, see fdo#39791 + bRet = false; } else // no default value found -> return TRUE to register for that key bRet = true; -- cgit v1.2.3