Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(502)

Unified Diff: chrome/installer/setup/install_worker.cc

Issue 10665002: Implement installation of the Chrome App Host. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: A basic working app host installer/uninstaller. Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/installer/setup/install_worker.cc
diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc
index f7067c5fbe47e00ff74ba1933ee10e3f866477ad..6844f22a7cc1f6e68717c0cf873a645fb61d49f2 100644
--- a/chrome/installer/setup/install_worker.cc
+++ b/chrome/installer/setup/install_worker.cc
@@ -140,6 +140,7 @@ void AddUninstallShortcutWorkItems(const InstallerState& installer_state,
AppendUninstallCommandLineFlags(installer_state, product,
&uninstall_arguments);
+ // TODO(erikwright): What does this mean? Chrome Frame _is_ in Add/Remove, No?
tommi (sloooow) - chröme 2012/07/12 08:11:31 I think the comment is out of date and was probabl
grt (UTC plus 2) 2012/07/12 18:37:10 I think it refers to ready-mode, where Chrome Fram
erikwright (departed) 2012/07/16 20:13:11 Done.
// The Chrome uninstallation command serves as the master uninstall command
// for Chrome + all other products (i.e. Chrome Frame) that do not have an
// uninstall entry in the Add/Remove Programs dialog. We skip this processing
@@ -563,7 +564,6 @@ void AddDeleteUninstallShortcutsForMSIWorkItems(
// false.
bool AppendPostInstallTasks(const InstallerState& installer_state,
const FilePath& setup_path,
- const FilePath& new_chrome_exe,
const Version* current_version,
const Version& new_version,
const FilePath& temp_path,
@@ -572,6 +572,8 @@ bool AppendPostInstallTasks(const InstallerState& installer_state,
HKEY root = installer_state.root_key();
const Products& products = installer_state.products();
+ FilePath new_chrome_exe(
+ installer_state.target_path().Append(installer::kChromeNewExe));
// Append work items that will only be executed if this was an update.
// We update the 'opv' value with the current version that is active,
@@ -712,23 +714,17 @@ bool AppendPostInstallTasks(const InstallerState& installer_state,
return true;
}
-void AddInstallWorkItems(const InstallationState& original_state,
- const InstallerState& installer_state,
- const FilePath& setup_path,
- const FilePath& archive_path,
- const FilePath& src_path,
- const FilePath& temp_path,
- const Version& new_version,
- scoped_ptr<Version>* current_version,
- WorkItemList* install_list) {
- DCHECK(install_list);
-
+void AddChromeWorkItems(const InstallationState& original_state,
+ const InstallerState& installer_state,
+ const FilePath& setup_path,
+ const FilePath& archive_path,
+ const FilePath& src_path,
+ const FilePath& temp_path,
+ const Version& new_version,
+ scoped_ptr<Version>* current_version,
+ WorkItemList* install_list) {
const FilePath& target_path = installer_state.target_path();
- // A temp directory that work items need and the actual install directory.
- install_list->AddCreateDirWorkItem(temp_path);
- install_list->AddCreateDirWorkItem(target_path);
-
if (current_version != NULL && current_version->get() != NULL) {
// Delete the archive from an existing install to save some disk space. We
// make this an unconditional work item since there's no need to roll this
@@ -840,6 +836,48 @@ void AddInstallWorkItems(const InstallationState& original_state,
AddInstallerCopyTasks(installer_state, setup_path, archive_path, temp_path,
new_version, install_list);
+}
+
+void AddInstallWorkItems(const InstallationState& original_state,
+ const InstallerState& installer_state,
+ const FilePath& setup_path,
+ const FilePath& archive_path,
+ const FilePath& src_path,
+ const FilePath& temp_path,
+ const Version& new_version,
+ scoped_ptr<Version>* current_version,
+ WorkItemList* install_list) {
+ DCHECK(install_list);
+
+ const FilePath& target_path = installer_state.target_path();
+
+ // A temp directory that work items need and the actual install directory.
+ install_list->AddCreateDirWorkItem(temp_path);
+ install_list->AddCreateDirWorkItem(target_path);
+
+ if (installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER) ||
+ installer_state.FindProduct(BrowserDistribution::CHROME_FRAME) ||
+ installer_state.FindProduct(BrowserDistribution::CHROME_BINARIES)) {
+ AddChromeWorkItems(original_state,
+ installer_state,
+ setup_path,
+ archive_path,
+ src_path,
+ temp_path,
+ new_version,
+ current_version,
+ install_list);
+ }
+
+ if (installer_state.FindProduct(BrowserDistribution::CHROME_APP_HOST)) {
+ install_list->AddCopyTreeWorkItem(
+ src_path.Append(installer::kChromeAppHostExe).value(),
+ target_path.Append(installer::kChromeAppHostExe).value(),
+ temp_path.value(),
+ WorkItem::ALWAYS,
+ L"");
+ }
+
const HKEY root = installer_state.root_key();
// Only set "lang" for user-level installs since for system-level, the install
// language may not be related to a given user's runtime language.
@@ -882,7 +920,6 @@ void AddInstallWorkItems(const InstallationState& original_state,
// Append the tasks that run after the installation.
AppendPostInstallTasks(installer_state,
setup_path,
- new_chrome_exe,
current_version->get(),
new_version,
temp_path,
@@ -1308,18 +1345,18 @@ void AddQuickEnableWorkItems(const InstallerState& installer_state,
DCHECK(work_item_list);
const bool system_install = installer_state.system_install();
- bool have_multi_chrome = false;
+ bool have_chrome_binaries = false;
bool have_chrome_frame = false;
// STEP 1: Figure out the state of the machine before the operation.
const ProductState* product_state = NULL;
- // Is multi-install Chrome already on the machine?
+ // Is Chrome Binaries already on the machine?
tommi (sloooow) - chröme 2012/07/12 08:11:31 s/Is/Are the
erikwright (departed) 2012/07/16 20:13:11 Done.
product_state =
machine_state.GetProductState(system_install,
- BrowserDistribution::CHROME_BROWSER);
+ BrowserDistribution::CHROME_BINARIES);
if (product_state != NULL && product_state->is_multi_install())
- have_multi_chrome = true;
+ have_chrome_binaries = true;
// Is Chrome Frame !ready-mode already on the machine?
product_state =
@@ -1336,9 +1373,9 @@ void AddQuickEnableWorkItems(const InstallerState& installer_state,
if (installer_state.operation() == InstallerState::UNINSTALL) {
// Forget about multi-install Chrome if it is being uninstalled.
product =
- installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER);
+ installer_state.FindProduct(BrowserDistribution::CHROME_BINARIES);
if (product != NULL && installer_state.is_multi_install())
- have_multi_chrome = false;
+ have_chrome_binaries = false;
// Forget about Chrome Frame if it is being uninstalled. Note that we don't
// bother to check !HasOption(kOptionReadyMode) since have_chrome_frame
@@ -1349,11 +1386,11 @@ void AddQuickEnableWorkItems(const InstallerState& installer_state,
if (installer_state.FindProduct(BrowserDistribution::CHROME_FRAME) != NULL)
have_chrome_frame = false;
} else {
- // Check if we're installing multi-install Chrome.
+ // Check if we're installing Chrome Binaries
product =
- installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER);
+ installer_state.FindProduct(BrowserDistribution::CHROME_BINARIES);
if (product != NULL && installer_state.is_multi_install())
- have_multi_chrome = true;
+ have_chrome_binaries = true;
// Check if we're installing Chrome Frame !ready-mode.
product = installer_state.FindProduct(BrowserDistribution::CHROME_FRAME);
@@ -1375,7 +1412,7 @@ void AddQuickEnableWorkItems(const InstallerState& installer_state,
// multi-install Chrome isn't installed since we don't want them left
// behind in any case.
operation = REMOVE_COMMAND;
- } else if (have_multi_chrome) {
+ } else if (have_chrome_binaries) {
// Chrome Frame isn't (to be) installed or is (to be) installed only in
// ready-mode, while multi-install Chrome is (to be) installed. Add the
// quick-enable-cf command to the binaries.
@@ -1383,17 +1420,17 @@ void AddQuickEnableWorkItems(const InstallerState& installer_state,
// The path to setup.exe contains the version of the Chrome binaries, so it
// takes a little work to get it right.
if (installer_state.operation() == InstallerState::UNINSTALL) {
- // Chrome Frame is being uninstalled. Use the path to the currently
- // installed Chrome setup.exe.
+ // One or more products are being uninstalled, but not the binaries. Use
+ // the path to the currently installed Chrome setup.exe.
product_state =
machine_state.GetProductState(system_install,
- BrowserDistribution::CHROME_BROWSER);
+ BrowserDistribution::CHROME_BINARIES);
DCHECK(product_state);
binaries_setup_path = product_state->uninstall_command().GetProgram();
} else {
- // Chrome is being installed, updated, or otherwise being operated on.
+ // Chrome Binaries are being installed, updated, or otherwise operated on.
// Use the path to the given |setup_path| in the normal location of
- // multi-install Chrome of the given |version|.
+ // multi-install Chrome Binaries of the given |version|.
DCHECK(installer_state.is_multi_install());
binaries_setup_path =
installer_state.GetInstallerDirectory(*new_version).Append(

Powered by Google App Engine
This is Rietveld 408576698