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 |