| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <shlobj.h> | 10 #include <shlobj.h> |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 } | 336 } |
| 337 | 337 |
| 338 RegKey key; | 338 RegKey key; |
| 339 ChannelInfo other_info; | 339 ChannelInfo other_info; |
| 340 std::vector<std::wstring>::const_iterator kscan = keys.begin(); | 340 std::vector<std::wstring>::const_iterator kscan = keys.begin(); |
| 341 std::vector<std::wstring>::const_iterator kend = keys.end(); | 341 std::vector<std::wstring>::const_iterator kend = keys.end(); |
| 342 for (; kscan != kend; ++kscan) { | 342 for (; kscan != kend; ++kscan) { |
| 343 // Handle the case where the ClientState key doesn't exist by creating it. | 343 // Handle the case where the ClientState key doesn't exist by creating it. |
| 344 // This takes care of the multi-installer's package key, which is not | 344 // This takes care of the multi-installer's package key, which is not |
| 345 // created by Google Update for us. | 345 // created by Google Update for us. |
| 346 if (!key.Open(reg_root, kscan->c_str(), KEY_QUERY_VALUE) || | 346 if ((key.Open(reg_root, kscan->c_str(), KEY_QUERY_VALUE) != ERROR_SUCCESS) |
| 347 !other_info.Initialize(key)) { | 347 || (!other_info.Initialize(key))) { |
| 348 other_info.set_value(std::wstring()); | 348 other_info.set_value(std::wstring()); |
| 349 } | 349 } |
| 350 if (!other_info.Equals(channel_info)) { | 350 if (!other_info.Equals(channel_info)) { |
| 351 if (!key.Valid()) | 351 if (!key.Valid()) |
| 352 install_list->AddCreateRegKeyWorkItem(reg_root, *kscan); | 352 install_list->AddCreateRegKeyWorkItem(reg_root, *kscan); |
| 353 install_list->AddSetRegValueWorkItem(reg_root, *kscan, | 353 install_list->AddSetRegValueWorkItem(reg_root, *kscan, |
| 354 google_update::kRegApField, | 354 google_update::kRegApField, |
| 355 channel_info.value(), true); | 355 channel_info.value(), true); |
| 356 } | 356 } |
| 357 } | 357 } |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 WorkItem::CreateConditionalWorkItemList( | 495 WorkItem::CreateConditionalWorkItemList( |
| 496 new Not(new ConditionRunIfFileExists(new_chrome_exe)))); | 496 new Not(new ConditionRunIfFileExists(new_chrome_exe)))); |
| 497 regular_update_work_items->set_log_message( | 497 regular_update_work_items->set_log_message( |
| 498 "RegularUpdateWorkItemList"); | 498 "RegularUpdateWorkItemList"); |
| 499 | 499 |
| 500 // Since this was not an in-use-update, delete 'opv' and 'cmd' keys. | 500 // Since this was not an in-use-update, delete 'opv' and 'cmd' keys. |
| 501 for (size_t i = 0; i < products.size(); ++i) { | 501 for (size_t i = 0; i < products.size(); ++i) { |
| 502 BrowserDistribution* dist = products[i]->distribution(); | 502 BrowserDistribution* dist = products[i]->distribution(); |
| 503 std::wstring version_key(dist->GetVersionKey()); | 503 std::wstring version_key(dist->GetVersionKey()); |
| 504 regular_update_work_items->AddDeleteRegValueWorkItem(root, version_key, | 504 regular_update_work_items->AddDeleteRegValueWorkItem(root, version_key, |
| 505 google_update::kRegOldVersionField, | 505 google_update::kRegOldVersionField); |
| 506 true); | |
| 507 regular_update_work_items->AddDeleteRegValueWorkItem(root, version_key, | 506 regular_update_work_items->AddDeleteRegValueWorkItem(root, version_key, |
| 508 google_update::kRegRenameCmdField, | 507 google_update::kRegRenameCmdField); |
| 509 true); | |
| 510 } | 508 } |
| 511 | 509 |
| 512 post_install_task_list->AddWorkItem(regular_update_work_items.release()); | 510 post_install_task_list->AddWorkItem(regular_update_work_items.release()); |
| 513 } | 511 } |
| 514 | 512 |
| 515 AddRegisterComDllWorkItemsForPackage(package, current_version, new_version, | 513 AddRegisterComDllWorkItemsForPackage(package, current_version, new_version, |
| 516 post_install_task_list); | 514 post_install_task_list); |
| 517 | 515 |
| 518 for (size_t i = 0; i < products.size(); ++i) { | 516 for (size_t i = 0; i < products.size(); ++i) { |
| 519 const Product* product = products[i]; | 517 const Product* product = products[i]; |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 783 // installed with ready mode enabled (the --ready-mode switch should be set | 781 // installed with ready mode enabled (the --ready-mode switch should be set |
| 784 // in the registry) so deleting the value should have no effect. | 782 // in the registry) so deleting the value should have no effect. |
| 785 // In both cases (install/uninstall), we need to make sure that Chrome's | 783 // In both cases (install/uninstall), we need to make sure that Chrome's |
| 786 // uninstallation command line does not include the --chrome-frame switch | 784 // uninstallation command line does not include the --chrome-frame switch |
| 787 // so that uninstalling Chrome will no longer uninstall Chrome Frame. | 785 // so that uninstalling Chrome will no longer uninstall Chrome Frame. |
| 788 | 786 |
| 789 if (RegKey(root, product.package().properties()->GetStateKey().c_str(), | 787 if (RegKey(root, product.package().properties()->GetStateKey().c_str(), |
| 790 KEY_QUERY_VALUE).Valid()) { | 788 KEY_QUERY_VALUE).Valid()) { |
| 791 list->AddDeleteRegValueWorkItem(root, | 789 list->AddDeleteRegValueWorkItem(root, |
| 792 product.package().properties()->GetStateKey(), | 790 product.package().properties()->GetStateKey(), |
| 793 installer::kChromeFrameReadyModeField, REG_QWORD); | 791 installer::kChromeFrameReadyModeField); |
| 794 } | 792 } |
| 795 | 793 |
| 796 const Product* chrome = installer::FindProduct(product.package().products(), | 794 const Product* chrome = installer::FindProduct(product.package().products(), |
| 797 BrowserDistribution::CHROME_BROWSER); | 795 BrowserDistribution::CHROME_BROWSER); |
| 798 if (chrome) { | 796 if (chrome) { |
| 799 // Chrome is already a part of this installation run, so we can assume | 797 // Chrome is already a part of this installation run, so we can assume |
| 800 // that the uninstallation arguments will be updated correctly. | 798 // that the uninstallation arguments will be updated correctly. |
| 801 } else { | 799 } else { |
| 802 // Chrome is not a part of this installation run, so we have to explicitly | 800 // Chrome is not a part of this installation run, so we have to explicitly |
| 803 // check if Chrome is installed, and if so, update its uninstallation | 801 // check if Chrome is installed, and if so, update its uninstallation |
| 804 // command lines. | 802 // command lines. |
| 805 BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution( | 803 BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution( |
| 806 BrowserDistribution::CHROME_BROWSER, | 804 BrowserDistribution::CHROME_BROWSER, |
| 807 MasterPreferences::ForCurrentProcess()); | 805 MasterPreferences::ForCurrentProcess()); |
| 808 update_chrome_uninstall_command = | 806 update_chrome_uninstall_command = |
| 809 IsInstalledAsMulti(product.system_level(), dist); | 807 IsInstalledAsMulti(product.system_level(), dist); |
| 810 } | 808 } |
| 811 } | 809 } |
| 812 | 810 |
| 813 if (!ready_mode || !install) { | 811 if (!ready_mode || !install) { |
| 814 list->AddDeleteRegValueWorkItem(root, version_key, | 812 list->AddDeleteRegValueWorkItem(root, version_key, |
| 815 google_update::kRegCFTempOptOutCmdField, | 813 google_update::kRegCFTempOptOutCmdField); |
| 816 REG_SZ); | |
| 817 list->AddDeleteRegValueWorkItem(root, version_key, | 814 list->AddDeleteRegValueWorkItem(root, version_key, |
| 818 google_update::kRegCFEndTempOptOutCmdField, | 815 google_update::kRegCFEndTempOptOutCmdField); |
| 819 REG_SZ); | |
| 820 list->AddDeleteRegValueWorkItem(root, version_key, | 816 list->AddDeleteRegValueWorkItem(root, version_key, |
| 821 google_update::kRegCFOptOutCmdField, | 817 google_update::kRegCFOptOutCmdField); |
| 822 REG_SZ); | |
| 823 list->AddDeleteRegValueWorkItem(root, version_key, | 818 list->AddDeleteRegValueWorkItem(root, version_key, |
| 824 google_update::kRegCFOptInCmdField, REG_SZ); | 819 google_update::kRegCFOptInCmdField); |
| 825 } | 820 } |
| 826 | 821 |
| 827 if (update_chrome_uninstall_command) { | 822 if (update_chrome_uninstall_command) { |
| 828 // Chrome is not a part of this installation run, so we have to explicitly | 823 // Chrome is not a part of this installation run, so we have to explicitly |
| 829 // check if Chrome is installed, and if so, update its uninstallation | 824 // check if Chrome is installed, and if so, update its uninstallation |
| 830 // command lines. | 825 // command lines. |
| 831 BrowserDistribution* chrome_dist = | 826 BrowserDistribution* chrome_dist = |
| 832 BrowserDistribution::GetSpecificDistribution( | 827 BrowserDistribution::GetSpecificDistribution( |
| 833 BrowserDistribution::CHROME_BROWSER, prefs); | 828 BrowserDistribution::CHROME_BROWSER, prefs); |
| 834 const Package& pack = product.package(); | 829 const Package& pack = product.package(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 863 if (prefs.is_multi_install()) { | 858 if (prefs.is_multi_install()) { |
| 864 uninstall_cmd->AppendSwitch(installer::switches::kMultiInstall); | 859 uninstall_cmd->AppendSwitch(installer::switches::kMultiInstall); |
| 865 } | 860 } |
| 866 bool value = false; | 861 bool value = false; |
| 867 if (prefs.GetBool(installer::master_preferences::kVerboseLogging, | 862 if (prefs.GetBool(installer::master_preferences::kVerboseLogging, |
| 868 &value) && value) | 863 &value) && value) |
| 869 uninstall_cmd->AppendSwitch(installer::switches::kVerboseLogging); | 864 uninstall_cmd->AppendSwitch(installer::switches::kVerboseLogging); |
| 870 } | 865 } |
| 871 | 866 |
| 872 } // namespace installer | 867 } // namespace installer |
| OLD | NEW |