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) |