Chromium Code Reviews| Index: chrome/installer/util/shell_util.cc |
| diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc |
| index 5ababade20aec9b482ef9497fb9a5c179706bb92..498d027b2118349d0fbfab97c7baa408c982ced3 100644 |
| --- a/chrome/installer/util/shell_util.cc |
| +++ b/chrome/installer/util/shell_util.cc |
| @@ -239,11 +239,10 @@ class RegistryEntry { |
| // <root hkey>\Software\Classes\<app_id>\.exe\shell @=open |
| entries->push_back(new RegistryEntry(model_id_shell, |
| - ShellUtil::kRegVerbOpen)); |
| + ShellUtil::kRegVerbOpen)); |
| const wchar_t* const verbs[] = { ShellUtil::kRegVerbOpen, |
| - ShellUtil::kRegVerbOpenNewWindow, |
| - ShellUtil::kRegVerbRun }; |
| + ShellUtil::kRegVerbOpenNewWindow }; |
| for (size_t i = 0; i < arraysize(verbs); ++i) { |
| string16 sub_path(model_id_shell); |
| sub_path.push_back(FilePath::kSeparators[0]); |
| @@ -1015,6 +1014,28 @@ base::win::ShortcutProperties GetShortcutPropertiesFromChromeShortcutProperties( |
| return shortcut_properties; |
| } |
| +// Cleans up an old verb (run) we used to register in |
| +// <root>\Software\Classes\Chrome<.suffix>\.exe\shell\run. |
| +// TODO (gab): This was fixed before the official release of Windows 8 and thus |
|
grt (UTC plus 2)
2012/10/16 01:43:03
"official release" -> "general availability"
gab
2012/10/16 14:59:50
Done.
|
| +// can safely be removed in February 2013. |
| +void RemoveRunVerbOnWindows8( |
| + BrowserDistribution* dist, |
| + const string16& chrome_exe) { |
| + HKEY root_key = DetermineShellIntegrationRoot( |
|
grt (UTC plus 2)
2012/10/16 01:43:03
wrap this function in:
if (IsChromeMetroSupported(
grt (UTC plus 2)
2012/10/16 01:43:03
is root_key always HKCU?
gab
2012/10/16 14:59:50
Done.
gab
2012/10/16 14:59:50
HKCU on user-level installs, HKLM on system-level
grt (UTC plus 2)
2012/10/16 15:31:13
Oh yeah. Good call.
|
| + InstallUtil::IsPerUserInstall(chrome_exe.c_str())); |
|
grt (UTC plus 2)
2012/10/16 01:43:03
store the value of IsPerUserInstall() and re-use o
gab
2012/10/16 14:59:50
Indeed! Done.
|
| + // There's no need to rollback, so forgo the usual work item lists and just |
| + // remove the key from the registry. |
| + string16 run_verb_key(ShellUtil::kRegClasses); |
| + run_verb_key.push_back(FilePath::kSeparators[0]); |
| + run_verb_key.append(ShellUtil::GetBrowserModelId( |
| + dist, InstallUtil::IsPerUserInstall(chrome_exe.c_str()))); |
| + run_verb_key.append(ShellUtil::kRegExePath); |
| + run_verb_key.append(ShellUtil::kRegShellPath); |
| + run_verb_key.push_back(FilePath::kSeparators[0]); |
| + run_verb_key.append(ShellUtil::kRegVerbRun); |
| + InstallUtil::DeleteRegistryKey(root_key, run_verb_key); |
| +} |
| + |
| } // namespace |
| const wchar_t* ShellUtil::kRegDefaultIcon = L"\\DefaultIcon"; |
| @@ -1519,6 +1540,9 @@ bool ShellUtil::RegisterChromeBrowser(BrowserDistribution* dist, |
| // TODO(grt): remove this on or after 2012-08-01; see impl for details. |
| RemoveBadWindows8RegistrationIfNeeded(dist, chrome_exe); |
| + // TODO(gab): remove this on or after 2013-02-01; see impl for details. |
| + RemoveRunVerbOnWindows8(dist, chrome_exe); |
| + |
| // Check if Chromium is already registered with this suffix. |
| if (IsChromeRegistered(dist, chrome_exe, suffix)) |
| return true; |