Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7343)

Unified Diff: chrome/installer/util/shell_util.cc

Issue 101001: For system level install read setup.exe path from HKLM instead of HKCU. (Closed)
Patch Set: Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/shell_util.cc
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc
index 99fd0a64bdaf36cc1c190b33a095f65ce23aa6d7..55e576aa3a694f870b0deb4166d28a81b8bc8113 100644
--- a/chrome/installer/util/shell_util.cc
+++ b/chrome/installer/util/shell_util.cc
@@ -75,26 +75,17 @@ class RegistryEntry {
entries.push_front(new RegistryEntry(open_with_key, std::wstring()));
}
- // Chrome extension installer
+ // Chrome Extension file handler
std::wstring install_cmd =
ShellUtil::GetChromeInstallExtensionCmd(chrome_exe);
std::wstring prog_id = std::wstring(L"Software\\Classes\\") +
ShellUtil::kChromeExtProgId;
-
- // Extension file handler
entries.push_front(new RegistryEntry(prog_id,
- ShellUtil::kChromeExtProgIdDesc));
+ ShellUtil::kChromeExtProgIdDesc));
entries.push_front(new RegistryEntry(
- prog_id + L"\\DefaultIcon", icon_path));
+ prog_id + ShellUtil::kRegDefaultIcon, icon_path));
entries.push_front(new RegistryEntry(
- prog_id + L"\\shell\\open\\command", install_cmd));
-
- // .crx file type extension
- std::wstring file_extension_key(L"Software\\Classes\\");
- file_extension_key.append(L".");
- file_extension_key.append(chrome::kExtensionFileExtension);
- entries.push_front(new RegistryEntry(file_extension_key,
- ShellUtil::kChromeExtProgId));
+ prog_id + ShellUtil::kRegShellOpen, install_cmd));
BrowserDistribution* dist = BrowserDistribution::GetDistribution();
std::wstring start_menu_entry(ShellUtil::kRegStartMenuInternet);
@@ -133,6 +124,9 @@ class RegistryEntry {
capabilities + L"\\FileAssociations",
ShellUtil::kFileAssociations[i], ShellUtil::kChromeHTMLProgId));
}
+ entries.push_front(new RegistryEntry(
+ capabilities + L"\\FileAssociations",
+ chrome::kExtensionFileExtension, ShellUtil::kChromeExtProgId));
for (int i = 0; ShellUtil::kProtocolAssociations[i] != NULL; i++) {
entries.push_front(new RegistryEntry(
capabilities + L"\\URLAssociations",
@@ -244,6 +238,14 @@ bool BindChromeAssociations(HKEY root_key, const std::wstring& chrome_exe) {
ShellUtil::kChromeHTMLProgId, true);
}
+ // .crx file type extension
+ std::wstring file_extension_key = classes_path + L"\\." +
+ chrome::kExtensionFileExtension;
+ items->AddCreateRegKeyWorkItem(root_key, file_extension_key);
+ items->AddSetRegValueWorkItem(root_key, file_extension_key, L"",
+ ShellUtil::kChromeExtProgId, true);
+
+
// protocols associations
std::wstring chrome_open = ShellUtil::GetChromeShellOpenCmd(chrome_exe);
std::wstring chrome_icon(chrome_exe);
@@ -356,7 +358,9 @@ ShellUtil::RegisterStatus RegisterOnVista(const std::wstring& chrome_exe,
file_util::AppendToPath(&exe_path, installer_util::kSetupExe);
if (!file_util::PathExists(exe_path)) {
BrowserDistribution* dist = BrowserDistribution::GetDistribution();
- RegKey key(HKEY_CURRENT_USER, dist->GetUninstallRegPath().c_str());
+ HKEY reg_root = InstallUtil::IsPerUserInstall(chrome_exe.c_str()) ?
+ HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE;
+ RegKey key(reg_root, dist->GetUninstallRegPath().c_str());
key.ReadValue(installer_util::kUninstallStringField, &exe_path);
CommandLine command_line(L"");
command_line.ParseFromString(exe_path);
@@ -394,9 +398,11 @@ const wchar_t* ShellUtil::kAppPathsRegistryKey =
const wchar_t* ShellUtil::kAppPathsRegistryPathName = L"Path";
#if defined(GOOGLE_CHROME_BUILD)
+const wchar_t* ShellUtil::kChromeExtProgId = L"ChromeExt";
const wchar_t* ShellUtil::kChromeHTMLProgId = L"ChromeHTML";
const wchar_t* ShellUtil::kChromeHTMLProgIdDesc = L"Chrome HTML";
#else
+const wchar_t* ShellUtil::kChromeExtProgId = L"ChromiumExt";
const wchar_t* ShellUtil::kChromeHTMLProgId = L"ChromiumHTML";
const wchar_t* ShellUtil::kChromeHTMLProgIdDesc = L"Chromium HTML";
#endif
@@ -407,7 +413,6 @@ const wchar_t* ShellUtil::kProtocolAssociations[] = {L"ftp", L"http", L"https",
NULL};
const wchar_t* ShellUtil::kRegUrlProtocol = L"URL Protocol";
-const wchar_t* ShellUtil::kChromeExtProgId = L"ChromeExt";
const wchar_t* ShellUtil::kChromeExtProgIdDesc = L"Chrome Extension Installer";
ShellUtil::RegisterStatus ShellUtil::AddChromeToSetAccessDefaults(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698