summaryrefslogtreecommitdiffstats
path: root/chrome/installer
diff options
context:
space:
mode:
authorkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-28 17:17:18 +0000
committerkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-28 17:17:18 +0000
commit921af02d638c6f90c45c15b804620c90fd324d19 (patch)
tree271e35d4faeb232e4b7310941ae1180dbdcd14ee /chrome/installer
parent76fdc21de47ba710cd71f1d06ca55362b118c390 (diff)
downloadchromium_src-921af02d638c6f90c45c15b804620c90fd324d19.zip
chromium_src-921af02d638c6f90c45c15b804620c90fd324d19.tar.gz
chromium_src-921af02d638c6f90c45c15b804620c90fd324d19.tar.bz2
For system level install read setup.exe path from HKLM instead of HKCU.
Also register extensions separately for Chrome and Chromium (only one can be made default at one time). BUG=9697 Review URL: http://codereview.chromium.org/101001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14739 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/installer')
-rw-r--r--chrome/installer/util/shell_util.cc35
1 files changed, 20 insertions, 15 deletions
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc
index 99fd0a6..55e576a 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(