Chromium Code Reviews| Index: chrome/installer/util/install_util.cc |
| =================================================================== |
| --- chrome/installer/util/install_util.cc (revision 70414) |
| +++ chrome/installer/util/install_util.cc (working copy) |
| @@ -82,20 +82,25 @@ |
| bool system_install) { |
| DCHECK(dist); |
| RegKey key; |
| + HKEY reg_root = (system_install) ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; |
| + LONG result = key.Open(reg_root, dist->GetVersionKey().c_str(), KEY_READ); |
| + |
| std::wstring version_str; |
| + if (result == ERROR_SUCCESS) |
| + result = key.ReadValue(google_update::kRegVersionField, &version_str); |
| - HKEY reg_root = (system_install) ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; |
| - if (!key.Open(reg_root, dist->GetVersionKey().c_str(), KEY_READ) || |
| - !key.ReadValue(google_update::kRegVersionField, &version_str)) { |
| + key.Close(); |
|
grt (UTC plus 2)
2011/01/11 03:51:30
Remove
amit
2011/01/12 04:11:23
Done.
|
| + Version* ret = NULL; |
| + if (result == ERROR_SUCCESS && !version_str.empty()) { |
| + VLOG(1) << "Existing " << dist->GetApplicationName() |
| + << " version found " << version_str; |
| + ret = Version::GetVersionFromString(WideToASCII(version_str)); |
| + } else { |
| VLOG(1) << "No existing " << dist->GetApplicationName() |
| << " install found."; |
| - key.Close(); |
| - return NULL; |
| } |
| - key.Close(); |
| - VLOG(1) << "Existing " << dist->GetApplicationName() |
| - << " version found " << version_str; |
| - return Version::GetVersionFromString(WideToASCII(version_str)); |
| + |
| + return ret; |
| } |
| bool InstallUtil::IsOSSupported() { |
| @@ -167,9 +172,10 @@ |
| bool InstallUtil::DeleteRegistryKey(RegKey& root_key, |
| const std::wstring& key_path) { |
| VLOG(1) << "Deleting registry key " << key_path; |
| - if (!root_key.DeleteKey(key_path.c_str()) && |
| - ::GetLastError() != ERROR_FILE_NOT_FOUND) { |
| - PLOG(ERROR) << "Failed to delete registry key: " << key_path; |
| + LONG result = root_key.DeleteKey(key_path.c_str()); |
| + if (result != ERROR_SUCCESS && result != ERROR_FILE_NOT_FOUND) { |
| + PLOG(ERROR) << "Failed to delete registry key: " << key_path |
| + << " error: " << result; |
| return false; |
| } |
| return true; |
| @@ -183,10 +189,13 @@ |
| const std::wstring& value_name) { |
| RegKey key(reg_root, key_path.c_str(), KEY_ALL_ACCESS); |
| VLOG(1) << "Deleting registry value " << value_name; |
| - if (key.ValueExists(value_name.c_str()) && |
| - !key.DeleteValue(value_name.c_str())) { |
| - LOG(ERROR) << "Failed to delete registry value: " << value_name; |
| - return false; |
| + if (key.ValueExists(value_name.c_str())) { |
| + LONG result = key.DeleteValue(value_name.c_str()); |
| + if (result != ERROR_SUCCESS) { |
| + LOG(ERROR) << "Failed to delete registry value: " << value_name |
| + << " error: " << result; |
| + return false; |
| + } |
| } |
| return true; |
| } |