diff options
author | kuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-17 00:18:27 +0000 |
---|---|---|
committer | kuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-17 00:18:27 +0000 |
commit | aae9cf7ec74de68a042357506ccd29b76b5885b9 (patch) | |
tree | ec2b547a02ca2d8faad5eab8450759548c3af1a7 /chrome/installer/util/shell_util.cc | |
parent | 6273e2e7892702061d535025f7144a005ea2fc5d (diff) | |
download | chromium_src-aae9cf7ec74de68a042357506ccd29b76b5885b9.zip chromium_src-aae9cf7ec74de68a042357506ccd29b76b5885b9.tar.gz chromium_src-aae9cf7ec74de68a042357506ccd29b76b5885b9.tar.bz2 |
Use different names for Chrome/Chromium for Chrome HTML prog id. If we
user the same name for both (ChromeHTML) Vista reports that http/https
are associated with Chrome as well as Chromium and each treats itself
as default browser.
Also do some cleanup - instead of trying to update only the Chrome open
cmd, go ahead and register the whole browser again (this doesn't change
user preferences).
BUG=9697
Review URL: http://codereview.chromium.org/67229
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13906 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/installer/util/shell_util.cc')
-rw-r--r-- | chrome/installer/util/shell_util.cc | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc index 3015645..6370c61 100644 --- a/chrome/installer/util/shell_util.cc +++ b/chrome/installer/util/shell_util.cc @@ -53,12 +53,14 @@ class RegistryEntry { std::wstring quoted_exe_path = L"\"" + chrome_exe + L"\""; std::wstring open_cmd = ShellUtil::GetChromeShellOpenCmd(chrome_exe); - entries.push_front(new RegistryEntry(L"Software\\Classes\\ChromeHTML", + std::wstring chrome_html_prog_id(ShellUtil::kRegClasses); + file_util::AppendToPath(&chrome_html_prog_id, ShellUtil::kChromeHTMLProgId); + entries.push_front(new RegistryEntry(chrome_html_prog_id, ShellUtil::kChromeHTMLProgIdDesc)); entries.push_front(new RegistryEntry( - L"Software\\Classes\\ChromeHTML\\DefaultIcon", icon_path)); + chrome_html_prog_id + ShellUtil::kRegDefaultIcon, icon_path)); entries.push_front(new RegistryEntry( - L"Software\\Classes\\ChromeHTML\\shell\\open\\command", open_cmd)); + chrome_html_prog_id + ShellUtil::kRegShellOpen, open_cmd)); std::wstring exe_name = file_util::GetFilenameFromPath(chrome_exe); std::wstring app_key = L"Software\\Classes\\Applications\\" + exe_name + @@ -357,7 +359,9 @@ ShellUtil::RegisterStatus RegisterOnVista(const std::wstring& chrome_exe, // Remove unnecessary "URL Protocol" entry from shell registration. This value // was written by older installers so ignoring error conditions. void RemoveUrlProtocol(HKEY root) { - RegKey key(root, L"Software\\Classes\\ChromeHTML", KEY_ALL_ACCESS); + std::wstring chrome_html_prog_id(ShellUtil::kRegClasses); + file_util::AppendToPath(&chrome_html_prog_id, ShellUtil::kChromeHTMLProgId); + RegKey key(root, chrome_html_prog_id.c_str(), KEY_ALL_ACCESS); key.DeleteValue(ShellUtil::kRegUrlProtocol); } @@ -379,8 +383,14 @@ const wchar_t* ShellUtil::kAppPathsRegistryKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths"; const wchar_t* ShellUtil::kAppPathsRegistryPathName = L"Path"; +#if defined(GOOGLE_CHROME_BUILD) const wchar_t* ShellUtil::kChromeHTMLProgId = L"ChromeHTML"; const wchar_t* ShellUtil::kChromeHTMLProgIdDesc = L"Chrome HTML"; +#else +const wchar_t* ShellUtil::kChromeHTMLProgId = L"ChromiumHTML"; +const wchar_t* ShellUtil::kChromeHTMLProgIdDesc = L"Chromium HTML"; +#endif + const wchar_t* ShellUtil::kFileAssociations[] = {L".htm", L".html", L".shtml", L".xht", L".xhtml", NULL}; const wchar_t* ShellUtil::kProtocolAssociations[] = {L"ftp", L"http", L"https", |