diff options
Diffstat (limited to 'chrome/installer/util/shell_util.cc')
-rw-r--r-- | chrome/installer/util/shell_util.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc index 23bdc5a..7353f64 100644 --- a/chrome/installer/util/shell_util.cc +++ b/chrome/installer/util/shell_util.cc @@ -13,6 +13,7 @@ #include "chrome/installer/util/shell_util.h" +#include "base/file_path.h" #include "base/file_util.h" #include "base/logging.h" #include "base/path_service.h" @@ -312,6 +313,11 @@ bool SetAccessDefaultRegEntries(HKEY root_key, delete (*itr); } + // Append the App Paths registry entries. Do this only if we are an admin, + // since they are always written to HKLM. + if (IsUserAnAdmin()) + ShellUtil::AddChromeAppPathWorkItems(chrome_exe, items.get()); + // Apply all the registry changes and if there is a problem, rollback. if (!items->Do()) { LOG(ERROR) << "Failed to add Chrome to Set Program Access and Defaults"; @@ -465,6 +471,29 @@ bool ShellUtil::GetQuickLaunchPath(bool system_level, std::wstring* path) { return true; } +void ShellUtil::AddChromeAppPathWorkItems( + const std::wstring& chrome_exe, WorkItemList* item_list) { + WorkItem* create_work_item = WorkItem::CreateCreateRegKeyWorkItem( + HKEY_LOCAL_MACHINE, installer_util::kAppPathsRegistryKey); + + item_list->AddWorkItem(create_work_item); + + WorkItem* set_default_value_work_item = + WorkItem::CreateSetRegValueWorkItem(HKEY_LOCAL_MACHINE, + installer_util::kAppPathsRegistryKey, + installer_util::kAppPathsRegistryDefaultName, + chrome_exe, true); + item_list->AddWorkItem(set_default_value_work_item); + + FilePath chrome_path(chrome_exe); + WorkItem* set_path_value_work_item = + WorkItem::CreateSetRegValueWorkItem(HKEY_LOCAL_MACHINE, + installer_util::kAppPathsRegistryKey, + installer_util::kAppPathsRegistryPathName, + chrome_path.DirName().value(), true); + item_list->AddWorkItem(set_path_value_work_item); +} + bool ShellUtil::CreateChromeDesktopShortcut(const std::wstring& chrome_exe, int shell_change, bool create_new) { |