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 6891fcdfe81c9d5ddc7495ccf77834d1dfe2c580..8bd98ce8d43aad227c0baf92b6834acd21544532 100644 |
| --- a/chrome/installer/util/shell_util.cc |
| +++ b/chrome/installer/util/shell_util.cc |
| @@ -1847,6 +1847,37 @@ bool ShellUtil::RemoveChromeShortcut( |
| return true; |
| } |
| +void ShellUtil::RemoveChromeTaskbarShortcuts(const string16& chrome_exe) { |
| + if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| + return; |
| + |
| + FilePath taskbar_pins_path; |
| + if (!PathService::Get(base::DIR_TASKBAR_PINS, &taskbar_pins_path) || |
| + !file_util::PathExists(taskbar_pins_path)) { |
| + LOG(ERROR) << "Couldn't find path to taskbar pins."; |
| + return; |
| + } |
| + |
| + file_util::FileEnumerator shortcuts_enum( |
| + taskbar_pins_path, false, |
| + file_util::FileEnumerator::FILES, FILE_PATH_LITERAL("*.lnk")); |
| + |
| + FilePath chrome_path(chrome_exe); |
| + InstallUtil::ProgramCompare chrome_compare(chrome_path); |
| + for (FilePath shortcut_path = shortcuts_enum.Next(); !shortcut_path.empty(); |
| + shortcut_path = shortcuts_enum.Next()) { |
| + FilePath read_target; |
| + if (!base::win::ResolveShortcut(shortcut_path, &read_target, NULL)) { |
| + LOG(ERROR) << "Couldn't resolve shortcut at " << shortcut_path.value(); |
|
brettw
2012/11/06 19:29:32
Can you please DLOG instead?
|
| + continue; |
| + } |
| + if (chrome_compare.Evaluate(read_target.value())) { |
| + // Unpin this shortcut if it points to |chrome_exe|. |
| + base::win::TaskbarUnpinShortcutLink(shortcut_path.value().c_str()); |
| + } |
| + } |
| +} |
| + |
| void ShellUtil::RemoveChromeStartScreenShortcuts(BrowserDistribution* dist, |
| const string16& chrome_exe) { |
| if (base::win::GetVersion() < base::win::VERSION_WIN8) |