| Index: chrome/installer/util/shell_util.cc
|
| ===================================================================
|
| --- chrome/installer/util/shell_util.cc (revision 8822)
|
| +++ chrome/installer/util/shell_util.cc (working copy)
|
| @@ -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"
|
| @@ -291,6 +292,11 @@
|
| 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";
|
| @@ -436,6 +442,29 @@
|
| 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) {
|
|
|