Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This file contains the definitions of the installer functions that build | 5 // This file contains the definitions of the installer functions that build |
| 6 // the WorkItemList used to install the application. | 6 // the WorkItemList used to install the application. |
| 7 | 7 |
| 8 #include "chrome/installer/setup/install_worker.h" | 8 #include "chrome/installer/setup/install_worker.h" |
| 9 | 9 |
| 10 #include <oaidl.h> | 10 #include <oaidl.h> |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 209 DCHECK(app); | 209 DCHECK(app); |
| 210 DCHECK(command_with_parameter); | 210 DCHECK(command_with_parameter); |
| 211 DCHECK(work_item_list); | 211 DCHECK(work_item_list); |
| 212 | 212 |
| 213 base::string16 full_cmd_key( | 213 base::string16 full_cmd_key( |
| 214 GetRegCommandKey(product.distribution(), command_key)); | 214 GetRegCommandKey(product.distribution(), command_key)); |
| 215 | 215 |
| 216 if (installer_state.operation() == InstallerState::UNINSTALL) { | 216 if (installer_state.operation() == InstallerState::UNINSTALL) { |
| 217 work_item_list->AddDeleteRegKeyWorkItem(installer_state.root_key(), | 217 work_item_list->AddDeleteRegKeyWorkItem(installer_state.root_key(), |
| 218 full_cmd_key, | 218 full_cmd_key, |
| 219 WorkItem::kWow64Default) | 219 KEY_WOW64_32KEY) |
| 220 ->set_log_message("removing " + base::UTF16ToASCII(command_key) + | 220 ->set_log_message("removing " + base::UTF16ToASCII(command_key) + |
| 221 " command"); | 221 " command"); |
| 222 } else { | 222 } else { |
| 223 CommandLine cmd_line(installer_state.target_path().Append(app)); | 223 CommandLine cmd_line(installer_state.target_path().Append(app)); |
| 224 cmd_line.AppendSwitchASCII(command_with_parameter, "%1"); | 224 cmd_line.AppendSwitchASCII(command_with_parameter, "%1"); |
| 225 | 225 |
| 226 AppCommand cmd(cmd_line.GetCommandLineString()); | 226 AppCommand cmd(cmd_line.GetCommandLineString()); |
| 227 cmd.set_sends_pings(true); | 227 cmd.set_sends_pings(true); |
| 228 cmd.set_is_web_accessible(true); | 228 cmd.set_is_web_accessible(true); |
| 229 cmd.set_is_run_as_user(true); | 229 cmd.set_is_run_as_user(true); |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 435 const base::FilePath& temp_path, | 435 const base::FilePath& temp_path, |
| 436 WorkItemList* work_item_list) { | 436 WorkItemList* work_item_list) { |
| 437 DCHECK(installer_state.is_msi()) | 437 DCHECK(installer_state.is_msi()) |
| 438 << "This must only be called for MSI installations!"; | 438 << "This must only be called for MSI installations!"; |
| 439 | 439 |
| 440 // First attempt to delete the old installation's ARP dialog entry. | 440 // First attempt to delete the old installation's ARP dialog entry. |
| 441 HKEY reg_root = installer_state.root_key(); | 441 HKEY reg_root = installer_state.root_key(); |
| 442 base::string16 uninstall_reg(product.distribution()->GetUninstallRegPath()); | 442 base::string16 uninstall_reg(product.distribution()->GetUninstallRegPath()); |
| 443 | 443 |
| 444 WorkItem* delete_reg_key = work_item_list->AddDeleteRegKeyWorkItem( | 444 WorkItem* delete_reg_key = work_item_list->AddDeleteRegKeyWorkItem( |
| 445 reg_root, uninstall_reg, WorkItem::kWow64Default); | 445 reg_root, uninstall_reg, KEY_WOW64_32KEY); |
|
grt (UTC plus 2)
2014/05/27 16:42:08
as with my comment on line 734, i think this shoul
| |
| 446 delete_reg_key->set_ignore_failure(true); | 446 delete_reg_key->set_ignore_failure(true); |
| 447 | 447 |
| 448 // Then attempt to delete the old installation's start menu shortcut. | 448 // Then attempt to delete the old installation's start menu shortcut. |
| 449 base::FilePath uninstall_link; | 449 base::FilePath uninstall_link; |
| 450 if (installer_state.system_install()) { | 450 if (installer_state.system_install()) { |
| 451 PathService::Get(base::DIR_COMMON_START_MENU, &uninstall_link); | 451 PathService::Get(base::DIR_COMMON_START_MENU, &uninstall_link); |
| 452 } else { | 452 } else { |
| 453 PathService::Get(base::DIR_START_MENU, &uninstall_link); | 453 PathService::Get(base::DIR_START_MENU, &uninstall_link); |
| 454 } | 454 } |
| 455 | 455 |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 604 | 604 |
| 605 return true; | 605 return true; |
| 606 } | 606 } |
| 607 | 607 |
| 608 void AddUninstallDelegateExecuteWorkItems( | 608 void AddUninstallDelegateExecuteWorkItems( |
| 609 HKEY root, | 609 HKEY root, |
| 610 const base::string16& delegate_execute_path, | 610 const base::string16& delegate_execute_path, |
| 611 WorkItemList* list) { | 611 WorkItemList* list) { |
| 612 VLOG(1) << "Adding unregistration items for DelegateExecute verb handler in " | 612 VLOG(1) << "Adding unregistration items for DelegateExecute verb handler in " |
| 613 << root; | 613 << root; |
| 614 // Delete both 64 and 32 keys to clean up from previous installs which placed | |
| 615 // the delegate registration key in the wrong hive. | |
|
grt (UTC plus 2)
2014/05/27 16:42:08
"in the wrong hive" makes it sound like previous i
Will Harris
2014/05/27 19:25:10
Done.
| |
| 616 // See http://crbug.com/348626. | |
| 614 list->AddDeleteRegKeyWorkItem(root, | 617 list->AddDeleteRegKeyWorkItem(root, |
| 615 delegate_execute_path, | 618 delegate_execute_path, |
| 616 WorkItem::kWow64Default); | 619 KEY_WOW64_32KEY); |
| 620 | |
| 621 list->AddDeleteRegKeyWorkItem(root, | |
| 622 delegate_execute_path, | |
| 623 KEY_WOW64_64KEY); | |
| 624 | |
| 617 | 625 |
| 618 // In the past, the ICommandExecuteImpl interface and a TypeLib were both | 626 // In the past, the ICommandExecuteImpl interface and a TypeLib were both |
| 619 // registered. Remove these since this operation may be updating a machine | 627 // registered. Remove these since this operation may be updating a machine |
| 620 // that had the old registrations. | 628 // that had the old registrations. |
| 621 list->AddDeleteRegKeyWorkItem(root, | 629 list->AddDeleteRegKeyWorkItem(root, |
| 622 L"Software\\Classes\\Interface\\" | 630 L"Software\\Classes\\Interface\\" |
| 623 L"{0BA0D4E9-2259-4963-B9AE-A839F7CB7544}", | 631 L"{0BA0D4E9-2259-4963-B9AE-A839F7CB7544}", |
| 624 WorkItem::kWow64Default); | 632 WorkItem::kWow64Default); |
|
grt (UTC plus 2)
2014/05/27 16:42:08
this and line 640 should both be KEY_WOW64_32KEY s
Will Harris
2014/05/27 19:25:10
Done.
| |
| 625 list->AddDeleteRegKeyWorkItem(root, | 633 list->AddDeleteRegKeyWorkItem(root, |
| 626 L"Software\\Classes\\TypeLib\\" | 634 L"Software\\Classes\\TypeLib\\" |
| 627 #if defined(GOOGLE_CHROME_BUILD) | 635 #if defined(GOOGLE_CHROME_BUILD) |
| 628 L"{4E805ED8-EBA0-4601-9681-12815A56EBFD}", | 636 L"{4E805ED8-EBA0-4601-9681-12815A56EBFD}", |
| 629 #else | 637 #else |
| 630 L"{7779FB70-B399-454A-AA1A-BAA850032B10}", | 638 L"{7779FB70-B399-454A-AA1A-BAA850032B10}", |
| 631 #endif | 639 #endif |
| 632 WorkItem::kWow64Default); | 640 WorkItem::kWow64Default); |
| 633 } | 641 } |
| 634 | 642 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 692 base::FilePath installer_path( | 700 base::FilePath installer_path( |
| 693 installer_state.GetInstallerDirectory(new_version)); | 701 installer_state.GetInstallerDirectory(new_version)); |
| 694 installer_path = installer_path.Append(setup_path.BaseName()); | 702 installer_path = installer_path.Append(setup_path.BaseName()); |
| 695 | 703 |
| 696 CommandLine uninstall_arguments(CommandLine::NO_PROGRAM); | 704 CommandLine uninstall_arguments(CommandLine::NO_PROGRAM); |
| 697 AppendUninstallCommandLineFlags(installer_state, product, | 705 AppendUninstallCommandLineFlags(installer_state, product, |
| 698 &uninstall_arguments); | 706 &uninstall_arguments); |
| 699 | 707 |
| 700 base::string16 update_state_key(browser_dist->GetStateKey()); | 708 base::string16 update_state_key(browser_dist->GetStateKey()); |
| 701 install_list->AddCreateRegKeyWorkItem( | 709 install_list->AddCreateRegKeyWorkItem( |
| 702 reg_root, update_state_key, WorkItem::kWow64Default); | 710 reg_root, update_state_key, KEY_WOW64_32KEY); |
| 703 install_list->AddSetRegValueWorkItem(reg_root, | 711 install_list->AddSetRegValueWorkItem(reg_root, |
| 704 update_state_key, | 712 update_state_key, |
| 705 WorkItem::kWow64Default, | 713 KEY_WOW64_32KEY, |
| 706 installer::kUninstallStringField, | 714 installer::kUninstallStringField, |
| 707 installer_path.value(), | 715 installer_path.value(), |
| 708 true); | 716 true); |
| 709 install_list->AddSetRegValueWorkItem( | 717 install_list->AddSetRegValueWorkItem( |
| 710 reg_root, | 718 reg_root, |
| 711 update_state_key, | 719 update_state_key, |
| 712 WorkItem::kWow64Default, | 720 KEY_WOW64_32KEY, |
| 713 installer::kUninstallArgumentsField, | 721 installer::kUninstallArgumentsField, |
| 714 uninstall_arguments.GetCommandLineString(), | 722 uninstall_arguments.GetCommandLineString(), |
| 715 true); | 723 true); |
| 716 | 724 |
| 717 // MSI installations will manage their own uninstall shortcuts. | 725 // MSI installations will manage their own uninstall shortcuts. |
| 718 if (!installer_state.is_msi() && product.ShouldCreateUninstallEntry()) { | 726 if (!installer_state.is_msi() && product.ShouldCreateUninstallEntry()) { |
| 719 // We need to quote the command line for the Add/Remove Programs dialog. | 727 // We need to quote the command line for the Add/Remove Programs dialog. |
| 720 CommandLine quoted_uninstall_cmd(installer_path); | 728 CommandLine quoted_uninstall_cmd(installer_path); |
| 721 DCHECK_EQ(quoted_uninstall_cmd.GetCommandLineString()[0], '"'); | 729 DCHECK_EQ(quoted_uninstall_cmd.GetCommandLineString()[0], '"'); |
| 722 quoted_uninstall_cmd.AppendArguments(uninstall_arguments, false); | 730 quoted_uninstall_cmd.AppendArguments(uninstall_arguments, false); |
| 723 | 731 |
| 724 base::string16 uninstall_reg = browser_dist->GetUninstallRegPath(); | 732 base::string16 uninstall_reg = browser_dist->GetUninstallRegPath(); |
| 725 install_list->AddCreateRegKeyWorkItem( | 733 install_list->AddCreateRegKeyWorkItem( |
| 726 reg_root, uninstall_reg, WorkItem::kWow64Default); | 734 reg_root, uninstall_reg, KEY_WOW64_32KEY); |
|
grt (UTC plus 2)
2014/05/27 16:42:08
why force the add/remove control panel data into t
Will Harris
2014/05/27 19:25:10
as discussed, while we're leaving Chrome in C:\Pro
grt (UTC plus 2)
2014/05/27 22:06:19
SGTM
| |
| 727 install_list->AddSetRegValueWorkItem(reg_root, | 735 install_list->AddSetRegValueWorkItem(reg_root, |
| 728 uninstall_reg, | 736 uninstall_reg, |
| 729 WorkItem::kWow64Default, | 737 KEY_WOW64_32KEY, |
| 730 installer::kUninstallDisplayNameField, | 738 installer::kUninstallDisplayNameField, |
| 731 browser_dist->GetDisplayName(), | 739 browser_dist->GetDisplayName(), |
| 732 true); | 740 true); |
| 733 install_list->AddSetRegValueWorkItem( | 741 install_list->AddSetRegValueWorkItem( |
| 734 reg_root, | 742 reg_root, |
| 735 uninstall_reg, | 743 uninstall_reg, |
| 736 WorkItem::kWow64Default, | 744 KEY_WOW64_32KEY, |
| 737 installer::kUninstallStringField, | 745 installer::kUninstallStringField, |
| 738 quoted_uninstall_cmd.GetCommandLineString(), | 746 quoted_uninstall_cmd.GetCommandLineString(), |
| 739 true); | 747 true); |
| 740 install_list->AddSetRegValueWorkItem(reg_root, | 748 install_list->AddSetRegValueWorkItem(reg_root, |
| 741 uninstall_reg, | 749 uninstall_reg, |
| 742 WorkItem::kWow64Default, | 750 KEY_WOW64_32KEY, |
| 743 L"InstallLocation", | 751 L"InstallLocation", |
| 744 install_path.value(), | 752 install_path.value(), |
| 745 true); | 753 true); |
| 746 | 754 |
| 747 BrowserDistribution* dist = product.distribution(); | 755 BrowserDistribution* dist = product.distribution(); |
| 748 base::string16 chrome_icon = ShellUtil::FormatIconLocation( | 756 base::string16 chrome_icon = ShellUtil::FormatIconLocation( |
| 749 install_path.Append(dist->GetIconFilename()).value(), | 757 install_path.Append(dist->GetIconFilename()).value(), |
| 750 dist->GetIconIndex(BrowserDistribution::SHORTCUT_CHROME)); | 758 dist->GetIconIndex(BrowserDistribution::SHORTCUT_CHROME)); |
| 751 install_list->AddSetRegValueWorkItem(reg_root, | 759 install_list->AddSetRegValueWorkItem(reg_root, |
| 752 uninstall_reg, | 760 uninstall_reg, |
| 753 WorkItem::kWow64Default, | 761 KEY_WOW64_32KEY, |
| 754 L"DisplayIcon", | 762 L"DisplayIcon", |
| 755 chrome_icon, | 763 chrome_icon, |
| 756 true); | 764 true); |
| 757 install_list->AddSetRegValueWorkItem(reg_root, | 765 install_list->AddSetRegValueWorkItem(reg_root, |
| 758 uninstall_reg, | 766 uninstall_reg, |
| 759 WorkItem::kWow64Default, | 767 KEY_WOW64_32KEY, |
| 760 L"NoModify", | 768 L"NoModify", |
| 761 static_cast<DWORD>(1), | 769 static_cast<DWORD>(1), |
| 762 true); | 770 true); |
| 763 install_list->AddSetRegValueWorkItem(reg_root, | 771 install_list->AddSetRegValueWorkItem(reg_root, |
| 764 uninstall_reg, | 772 uninstall_reg, |
| 765 WorkItem::kWow64Default, | 773 KEY_WOW64_32KEY, |
| 766 L"NoRepair", | 774 L"NoRepair", |
| 767 static_cast<DWORD>(1), | 775 static_cast<DWORD>(1), |
| 768 true); | 776 true); |
| 769 | 777 |
| 770 install_list->AddSetRegValueWorkItem(reg_root, | 778 install_list->AddSetRegValueWorkItem(reg_root, |
| 771 uninstall_reg, | 779 uninstall_reg, |
| 772 WorkItem::kWow64Default, | 780 KEY_WOW64_32KEY, |
| 773 L"Publisher", | 781 L"Publisher", |
| 774 browser_dist->GetPublisherName(), | 782 browser_dist->GetPublisherName(), |
| 775 true); | 783 true); |
| 776 install_list->AddSetRegValueWorkItem(reg_root, | 784 install_list->AddSetRegValueWorkItem(reg_root, |
| 777 uninstall_reg, | 785 uninstall_reg, |
| 778 WorkItem::kWow64Default, | 786 KEY_WOW64_32KEY, |
| 779 L"Version", | 787 L"Version", |
| 780 ASCIIToWide(new_version.GetString()), | 788 ASCIIToWide(new_version.GetString()), |
| 781 true); | 789 true); |
| 782 install_list->AddSetRegValueWorkItem(reg_root, | 790 install_list->AddSetRegValueWorkItem(reg_root, |
| 783 uninstall_reg, | 791 uninstall_reg, |
| 784 WorkItem::kWow64Default, | 792 KEY_WOW64_32KEY, |
| 785 L"DisplayVersion", | 793 L"DisplayVersion", |
| 786 ASCIIToWide(new_version.GetString()), | 794 ASCIIToWide(new_version.GetString()), |
| 787 true); | 795 true); |
| 788 install_list->AddSetRegValueWorkItem(reg_root, | 796 install_list->AddSetRegValueWorkItem(reg_root, |
| 789 uninstall_reg, | 797 uninstall_reg, |
| 790 WorkItem::kWow64Default, | 798 KEY_WOW64_32KEY, |
| 791 L"InstallDate", | 799 L"InstallDate", |
| 792 InstallUtil::GetCurrentDate(), | 800 InstallUtil::GetCurrentDate(), |
| 793 false); | 801 false); |
|
grt (UTC plus 2)
2014/05/27 16:42:08
it'd be nice to preserve the InstallDate when migr
Will Harris
2014/05/27 19:25:10
pretty sure this code does preserve, since it's on
grt (UTC plus 2)
2014/05/27 22:06:19
i was referring to the (future) case where the uni
Will Harris
2014/05/27 22:29:28
Put a TODO so I don't forget to do this.
| |
| 794 | 802 |
| 795 const std::vector<uint16>& version_components = new_version.components(); | 803 const std::vector<uint16>& version_components = new_version.components(); |
| 796 if (version_components.size() == 4) { | 804 if (version_components.size() == 4) { |
| 797 // Our version should be in major.minor.build.rev. | 805 // Our version should be in major.minor.build.rev. |
| 798 install_list->AddSetRegValueWorkItem( | 806 install_list->AddSetRegValueWorkItem( |
| 799 reg_root, | 807 reg_root, |
| 800 uninstall_reg, | 808 uninstall_reg, |
| 801 WorkItem::kWow64Default, | 809 KEY_WOW64_32KEY, |
| 802 L"VersionMajor", | 810 L"VersionMajor", |
| 803 static_cast<DWORD>(version_components[2]), | 811 static_cast<DWORD>(version_components[2]), |
| 804 true); | 812 true); |
| 805 install_list->AddSetRegValueWorkItem( | 813 install_list->AddSetRegValueWorkItem( |
| 806 reg_root, | 814 reg_root, |
| 807 uninstall_reg, | 815 uninstall_reg, |
| 808 WorkItem::kWow64Default, | 816 KEY_WOW64_32KEY, |
| 809 L"VersionMinor", | 817 L"VersionMinor", |
| 810 static_cast<DWORD>(version_components[3]), | 818 static_cast<DWORD>(version_components[3]), |
| 811 true); | 819 true); |
| 812 } | 820 } |
| 813 } | 821 } |
| 814 } | 822 } |
| 815 | 823 |
| 816 // Create Version key for a product (if not already present) and sets the new | 824 // Create Version key for a product (if not already present) and sets the new |
| 817 // product version as the last step. | 825 // product version as the last step. |
| 818 void AddVersionKeyWorkItems(HKEY root, | 826 void AddVersionKeyWorkItems(HKEY root, |
| 819 BrowserDistribution* dist, | 827 BrowserDistribution* dist, |
| 820 const Version& new_version, | 828 const Version& new_version, |
| 821 bool add_language_identifier, | 829 bool add_language_identifier, |
| 822 WorkItemList* list) { | 830 WorkItemList* list) { |
| 823 // Create Version key for each distribution (if not already present) and set | 831 // Create Version key for each distribution (if not already present) and set |
| 824 // the new product version as the last step. | 832 // the new product version as the last step. |
| 825 base::string16 version_key(dist->GetVersionKey()); | 833 base::string16 version_key(dist->GetVersionKey()); |
| 826 list->AddCreateRegKeyWorkItem(root, version_key, WorkItem::kWow64Default); | 834 list->AddCreateRegKeyWorkItem(root, version_key, KEY_WOW64_32KEY); |
| 827 | 835 |
| 828 base::string16 product_name(dist->GetDisplayName()); | 836 base::string16 product_name(dist->GetDisplayName()); |
| 829 list->AddSetRegValueWorkItem(root, | 837 list->AddSetRegValueWorkItem(root, |
| 830 version_key, | 838 version_key, |
| 831 WorkItem::kWow64Default, | 839 KEY_WOW64_32KEY, |
| 832 google_update::kRegNameField, | 840 google_update::kRegNameField, |
| 833 product_name, | 841 product_name, |
| 834 true); // overwrite name also | 842 true); // overwrite name also |
| 835 list->AddSetRegValueWorkItem(root, | 843 list->AddSetRegValueWorkItem(root, |
| 836 version_key, | 844 version_key, |
| 837 WorkItem::kWow64Default, | 845 KEY_WOW64_32KEY, |
| 838 google_update::kRegOopcrashesField, | 846 google_update::kRegOopcrashesField, |
| 839 static_cast<DWORD>(1), | 847 static_cast<DWORD>(1), |
| 840 false); // set during first install | 848 false); // set during first install |
| 841 if (add_language_identifier) { | 849 if (add_language_identifier) { |
| 842 // Write the language identifier of the current translation. Omaha's set of | 850 // Write the language identifier of the current translation. Omaha's set of |
| 843 // languages is a superset of Chrome's set of translations with this one | 851 // languages is a superset of Chrome's set of translations with this one |
| 844 // exception: what Chrome calls "en-us", Omaha calls "en". sigh. | 852 // exception: what Chrome calls "en-us", Omaha calls "en". sigh. |
| 845 base::string16 language(GetCurrentTranslation()); | 853 base::string16 language(GetCurrentTranslation()); |
| 846 if (LowerCaseEqualsASCII(language, "en-us")) | 854 if (LowerCaseEqualsASCII(language, "en-us")) |
| 847 language.resize(2); | 855 language.resize(2); |
| 848 list->AddSetRegValueWorkItem(root, | 856 list->AddSetRegValueWorkItem(root, |
| 849 version_key, | 857 version_key, |
| 850 WorkItem::kWow64Default, | 858 KEY_WOW64_32KEY, |
| 851 google_update::kRegLangField, | 859 google_update::kRegLangField, |
| 852 language, | 860 language, |
| 853 false); // do not overwrite language | 861 false); // do not overwrite language |
| 854 } | 862 } |
| 855 list->AddSetRegValueWorkItem(root, | 863 list->AddSetRegValueWorkItem(root, |
| 856 version_key, | 864 version_key, |
| 857 WorkItem::kWow64Default, | 865 KEY_WOW64_32KEY, |
| 858 google_update::kRegVersionField, | 866 google_update::kRegVersionField, |
| 859 ASCIIToWide(new_version.GetString()), | 867 ASCIIToWide(new_version.GetString()), |
| 860 true); // overwrite version | 868 true); // overwrite version |
| 861 } | 869 } |
| 862 | 870 |
| 863 // Mirror oeminstall the first time anything is installed multi. There is no | 871 // Mirror oeminstall the first time anything is installed multi. There is no |
| 864 // need to update the value on future install/update runs since this value never | 872 // need to update the value on future install/update runs since this value never |
| 865 // changes. Note that the value is removed by Google Update after EULA | 873 // changes. Note that the value is removed by Google Update after EULA |
| 866 // acceptance is processed. | 874 // acceptance is processed. |
| 867 void AddOemInstallWorkItems(const InstallationState& original_state, | 875 void AddOemInstallWorkItems(const InstallationState& original_state, |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 890 } | 898 } |
| 891 const ProductState* source_product = | 899 const ProductState* source_product = |
| 892 original_state.GetNonVersionedProductState(system_install, source_type); | 900 original_state.GetNonVersionedProductState(system_install, source_type); |
| 893 | 901 |
| 894 base::string16 oem_install; | 902 base::string16 oem_install; |
| 895 if (source_product->GetOemInstall(&oem_install)) { | 903 if (source_product->GetOemInstall(&oem_install)) { |
| 896 VLOG(1) << "Mirroring oeminstall=\"" << oem_install << "\" from " | 904 VLOG(1) << "Mirroring oeminstall=\"" << oem_install << "\" from " |
| 897 << BrowserDistribution::GetSpecificDistribution(source_type)-> | 905 << BrowserDistribution::GetSpecificDistribution(source_type)-> |
| 898 GetDisplayName(); | 906 GetDisplayName(); |
| 899 install_list->AddCreateRegKeyWorkItem( | 907 install_list->AddCreateRegKeyWorkItem( |
| 900 root_key, multi_key, WorkItem::kWow64Default); | 908 root_key, multi_key, KEY_WOW64_32KEY); |
| 901 // Always overwrite an old value. | 909 // Always overwrite an old value. |
| 902 install_list->AddSetRegValueWorkItem(root_key, | 910 install_list->AddSetRegValueWorkItem(root_key, |
| 903 multi_key, | 911 multi_key, |
| 904 WorkItem::kWow64Default, | 912 KEY_WOW64_32KEY, |
| 905 google_update::kRegOemInstallField, | 913 google_update::kRegOemInstallField, |
| 906 oem_install, | 914 oem_install, |
| 907 true); | 915 true); |
| 908 } else { | 916 } else { |
| 909 // Clear any old value. | 917 // Clear any old value. |
| 910 install_list->AddDeleteRegValueWorkItem( | 918 install_list->AddDeleteRegValueWorkItem( |
| 911 root_key, | 919 root_key, |
| 912 multi_key, | 920 multi_key, |
| 913 WorkItem::kWow64Default, | 921 KEY_WOW64_32KEY, |
| 914 google_update::kRegOemInstallField); | 922 google_update::kRegOemInstallField); |
| 915 } | 923 } |
| 916 } | 924 } |
| 917 } | 925 } |
| 918 | 926 |
| 919 // Mirror eulaaccepted the first time anything is installed multi. There is no | 927 // Mirror eulaaccepted the first time anything is installed multi. There is no |
| 920 // need to update the value on future install/update runs since | 928 // need to update the value on future install/update runs since |
| 921 // GoogleUpdateSettings::SetEULAConsent will modify the value for both the | 929 // GoogleUpdateSettings::SetEULAConsent will modify the value for both the |
| 922 // relevant product and for the binaries. | 930 // relevant product and for the binaries. |
| 923 void AddEulaAcceptedWorkItems(const InstallationState& original_state, | 931 void AddEulaAcceptedWorkItems(const InstallationState& original_state, |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 952 eula_accepted = dword_value; | 960 eula_accepted = dword_value; |
| 953 product_type = this_type; | 961 product_type = this_type; |
| 954 } | 962 } |
| 955 } | 963 } |
| 956 | 964 |
| 957 if (have_eula_accepted) { | 965 if (have_eula_accepted) { |
| 958 VLOG(1) << "Mirroring eulaaccepted=" << eula_accepted << " from " | 966 VLOG(1) << "Mirroring eulaaccepted=" << eula_accepted << " from " |
| 959 << BrowserDistribution::GetSpecificDistribution(product_type)-> | 967 << BrowserDistribution::GetSpecificDistribution(product_type)-> |
| 960 GetDisplayName(); | 968 GetDisplayName(); |
| 961 install_list->AddCreateRegKeyWorkItem( | 969 install_list->AddCreateRegKeyWorkItem( |
| 962 root_key, multi_key, WorkItem::kWow64Default); | 970 root_key, multi_key, KEY_WOW64_32KEY); |
| 963 install_list->AddSetRegValueWorkItem(root_key, | 971 install_list->AddSetRegValueWorkItem(root_key, |
| 964 multi_key, | 972 multi_key, |
| 965 WorkItem::kWow64Default, | 973 KEY_WOW64_32KEY, |
| 966 google_update::kRegEULAAceptedField, | 974 google_update::kRegEULAAceptedField, |
| 967 eula_accepted, | 975 eula_accepted, |
| 968 true); | 976 true); |
| 969 } else { | 977 } else { |
| 970 // Clear any old value. | 978 // Clear any old value. |
| 971 install_list->AddDeleteRegValueWorkItem( | 979 install_list->AddDeleteRegValueWorkItem( |
| 972 root_key, | 980 root_key, |
| 973 multi_key, | 981 multi_key, |
| 974 WorkItem::kWow64Default, | 982 KEY_WOW64_32KEY, |
| 975 google_update::kRegEULAAceptedField); | 983 google_update::kRegEULAAceptedField); |
| 976 } | 984 } |
| 977 } | 985 } |
| 978 } | 986 } |
| 979 | 987 |
| 980 // Adds work items that make registry adjustments for Google Update. | 988 // Adds work items that make registry adjustments for Google Update. |
| 981 void AddGoogleUpdateWorkItems(const InstallationState& original_state, | 989 void AddGoogleUpdateWorkItems(const InstallationState& original_state, |
| 982 const InstallerState& installer_state, | 990 const InstallerState& installer_state, |
| 983 WorkItemList* install_list) { | 991 WorkItemList* install_list) { |
| 984 // Is a multi-install product being installed or over-installed? | 992 // Is a multi-install product being installed or over-installed? |
| 985 if (installer_state.operation() != InstallerState::MULTI_INSTALL && | 993 if (installer_state.operation() != InstallerState::MULTI_INSTALL && |
| 986 installer_state.operation() != InstallerState::MULTI_UPDATE) { | 994 installer_state.operation() != InstallerState::MULTI_UPDATE) { |
| 987 VLOG(1) << "AddGoogleUpdateWorkItems noop: " << installer_state.operation(); | 995 VLOG(1) << "AddGoogleUpdateWorkItems noop: " << installer_state.operation(); |
| 988 return; | 996 return; |
| 989 } | 997 } |
| 990 | 998 |
| 991 const bool system_install = installer_state.system_install(); | 999 const bool system_install = installer_state.system_install(); |
| 992 const HKEY root_key = installer_state.root_key(); | 1000 const HKEY root_key = installer_state.root_key(); |
| 993 base::string16 multi_key( | 1001 base::string16 multi_key( |
| 994 installer_state.multi_package_binaries_distribution()->GetStateKey()); | 1002 installer_state.multi_package_binaries_distribution()->GetStateKey()); |
| 995 | 1003 |
| 996 // For system-level installs, make sure the ClientStateMedium key for the | 1004 // For system-level installs, make sure the ClientStateMedium key for the |
| 997 // binaries exists. | 1005 // binaries exists. |
| 998 if (system_install) { | 1006 if (system_install) { |
| 999 install_list->AddCreateRegKeyWorkItem( | 1007 install_list->AddCreateRegKeyWorkItem( |
| 1000 root_key, | 1008 root_key, |
| 1001 installer_state.multi_package_binaries_distribution() | 1009 installer_state.multi_package_binaries_distribution() |
| 1002 ->GetStateMediumKey().c_str(), | 1010 ->GetStateMediumKey().c_str(), |
| 1003 WorkItem::kWow64Default); | 1011 KEY_WOW64_32KEY); |
| 1004 } | 1012 } |
| 1005 | 1013 |
| 1006 // Creating the ClientState key for binaries, if we're migrating to multi then | 1014 // Creating the ClientState key for binaries, if we're migrating to multi then |
| 1007 // copy over Chrome's brand code if it has one. | 1015 // copy over Chrome's brand code if it has one. |
| 1008 if (installer_state.state_type() != BrowserDistribution::CHROME_BINARIES) { | 1016 if (installer_state.state_type() != BrowserDistribution::CHROME_BINARIES) { |
| 1009 const ProductState* chrome_product_state = | 1017 const ProductState* chrome_product_state = |
| 1010 original_state.GetNonVersionedProductState( | 1018 original_state.GetNonVersionedProductState( |
| 1011 system_install, BrowserDistribution::CHROME_BROWSER); | 1019 system_install, BrowserDistribution::CHROME_BROWSER); |
| 1012 | 1020 |
| 1013 const base::string16& brand(chrome_product_state->brand()); | 1021 const base::string16& brand(chrome_product_state->brand()); |
| 1014 if (!brand.empty()) { | 1022 if (!brand.empty()) { |
| 1015 install_list->AddCreateRegKeyWorkItem( | 1023 install_list->AddCreateRegKeyWorkItem( |
| 1016 root_key, multi_key, WorkItem::kWow64Default); | 1024 root_key, multi_key, KEY_WOW64_32KEY); |
| 1017 // Write Chrome's brand code to the multi key. Never overwrite the value | 1025 // Write Chrome's brand code to the multi key. Never overwrite the value |
| 1018 // if one is already present (although this shouldn't happen). | 1026 // if one is already present (although this shouldn't happen). |
| 1019 install_list->AddSetRegValueWorkItem(root_key, | 1027 install_list->AddSetRegValueWorkItem(root_key, |
| 1020 multi_key, | 1028 multi_key, |
| 1021 WorkItem::kWow64Default, | 1029 KEY_WOW64_32KEY, |
| 1022 google_update::kRegBrandField, | 1030 google_update::kRegBrandField, |
| 1023 brand, | 1031 brand, |
| 1024 false); | 1032 false); |
| 1025 } | 1033 } |
| 1026 } | 1034 } |
| 1027 | 1035 |
| 1028 AddOemInstallWorkItems(original_state, installer_state, install_list); | 1036 AddOemInstallWorkItems(original_state, installer_state, install_list); |
| 1029 AddEulaAcceptedWorkItems(original_state, installer_state, install_list); | 1037 AddEulaAcceptedWorkItems(original_state, installer_state, install_list); |
| 1030 AddUsageStatsWorkItems(original_state, installer_state, install_list); | 1038 AddUsageStatsWorkItems(original_state, installer_state, install_list); |
| 1031 | 1039 |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 1055 installer_state.system_install(), dist->GetType()); | 1063 installer_state.system_install(), dist->GetType()); |
| 1056 value_found = product_state->GetUsageStats(&usagestats); | 1064 value_found = product_state->GetUsageStats(&usagestats); |
| 1057 } | 1065 } |
| 1058 | 1066 |
| 1059 // If a value was found, write it in the appropriate location for the | 1067 // If a value was found, write it in the appropriate location for the |
| 1060 // binaries and remove all values from the products. | 1068 // binaries and remove all values from the products. |
| 1061 if (value_found) { | 1069 if (value_found) { |
| 1062 base::string16 state_key( | 1070 base::string16 state_key( |
| 1063 installer_state.multi_package_binaries_distribution()->GetStateKey()); | 1071 installer_state.multi_package_binaries_distribution()->GetStateKey()); |
| 1064 install_list->AddCreateRegKeyWorkItem( | 1072 install_list->AddCreateRegKeyWorkItem( |
| 1065 root_key, state_key, WorkItem::kWow64Default); | 1073 root_key, state_key, KEY_WOW64_32KEY); |
| 1066 // Overwrite any existing value so that overinstalls (where Omaha writes a | 1074 // Overwrite any existing value so that overinstalls (where Omaha writes a |
| 1067 // new value into a product's state key) pick up the correct value. | 1075 // new value into a product's state key) pick up the correct value. |
| 1068 install_list->AddSetRegValueWorkItem(root_key, | 1076 install_list->AddSetRegValueWorkItem(root_key, |
| 1069 state_key, | 1077 state_key, |
| 1070 WorkItem::kWow64Default, | 1078 KEY_WOW64_32KEY, |
| 1071 google_update::kRegUsageStatsField, | 1079 google_update::kRegUsageStatsField, |
| 1072 usagestats, | 1080 usagestats, |
| 1073 true); | 1081 true); |
| 1074 | 1082 |
| 1075 for (Products::const_iterator scan = products.begin(), end = products.end(); | 1083 for (Products::const_iterator scan = products.begin(), end = products.end(); |
| 1076 scan != end; ++scan) { | 1084 scan != end; ++scan) { |
| 1077 if ((*scan)->is_chrome_binaries()) | 1085 if ((*scan)->is_chrome_binaries()) |
| 1078 continue; | 1086 continue; |
| 1079 BrowserDistribution* dist = (*scan)->distribution(); | 1087 BrowserDistribution* dist = (*scan)->distribution(); |
| 1080 if (installer_state.system_install()) { | 1088 if (installer_state.system_install()) { |
| 1081 install_list->AddDeleteRegValueWorkItem( | 1089 install_list->AddDeleteRegValueWorkItem( |
| 1082 root_key, | 1090 root_key, |
| 1083 dist->GetStateMediumKey(), | 1091 dist->GetStateMediumKey(), |
| 1084 WorkItem::kWow64Default, | 1092 KEY_WOW64_32KEY, |
| 1085 google_update::kRegUsageStatsField); | 1093 google_update::kRegUsageStatsField); |
| 1086 // Previous versions of Chrome also wrote a value in HKCU even for | 1094 // Previous versions of Chrome also wrote a value in HKCU even for |
| 1087 // system-level installs, so clean that up. | 1095 // system-level installs, so clean that up. |
| 1088 install_list->AddDeleteRegValueWorkItem( | 1096 install_list->AddDeleteRegValueWorkItem( |
| 1089 HKEY_CURRENT_USER, | 1097 HKEY_CURRENT_USER, |
| 1090 dist->GetStateKey(), | 1098 dist->GetStateKey(), |
| 1091 WorkItem::kWow64Default, | 1099 KEY_WOW64_32KEY, |
| 1092 google_update::kRegUsageStatsField); | 1100 google_update::kRegUsageStatsField); |
| 1093 } | 1101 } |
| 1094 install_list->AddDeleteRegValueWorkItem( | 1102 install_list->AddDeleteRegValueWorkItem( |
| 1095 root_key, | 1103 root_key, |
| 1096 dist->GetStateKey(), | 1104 dist->GetStateKey(), |
| 1097 WorkItem::kWow64Default, | 1105 KEY_WOW64_32KEY, |
| 1098 google_update::kRegUsageStatsField); | 1106 google_update::kRegUsageStatsField); |
| 1099 } | 1107 } |
| 1100 } | 1108 } |
| 1101 } | 1109 } |
| 1102 | 1110 |
| 1103 bool AppendPostInstallTasks(const InstallerState& installer_state, | 1111 bool AppendPostInstallTasks(const InstallerState& installer_state, |
| 1104 const base::FilePath& setup_path, | 1112 const base::FilePath& setup_path, |
| 1105 const Version* current_version, | 1113 const Version* current_version, |
| 1106 const Version& new_version, | 1114 const Version& new_version, |
| 1107 const base::FilePath& temp_path, | 1115 const base::FilePath& temp_path, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1141 | 1149 |
| 1142 base::string16 version_key; | 1150 base::string16 version_key; |
| 1143 for (size_t i = 0; i < products.size(); ++i) { | 1151 for (size_t i = 0; i < products.size(); ++i) { |
| 1144 BrowserDistribution* dist = products[i]->distribution(); | 1152 BrowserDistribution* dist = products[i]->distribution(); |
| 1145 version_key = dist->GetVersionKey(); | 1153 version_key = dist->GetVersionKey(); |
| 1146 | 1154 |
| 1147 if (current_version) { | 1155 if (current_version) { |
| 1148 in_use_update_work_items->AddSetRegValueWorkItem( | 1156 in_use_update_work_items->AddSetRegValueWorkItem( |
| 1149 root, | 1157 root, |
| 1150 version_key, | 1158 version_key, |
| 1151 WorkItem::kWow64Default, | 1159 KEY_WOW64_32KEY, |
| 1152 google_update::kRegOldVersionField, | 1160 google_update::kRegOldVersionField, |
| 1153 ASCIIToWide(current_version->GetString()), | 1161 ASCIIToWide(current_version->GetString()), |
| 1154 true); | 1162 true); |
| 1155 } | 1163 } |
| 1156 if (critical_version.IsValid()) { | 1164 if (critical_version.IsValid()) { |
| 1157 in_use_update_work_items->AddSetRegValueWorkItem( | 1165 in_use_update_work_items->AddSetRegValueWorkItem( |
| 1158 root, | 1166 root, |
| 1159 version_key, | 1167 version_key, |
| 1160 WorkItem::kWow64Default, | 1168 KEY_WOW64_32KEY, |
| 1161 google_update::kRegCriticalVersionField, | 1169 google_update::kRegCriticalVersionField, |
| 1162 ASCIIToWide(critical_version.GetString()), | 1170 ASCIIToWide(critical_version.GetString()), |
| 1163 true); | 1171 true); |
| 1164 } else { | 1172 } else { |
| 1165 in_use_update_work_items->AddDeleteRegValueWorkItem( | 1173 in_use_update_work_items->AddDeleteRegValueWorkItem( |
| 1166 root, | 1174 root, |
| 1167 version_key, | 1175 version_key, |
| 1168 WorkItem::kWow64Default, | 1176 KEY_WOW64_32KEY, |
| 1169 google_update::kRegCriticalVersionField); | 1177 google_update::kRegCriticalVersionField); |
| 1170 } | 1178 } |
| 1171 | 1179 |
| 1172 // Adding this registry entry for all products (but the binaries) is | 1180 // Adding this registry entry for all products (but the binaries) is |
| 1173 // overkill. However, as it stands, we don't have a way to know which | 1181 // overkill. However, as it stands, we don't have a way to know which |
| 1174 // product will check the key and run the command, so we add it for all. | 1182 // product will check the key and run the command, so we add it for all. |
| 1175 // The first to run it will perform the operation and clean up the other | 1183 // The first to run it will perform the operation and clean up the other |
| 1176 // values. | 1184 // values. |
| 1177 if (dist->GetType() != BrowserDistribution::CHROME_BINARIES) { | 1185 if (dist->GetType() != BrowserDistribution::CHROME_BINARIES) { |
| 1178 CommandLine product_rename_cmd(rename); | 1186 CommandLine product_rename_cmd(rename); |
| 1179 products[i]->AppendRenameFlags(&product_rename_cmd); | 1187 products[i]->AppendRenameFlags(&product_rename_cmd); |
| 1180 in_use_update_work_items->AddSetRegValueWorkItem( | 1188 in_use_update_work_items->AddSetRegValueWorkItem( |
| 1181 root, | 1189 root, |
| 1182 version_key, | 1190 version_key, |
| 1183 WorkItem::kWow64Default, | 1191 KEY_WOW64_32KEY, |
| 1184 google_update::kRegRenameCmdField, | 1192 google_update::kRegRenameCmdField, |
| 1185 product_rename_cmd.GetCommandLineString(), | 1193 product_rename_cmd.GetCommandLineString(), |
| 1186 true); | 1194 true); |
| 1187 } | 1195 } |
| 1188 } | 1196 } |
| 1189 | 1197 |
| 1190 post_install_task_list->AddWorkItem(in_use_update_work_items.release()); | 1198 post_install_task_list->AddWorkItem(in_use_update_work_items.release()); |
| 1191 } | 1199 } |
| 1192 | 1200 |
| 1193 // Append work items that will be executed if this was NOT an in-use update. | 1201 // Append work items that will be executed if this was NOT an in-use update. |
| 1194 { | 1202 { |
| 1195 scoped_ptr<WorkItemList> regular_update_work_items( | 1203 scoped_ptr<WorkItemList> regular_update_work_items( |
| 1196 WorkItem::CreateConditionalWorkItemList( | 1204 WorkItem::CreateConditionalWorkItemList( |
| 1197 new Not(new ConditionRunIfFileExists(new_chrome_exe)))); | 1205 new Not(new ConditionRunIfFileExists(new_chrome_exe)))); |
| 1198 regular_update_work_items->set_log_message("RegularUpdateWorkItemList"); | 1206 regular_update_work_items->set_log_message("RegularUpdateWorkItemList"); |
| 1199 | 1207 |
| 1200 // Since this was not an in-use-update, delete 'opv', 'cpv', and 'cmd' keys. | 1208 // Since this was not an in-use-update, delete 'opv', 'cpv', and 'cmd' keys. |
| 1201 for (size_t i = 0; i < products.size(); ++i) { | 1209 for (size_t i = 0; i < products.size(); ++i) { |
| 1202 BrowserDistribution* dist = products[i]->distribution(); | 1210 BrowserDistribution* dist = products[i]->distribution(); |
| 1203 base::string16 version_key(dist->GetVersionKey()); | 1211 base::string16 version_key(dist->GetVersionKey()); |
| 1204 regular_update_work_items->AddDeleteRegValueWorkItem( | 1212 regular_update_work_items->AddDeleteRegValueWorkItem( |
| 1205 root, | 1213 root, |
| 1206 version_key, | 1214 version_key, |
| 1207 WorkItem::kWow64Default, | 1215 KEY_WOW64_32KEY, |
| 1208 google_update::kRegOldVersionField); | 1216 google_update::kRegOldVersionField); |
| 1209 regular_update_work_items->AddDeleteRegValueWorkItem( | 1217 regular_update_work_items->AddDeleteRegValueWorkItem( |
| 1210 root, | 1218 root, |
| 1211 version_key, | 1219 version_key, |
| 1212 WorkItem::kWow64Default, | 1220 KEY_WOW64_32KEY, |
| 1213 google_update::kRegCriticalVersionField); | 1221 google_update::kRegCriticalVersionField); |
| 1214 regular_update_work_items->AddDeleteRegValueWorkItem( | 1222 regular_update_work_items->AddDeleteRegValueWorkItem( |
| 1215 root, | 1223 root, |
| 1216 version_key, | 1224 version_key, |
| 1217 WorkItem::kWow64Default, | 1225 KEY_WOW64_32KEY, |
| 1218 google_update::kRegRenameCmdField); | 1226 google_update::kRegRenameCmdField); |
| 1219 } | 1227 } |
| 1220 | 1228 |
| 1221 post_install_task_list->AddWorkItem(regular_update_work_items.release()); | 1229 post_install_task_list->AddWorkItem(regular_update_work_items.release()); |
| 1222 } | 1230 } |
| 1223 | 1231 |
| 1224 AddRegisterComDllWorkItemsForPackage(installer_state, current_version, | 1232 AddRegisterComDllWorkItemsForPackage(installer_state, current_version, |
| 1225 new_version, post_install_task_list); | 1233 new_version, post_install_task_list); |
| 1226 | 1234 |
| 1227 // If we're told that we're an MSI install, make sure to set the marker | 1235 // If we're told that we're an MSI install, make sure to set the marker |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1372 | 1380 |
| 1373 void AddSetMsiMarkerWorkItem(const InstallerState& installer_state, | 1381 void AddSetMsiMarkerWorkItem(const InstallerState& installer_state, |
| 1374 BrowserDistribution* dist, | 1382 BrowserDistribution* dist, |
| 1375 bool set, | 1383 bool set, |
| 1376 WorkItemList* work_item_list) { | 1384 WorkItemList* work_item_list) { |
| 1377 DCHECK(work_item_list); | 1385 DCHECK(work_item_list); |
| 1378 DWORD msi_value = set ? 1 : 0; | 1386 DWORD msi_value = set ? 1 : 0; |
| 1379 WorkItem* set_msi_work_item = | 1387 WorkItem* set_msi_work_item = |
| 1380 work_item_list->AddSetRegValueWorkItem(installer_state.root_key(), | 1388 work_item_list->AddSetRegValueWorkItem(installer_state.root_key(), |
| 1381 dist->GetStateKey(), | 1389 dist->GetStateKey(), |
| 1382 WorkItem::kWow64Default, | 1390 KEY_WOW64_32KEY, |
| 1383 google_update::kRegMSIField, | 1391 google_update::kRegMSIField, |
| 1384 msi_value, | 1392 msi_value, |
| 1385 true); | 1393 true); |
| 1386 DCHECK(set_msi_work_item); | 1394 DCHECK(set_msi_work_item); |
| 1387 set_msi_work_item->set_ignore_failure(true); | 1395 set_msi_work_item->set_ignore_failure(true); |
| 1388 set_msi_work_item->set_log_message("Could not write MSI marker!"); | 1396 set_msi_work_item->set_log_message("Could not write MSI marker!"); |
| 1389 } | 1397 } |
| 1390 | 1398 |
| 1391 void AddDelegateExecuteWorkItems(const InstallerState& installer_state, | 1399 void AddDelegateExecuteWorkItems(const InstallerState& installer_state, |
| 1392 const base::FilePath& target_path, | 1400 const base::FilePath& target_path, |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1582 const base::FilePath& setup_path, | 1590 const base::FilePath& setup_path, |
| 1583 const Version& new_version, | 1591 const Version& new_version, |
| 1584 const Product& product, | 1592 const Product& product, |
| 1585 WorkItemList* install_list) { | 1593 WorkItemList* install_list) { |
| 1586 const HKEY root_key = installer_state.root_key(); | 1594 const HKEY root_key = installer_state.root_key(); |
| 1587 base::string16 cmd_key( | 1595 base::string16 cmd_key( |
| 1588 GetRegCommandKey(product.distribution(), kCmdOnOsUpgrade)); | 1596 GetRegCommandKey(product.distribution(), kCmdOnOsUpgrade)); |
| 1589 | 1597 |
| 1590 if (installer_state.operation() == InstallerState::UNINSTALL) { | 1598 if (installer_state.operation() == InstallerState::UNINSTALL) { |
| 1591 install_list->AddDeleteRegKeyWorkItem( | 1599 install_list->AddDeleteRegKeyWorkItem( |
| 1592 root_key, cmd_key, WorkItem::kWow64Default) | 1600 root_key, cmd_key, KEY_WOW64_32KEY) |
| 1593 ->set_log_message("Removing OS upgrade command"); | 1601 ->set_log_message("Removing OS upgrade command"); |
| 1594 } else { | 1602 } else { |
| 1595 // Register with Google Update to have setup.exe --on-os-upgrade called on | 1603 // Register with Google Update to have setup.exe --on-os-upgrade called on |
| 1596 // OS upgrade. | 1604 // OS upgrade. |
| 1597 CommandLine cmd_line(installer_state | 1605 CommandLine cmd_line(installer_state |
| 1598 .GetInstallerDirectory(new_version) | 1606 .GetInstallerDirectory(new_version) |
| 1599 .Append(setup_path.BaseName())); | 1607 .Append(setup_path.BaseName())); |
| 1600 // Add the main option to indicate OS upgrade flow. | 1608 // Add the main option to indicate OS upgrade flow. |
| 1601 cmd_line.AppendSwitch(installer::switches::kOnOsUpgrade); | 1609 cmd_line.AppendSwitch(installer::switches::kOnOsUpgrade); |
| 1602 // Add product-specific options. | 1610 // Add product-specific options. |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1615 void AddQueryEULAAcceptanceWorkItems(const InstallerState& installer_state, | 1623 void AddQueryEULAAcceptanceWorkItems(const InstallerState& installer_state, |
| 1616 const base::FilePath& setup_path, | 1624 const base::FilePath& setup_path, |
| 1617 const Version& new_version, | 1625 const Version& new_version, |
| 1618 const Product& product, | 1626 const Product& product, |
| 1619 WorkItemList* work_item_list) { | 1627 WorkItemList* work_item_list) { |
| 1620 const HKEY root_key = installer_state.root_key(); | 1628 const HKEY root_key = installer_state.root_key(); |
| 1621 base::string16 cmd_key( | 1629 base::string16 cmd_key( |
| 1622 GetRegCommandKey(product.distribution(), kCmdQueryEULAAcceptance)); | 1630 GetRegCommandKey(product.distribution(), kCmdQueryEULAAcceptance)); |
| 1623 if (installer_state.operation() == InstallerState::UNINSTALL) { | 1631 if (installer_state.operation() == InstallerState::UNINSTALL) { |
| 1624 work_item_list->AddDeleteRegKeyWorkItem( | 1632 work_item_list->AddDeleteRegKeyWorkItem( |
| 1625 root_key, cmd_key, WorkItem::kWow64Default) | 1633 root_key, cmd_key, KEY_WOW64_32KEY) |
| 1626 ->set_log_message("Removing query EULA acceptance command"); | 1634 ->set_log_message("Removing query EULA acceptance command"); |
| 1627 } else { | 1635 } else { |
| 1628 CommandLine cmd_line(installer_state | 1636 CommandLine cmd_line(installer_state |
| 1629 .GetInstallerDirectory(new_version) | 1637 .GetInstallerDirectory(new_version) |
| 1630 .Append(setup_path.BaseName())); | 1638 .Append(setup_path.BaseName())); |
| 1631 cmd_line.AppendSwitch(switches::kQueryEULAAcceptance); | 1639 cmd_line.AppendSwitch(switches::kQueryEULAAcceptance); |
| 1632 if (installer_state.system_install()) | 1640 if (installer_state.system_install()) |
| 1633 cmd_line.AppendSwitch(installer::switches::kSystemLevel); | 1641 cmd_line.AppendSwitch(installer::switches::kSystemLevel); |
| 1634 if (installer_state.verbose_logging()) | 1642 if (installer_state.verbose_logging()) |
| 1635 cmd_line.AppendSwitch(installer::switches::kVerboseLogging); | 1643 cmd_line.AppendSwitch(installer::switches::kVerboseLogging); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 1646 | 1654 |
| 1647 base::string16 cmd_key( | 1655 base::string16 cmd_key( |
| 1648 GetRegCommandKey(BrowserDistribution::GetSpecificDistribution( | 1656 GetRegCommandKey(BrowserDistribution::GetSpecificDistribution( |
| 1649 BrowserDistribution::CHROME_BINARIES), | 1657 BrowserDistribution::CHROME_BINARIES), |
| 1650 kCmdQuickEnableCf)); | 1658 kCmdQuickEnableCf)); |
| 1651 | 1659 |
| 1652 // Unconditionally remove the legacy Quick Enable command from the binaries. | 1660 // Unconditionally remove the legacy Quick Enable command from the binaries. |
| 1653 // Do this even if multi-install Chrome isn't installed to ensure that it is | 1661 // Do this even if multi-install Chrome isn't installed to ensure that it is |
| 1654 // not left behind in any case. | 1662 // not left behind in any case. |
| 1655 work_item_list->AddDeleteRegKeyWorkItem( | 1663 work_item_list->AddDeleteRegKeyWorkItem( |
| 1656 installer_state.root_key(), cmd_key, WorkItem::kWow64Default) | 1664 installer_state.root_key(), cmd_key, KEY_WOW64_32KEY) |
| 1657 ->set_log_message("removing " + | 1665 ->set_log_message("removing " + |
| 1658 base::UTF16ToASCII(kCmdQuickEnableCf) + " command"); | 1666 base::UTF16ToASCII(kCmdQuickEnableCf) + " command"); |
| 1659 } | 1667 } |
| 1660 | 1668 |
| 1661 } // namespace installer | 1669 } // namespace installer |
| OLD | NEW |