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 #include "chrome/installer/setup/setup_main.h" | 5 #include "chrome/installer/setup/setup_main.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <msi.h> | 8 #include <msi.h> |
9 #include <shellapi.h> | 9 #include <shellapi.h> |
10 #include <shlobj.h> | 10 #include <shlobj.h> |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 install_list.get()); | 257 install_list.get()); |
258 } | 258 } |
259 // old_chrome.exe is still in use in most cases, so ignore failures here. | 259 // old_chrome.exe is still in use in most cases, so ignore failures here. |
260 install_list->AddDeleteTreeWorkItem(chrome_old_exe, temp_path.path())-> | 260 install_list->AddDeleteTreeWorkItem(chrome_old_exe, temp_path.path())-> |
261 set_ignore_failure(true); | 261 set_ignore_failure(true); |
262 | 262 |
263 // Add work items to delete the "opv", "cpv", and "cmd" values from all | 263 // Add work items to delete the "opv", "cpv", and "cmd" values from all |
264 // products we're operating on (which including the multi-install binaries). | 264 // products we're operating on (which including the multi-install binaries). |
265 const Products& products = installer_state->products(); | 265 const Products& products = installer_state->products(); |
266 HKEY reg_root = installer_state->root_key(); | 266 HKEY reg_root = installer_state->root_key(); |
267 string16 version_key; | 267 base::string16 version_key; |
268 for (Products::const_iterator it = products.begin(); it < products.end(); | 268 for (Products::const_iterator it = products.begin(); it < products.end(); |
269 ++it) { | 269 ++it) { |
270 version_key = (*it)->distribution()->GetVersionKey(); | 270 version_key = (*it)->distribution()->GetVersionKey(); |
271 install_list->AddDeleteRegValueWorkItem( | 271 install_list->AddDeleteRegValueWorkItem( |
272 reg_root, version_key, google_update::kRegOldVersionField); | 272 reg_root, version_key, google_update::kRegOldVersionField); |
273 install_list->AddDeleteRegValueWorkItem( | 273 install_list->AddDeleteRegValueWorkItem( |
274 reg_root, version_key, google_update::kRegCriticalVersionField); | 274 reg_root, version_key, google_update::kRegCriticalVersionField); |
275 install_list->AddDeleteRegValueWorkItem( | 275 install_list->AddDeleteRegValueWorkItem( |
276 reg_root, version_key, google_update::kRegRenameCmdField); | 276 reg_root, version_key, google_update::kRegRenameCmdField); |
277 } | 277 } |
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
854 (*it)->distribution()->UpdateInstallStatus( | 854 (*it)->distribution()->UpdateInstallStatus( |
855 system_install, archive_type, install_status); | 855 system_install, archive_type, install_status); |
856 } | 856 } |
857 | 857 |
858 UninstallBinariesIfUnused(original_state, *installer_state, &install_status); | 858 UninstallBinariesIfUnused(original_state, *installer_state, &install_status); |
859 | 859 |
860 installer_state->UpdateStage(installer::NO_STAGE); | 860 installer_state->UpdateStage(installer::NO_STAGE); |
861 return install_status; | 861 return install_status; |
862 } | 862 } |
863 | 863 |
864 installer::InstallStatus ShowEULADialog(const string16& inner_frame) { | 864 installer::InstallStatus ShowEULADialog(const base::string16& inner_frame) { |
865 VLOG(1) << "About to show EULA"; | 865 VLOG(1) << "About to show EULA"; |
866 string16 eula_path = installer::GetLocalizedEulaResource(); | 866 base::string16 eula_path = installer::GetLocalizedEulaResource(); |
867 if (eula_path.empty()) { | 867 if (eula_path.empty()) { |
868 LOG(ERROR) << "No EULA path available"; | 868 LOG(ERROR) << "No EULA path available"; |
869 return installer::EULA_REJECTED; | 869 return installer::EULA_REJECTED; |
870 } | 870 } |
871 // Newer versions of the caller pass an inner frame parameter that must | 871 // Newer versions of the caller pass an inner frame parameter that must |
872 // be given to the html page being launched. | 872 // be given to the html page being launched. |
873 installer::EulaHTMLDialog dlg(eula_path, inner_frame); | 873 installer::EulaHTMLDialog dlg(eula_path, inner_frame); |
874 installer::EulaHTMLDialog::Outcome outcome = dlg.ShowModal(); | 874 installer::EulaHTMLDialog::Outcome outcome = dlg.ShowModal(); |
875 if (installer::EulaHTMLDialog::REJECTED == outcome) { | 875 if (installer::EulaHTMLDialog::REJECTED == outcome) { |
876 LOG(ERROR) << "EULA rejected or EULA failure"; | 876 LOG(ERROR) << "EULA rejected or EULA failure"; |
(...skipping 20 matching lines...) Expand all Loading... |
897 file_util::WriteFile(eula_sentinel, "", 0) != -1); | 897 file_util::WriteFile(eula_sentinel, "", 0) != -1); |
898 } | 898 } |
899 | 899 |
900 void ActivateMetroChrome() { | 900 void ActivateMetroChrome() { |
901 // Check to see if we're per-user or not. Need to do this since we may | 901 // Check to see if we're per-user or not. Need to do this since we may |
902 // not have been invoked with --system-level even for a machine install. | 902 // not have been invoked with --system-level even for a machine install. |
903 wchar_t exe_path[MAX_PATH * 2] = {}; | 903 wchar_t exe_path[MAX_PATH * 2] = {}; |
904 GetModuleFileName(NULL, exe_path, arraysize(exe_path)); | 904 GetModuleFileName(NULL, exe_path, arraysize(exe_path)); |
905 bool is_per_user_install = InstallUtil::IsPerUserInstall(exe_path); | 905 bool is_per_user_install = InstallUtil::IsPerUserInstall(exe_path); |
906 | 906 |
907 string16 app_model_id = | 907 base::string16 app_model_id = ShellUtil::GetBrowserModelId( |
908 ShellUtil::GetBrowserModelId(BrowserDistribution::GetDistribution(), | 908 BrowserDistribution::GetDistribution(), is_per_user_install); |
909 is_per_user_install); | |
910 | 909 |
911 base::win::ScopedComPtr<IApplicationActivationManager> activator; | 910 base::win::ScopedComPtr<IApplicationActivationManager> activator; |
912 HRESULT hr = activator.CreateInstance(CLSID_ApplicationActivationManager); | 911 HRESULT hr = activator.CreateInstance(CLSID_ApplicationActivationManager); |
913 if (SUCCEEDED(hr)) { | 912 if (SUCCEEDED(hr)) { |
914 DWORD pid = 0; | 913 DWORD pid = 0; |
915 hr = activator->ActivateApplication( | 914 hr = activator->ActivateApplication( |
916 app_model_id.c_str(), L"open", AO_NONE, &pid); | 915 app_model_id.c_str(), L"open", AO_NONE, &pid); |
917 } | 916 } |
918 | 917 |
919 LOG_IF(ERROR, FAILED(hr)) << "Tried and failed to launch Metro Chrome. " | 918 LOG_IF(ERROR, FAILED(hr)) << "Tried and failed to launch Metro Chrome. " |
(...skipping 14 matching lines...) Expand all Loading... |
934 original_state.GetProductState(false, | 933 original_state.GetProductState(false, |
935 BrowserDistribution::CHROME_BROWSER); | 934 BrowserDistribution::CHROME_BROWSER); |
936 if (!existing_chrome) { | 935 if (!existing_chrome) { |
937 existing_chrome = | 936 existing_chrome = |
938 original_state.GetProductState(true, BrowserDistribution::CHROME_BROWSER); | 937 original_state.GetProductState(true, BrowserDistribution::CHROME_BROWSER); |
939 } | 938 } |
940 if (existing_chrome) { | 939 if (existing_chrome) { |
941 static const wchar_t kPleaseUninstallYourChromeMessage[] = | 940 static const wchar_t kPleaseUninstallYourChromeMessage[] = |
942 L"You already have a full-installation (non-dev) of %1ls, please " | 941 L"You already have a full-installation (non-dev) of %1ls, please " |
943 L"uninstall it first using Add/Remove Programs in the control panel."; | 942 L"uninstall it first using Add/Remove Programs in the control panel."; |
944 string16 name(chrome_dist->GetDisplayName()); | 943 base::string16 name(chrome_dist->GetDisplayName()); |
945 string16 message(base::StringPrintf(kPleaseUninstallYourChromeMessage, | 944 base::string16 message( |
946 name.c_str())); | 945 base::StringPrintf(kPleaseUninstallYourChromeMessage, name.c_str())); |
947 | 946 |
948 LOG(ERROR) << "Aborting operation: another installation of " << name | 947 LOG(ERROR) << "Aborting operation: another installation of " << name |
949 << " was found, as a last resort (if the product is not present " | 948 << " was found, as a last resort (if the product is not present " |
950 "in Add/Remove Programs), try executing: " | 949 "in Add/Remove Programs), try executing: " |
951 << existing_chrome->uninstall_command().GetCommandLineString(); | 950 << existing_chrome->uninstall_command().GetCommandLineString(); |
952 MessageBox(NULL, message.c_str(), NULL, MB_ICONERROR); | 951 MessageBox(NULL, message.c_str(), NULL, MB_ICONERROR); |
953 return installer::INSTALL_FAILED; | 952 return installer::INSTALL_FAILED; |
954 } | 953 } |
955 | 954 |
956 base::FilePath chrome_exe( | 955 base::FilePath chrome_exe( |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1041 if (*exit_code) { | 1040 if (*exit_code) { |
1042 LOG(WARNING) << "setup.exe patching failed."; | 1041 LOG(WARNING) << "setup.exe patching failed."; |
1043 installer_state->WriteInstallerResult( | 1042 installer_state->WriteInstallerResult( |
1044 status, IDS_SETUP_PATCH_FAILED_BASE, NULL); | 1043 status, IDS_SETUP_PATCH_FAILED_BASE, NULL); |
1045 } | 1044 } |
1046 // We will be exiting normally, so clear the stage indicator. | 1045 // We will be exiting normally, so clear the stage indicator. |
1047 installer_state->UpdateStage(installer::NO_STAGE); | 1046 installer_state->UpdateStage(installer::NO_STAGE); |
1048 } else if (cmd_line.HasSwitch(installer::switches::kShowEula)) { | 1047 } else if (cmd_line.HasSwitch(installer::switches::kShowEula)) { |
1049 // Check if we need to show the EULA. If it is passed as a command line | 1048 // Check if we need to show the EULA. If it is passed as a command line |
1050 // then the dialog is shown and regardless of the outcome setup exits here. | 1049 // then the dialog is shown and regardless of the outcome setup exits here. |
1051 string16 inner_frame = | 1050 base::string16 inner_frame = |
1052 cmd_line.GetSwitchValueNative(installer::switches::kShowEula); | 1051 cmd_line.GetSwitchValueNative(installer::switches::kShowEula); |
1053 *exit_code = ShowEULADialog(inner_frame); | 1052 *exit_code = ShowEULADialog(inner_frame); |
1054 | 1053 |
1055 if (installer::EULA_REJECTED != *exit_code) { | 1054 if (installer::EULA_REJECTED != *exit_code) { |
1056 if (GoogleUpdateSettings::SetEULAConsent( | 1055 if (GoogleUpdateSettings::SetEULAConsent( |
1057 original_state, BrowserDistribution::GetDistribution(), true)) { | 1056 original_state, BrowserDistribution::GetDistribution(), true)) { |
1058 CreateEULASentinel(BrowserDistribution::GetDistribution()); | 1057 CreateEULASentinel(BrowserDistribution::GetDistribution()); |
1059 } | 1058 } |
1060 // For a metro-originated launch, we now need to launch back into metro. | 1059 // For a metro-originated launch, we now need to launch back into metro. |
1061 if (cmd_line.HasSwitch(installer::switches::kShowEulaForMetro)) | 1060 if (cmd_line.HasSwitch(installer::switches::kShowEulaForMetro)) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 // control panel settings, or through website use of | 1096 // control panel settings, or through website use of |
1098 // registerProtocolHandler. These protocols are found in | 1097 // registerProtocolHandler. These protocols are found in |
1099 // ShellUtil::kPotentialProtocolAssociations. | 1098 // ShellUtil::kPotentialProtocolAssociations. |
1100 // The --register-url-protocol will additionally register Chrome as a | 1099 // The --register-url-protocol will additionally register Chrome as a |
1101 // potential handler for the supplied protocol, and is used if a website | 1100 // potential handler for the supplied protocol, and is used if a website |
1102 // registers a handler for a protocol not found in | 1101 // registers a handler for a protocol not found in |
1103 // ShellUtil::kPotentialProtocolAssociations. | 1102 // ShellUtil::kPotentialProtocolAssociations. |
1104 // These options should only be used when setup.exe is launched with admin | 1103 // These options should only be used when setup.exe is launched with admin |
1105 // rights. We do not make any user specific changes with this option. | 1104 // rights. We do not make any user specific changes with this option. |
1106 DCHECK(IsUserAnAdmin()); | 1105 DCHECK(IsUserAnAdmin()); |
1107 string16 chrome_exe(cmd_line.GetSwitchValueNative( | 1106 base::string16 chrome_exe(cmd_line.GetSwitchValueNative( |
1108 installer::switches::kRegisterChromeBrowser)); | 1107 installer::switches::kRegisterChromeBrowser)); |
1109 string16 suffix; | 1108 base::string16 suffix; |
1110 if (cmd_line.HasSwitch( | 1109 if (cmd_line.HasSwitch( |
1111 installer::switches::kRegisterChromeBrowserSuffix)) { | 1110 installer::switches::kRegisterChromeBrowserSuffix)) { |
1112 suffix = cmd_line.GetSwitchValueNative( | 1111 suffix = cmd_line.GetSwitchValueNative( |
1113 installer::switches::kRegisterChromeBrowserSuffix); | 1112 installer::switches::kRegisterChromeBrowserSuffix); |
1114 } | 1113 } |
1115 if (cmd_line.HasSwitch(installer::switches::kRegisterURLProtocol)) { | 1114 if (cmd_line.HasSwitch(installer::switches::kRegisterURLProtocol)) { |
1116 string16 protocol = cmd_line.GetSwitchValueNative( | 1115 base::string16 protocol = cmd_line.GetSwitchValueNative( |
1117 installer::switches::kRegisterURLProtocol); | 1116 installer::switches::kRegisterURLProtocol); |
1118 // ShellUtil::RegisterChromeForProtocol performs all registration | 1117 // ShellUtil::RegisterChromeForProtocol performs all registration |
1119 // done by ShellUtil::RegisterChromeBrowser, as well as registering | 1118 // done by ShellUtil::RegisterChromeBrowser, as well as registering |
1120 // with Windows as capable of handling the supplied protocol. | 1119 // with Windows as capable of handling the supplied protocol. |
1121 if (ShellUtil::RegisterChromeForProtocol( | 1120 if (ShellUtil::RegisterChromeForProtocol( |
1122 chrome_install->distribution(), chrome_exe, suffix, protocol, | 1121 chrome_install->distribution(), chrome_exe, suffix, protocol, |
1123 false)) | 1122 false)) |
1124 status = installer::IN_USE_UPDATED; | 1123 status = installer::IN_USE_UPDATED; |
1125 } else { | 1124 } else { |
1126 if (ShellUtil::RegisterChromeBrowser(chrome_install->distribution(), | 1125 if (ShellUtil::RegisterChromeBrowser(chrome_install->distribution(), |
1127 chrome_exe, suffix, false)) | 1126 chrome_exe, suffix, false)) |
1128 status = installer::IN_USE_UPDATED; | 1127 status = installer::IN_USE_UPDATED; |
1129 } | 1128 } |
1130 } else { | 1129 } else { |
1131 LOG(DFATAL) << "Can't register browser - Chrome distribution not found"; | 1130 LOG(DFATAL) << "Can't register browser - Chrome distribution not found"; |
1132 } | 1131 } |
1133 *exit_code = InstallUtil::GetInstallReturnCode(status); | 1132 *exit_code = InstallUtil::GetInstallReturnCode(status); |
1134 } else if (cmd_line.HasSwitch(installer::switches::kRenameChromeExe)) { | 1133 } else if (cmd_line.HasSwitch(installer::switches::kRenameChromeExe)) { |
1135 // If --rename-chrome-exe is specified, we want to rename the executables | 1134 // If --rename-chrome-exe is specified, we want to rename the executables |
1136 // and exit. | 1135 // and exit. |
1137 *exit_code = RenameChromeExecutables(original_state, installer_state); | 1136 *exit_code = RenameChromeExecutables(original_state, installer_state); |
1138 } else if (cmd_line.HasSwitch( | 1137 } else if (cmd_line.HasSwitch( |
1139 installer::switches::kRemoveChromeRegistration)) { | 1138 installer::switches::kRemoveChromeRegistration)) { |
1140 // This is almost reverse of --register-chrome-browser option above. | 1139 // This is almost reverse of --register-chrome-browser option above. |
1141 // Here we delete Chrome browser registration. This option should only | 1140 // Here we delete Chrome browser registration. This option should only |
1142 // be used when setup.exe is launched with admin rights. We do not | 1141 // be used when setup.exe is launched with admin rights. We do not |
1143 // make any user specific changes in this option. | 1142 // make any user specific changes in this option. |
1144 string16 suffix; | 1143 base::string16 suffix; |
1145 if (cmd_line.HasSwitch( | 1144 if (cmd_line.HasSwitch( |
1146 installer::switches::kRegisterChromeBrowserSuffix)) { | 1145 installer::switches::kRegisterChromeBrowserSuffix)) { |
1147 suffix = cmd_line.GetSwitchValueNative( | 1146 suffix = cmd_line.GetSwitchValueNative( |
1148 installer::switches::kRegisterChromeBrowserSuffix); | 1147 installer::switches::kRegisterChromeBrowserSuffix); |
1149 } | 1148 } |
1150 installer::InstallStatus tmp = installer::UNKNOWN_STATUS; | 1149 installer::InstallStatus tmp = installer::UNKNOWN_STATUS; |
1151 const Product* chrome_install = | 1150 const Product* chrome_install = |
1152 installer_state->FindProduct(BrowserDistribution::CHROME_BROWSER); | 1151 installer_state->FindProduct(BrowserDistribution::CHROME_BROWSER); |
1153 DCHECK(chrome_install); | 1152 DCHECK(chrome_install); |
1154 if (chrome_install) { | 1153 if (chrome_install) { |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1271 | 1270 |
1272 // Popup a dialog that will prompt to reboot using the default system message. | 1271 // Popup a dialog that will prompt to reboot using the default system message. |
1273 // TODO(robertshield): Add a localized, more specific string to the prompt. | 1272 // TODO(robertshield): Add a localized, more specific string to the prompt. |
1274 RestartDialog(NULL, NULL, EWX_REBOOT | EWX_FORCEIFHUNG); | 1273 RestartDialog(NULL, NULL, EWX_REBOOT | EWX_FORCEIFHUNG); |
1275 return true; | 1274 return true; |
1276 } | 1275 } |
1277 | 1276 |
1278 // Returns the Custom information for the client identified by the exe path | 1277 // Returns the Custom information for the client identified by the exe path |
1279 // passed in. This information is used for crash reporting. | 1278 // passed in. This information is used for crash reporting. |
1280 google_breakpad::CustomClientInfo* GetCustomInfo(const wchar_t* exe_path) { | 1279 google_breakpad::CustomClientInfo* GetCustomInfo(const wchar_t* exe_path) { |
1281 string16 product; | 1280 base::string16 product; |
1282 string16 version; | 1281 base::string16 version; |
1283 scoped_ptr<FileVersionInfo> version_info( | 1282 scoped_ptr<FileVersionInfo> version_info( |
1284 FileVersionInfo::CreateFileVersionInfo(base::FilePath(exe_path))); | 1283 FileVersionInfo::CreateFileVersionInfo(base::FilePath(exe_path))); |
1285 if (version_info.get()) { | 1284 if (version_info.get()) { |
1286 version = version_info->product_version(); | 1285 version = version_info->product_version(); |
1287 product = version_info->product_short_name(); | 1286 product = version_info->product_short_name(); |
1288 } | 1287 } |
1289 | 1288 |
1290 if (version.empty()) | 1289 if (version.empty()) |
1291 version = L"0.1.0.0"; | 1290 version = L"0.1.0.0"; |
1292 | 1291 |
(...skipping 24 matching lines...) Expand all Loading... |
1317 base::FilePath temp_directory; | 1316 base::FilePath temp_directory; |
1318 if (!base::GetTempDir(&temp_directory) || temp_directory.empty()) | 1317 if (!base::GetTempDir(&temp_directory) || temp_directory.empty()) |
1319 return NULL; | 1318 return NULL; |
1320 | 1319 |
1321 wchar_t exe_path[MAX_PATH * 2] = {0}; | 1320 wchar_t exe_path[MAX_PATH * 2] = {0}; |
1322 GetModuleFileName(NULL, exe_path, arraysize(exe_path)); | 1321 GetModuleFileName(NULL, exe_path, arraysize(exe_path)); |
1323 | 1322 |
1324 // Build the pipe name. It can be either: | 1323 // Build the pipe name. It can be either: |
1325 // System-wide install: "NamedPipe\GoogleCrashServices\S-1-5-18" | 1324 // System-wide install: "NamedPipe\GoogleCrashServices\S-1-5-18" |
1326 // Per-user install: "NamedPipe\GoogleCrashServices\<user SID>" | 1325 // Per-user install: "NamedPipe\GoogleCrashServices\<user SID>" |
1327 string16 user_sid = kSystemPrincipalSid; | 1326 base::string16 user_sid = kSystemPrincipalSid; |
1328 | 1327 |
1329 if (!system_install) { | 1328 if (!system_install) { |
1330 if (!base::win::GetUserSidString(&user_sid)) { | 1329 if (!base::win::GetUserSidString(&user_sid)) { |
1331 return NULL; | 1330 return NULL; |
1332 } | 1331 } |
1333 } | 1332 } |
1334 | 1333 |
1335 string16 pipe_name = kGoogleUpdatePipeName; | 1334 base::string16 pipe_name = kGoogleUpdatePipeName; |
1336 pipe_name += user_sid; | 1335 pipe_name += user_sid; |
1337 | 1336 |
1338 google_breakpad::ExceptionHandler* breakpad = | 1337 google_breakpad::ExceptionHandler* breakpad = |
1339 new google_breakpad::ExceptionHandler( | 1338 new google_breakpad::ExceptionHandler( |
1340 temp_directory.value(), NULL, NULL, NULL, | 1339 temp_directory.value(), NULL, NULL, NULL, |
1341 google_breakpad::ExceptionHandler::HANDLER_ALL, kLargerDumpType, | 1340 google_breakpad::ExceptionHandler::HANDLER_ALL, kLargerDumpType, |
1342 pipe_name.c_str(), GetCustomInfo(exe_path)); | 1341 pipe_name.c_str(), GetCustomInfo(exe_path)); |
1343 return breakpad; | 1342 return breakpad; |
1344 } | 1343 } |
1345 | 1344 |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1592 | 1591 |
1593 if (proceed_with_installation) { | 1592 if (proceed_with_installation) { |
1594 base::FilePath prefs_source_path(cmd_line.GetSwitchValueNative( | 1593 base::FilePath prefs_source_path(cmd_line.GetSwitchValueNative( |
1595 switches::kInstallerData)); | 1594 switches::kInstallerData)); |
1596 install_status = InstallOrUpdateProduct( | 1595 install_status = InstallOrUpdateProduct( |
1597 original_state, installer_state, cmd_line.GetProgram(), | 1596 original_state, installer_state, cmd_line.GetProgram(), |
1598 uncompressed_archive, temp_path.path(), src_path, prefs_source_path, | 1597 uncompressed_archive, temp_path.path(), src_path, prefs_source_path, |
1599 prefs, *installer_version); | 1598 prefs, *installer_version); |
1600 | 1599 |
1601 int install_msg_base = IDS_INSTALL_FAILED_BASE; | 1600 int install_msg_base = IDS_INSTALL_FAILED_BASE; |
1602 string16 chrome_exe; | 1601 base::string16 chrome_exe; |
1603 string16 quoted_chrome_exe; | 1602 base::string16 quoted_chrome_exe; |
1604 if (install_status == SAME_VERSION_REPAIR_FAILED) { | 1603 if (install_status == SAME_VERSION_REPAIR_FAILED) { |
1605 if (installer_state.FindProduct(BrowserDistribution::CHROME_FRAME)) { | 1604 if (installer_state.FindProduct(BrowserDistribution::CHROME_FRAME)) { |
1606 install_msg_base = IDS_SAME_VERSION_REPAIR_FAILED_CF_BASE; | 1605 install_msg_base = IDS_SAME_VERSION_REPAIR_FAILED_CF_BASE; |
1607 } else { | 1606 } else { |
1608 install_msg_base = IDS_SAME_VERSION_REPAIR_FAILED_BASE; | 1607 install_msg_base = IDS_SAME_VERSION_REPAIR_FAILED_BASE; |
1609 } | 1608 } |
1610 } else if (install_status != INSTALL_FAILED) { | 1609 } else if (install_status != INSTALL_FAILED) { |
1611 if (installer_state.target_path().empty()) { | 1610 if (installer_state.target_path().empty()) { |
1612 // If we failed to construct install path, it means the OS call to | 1611 // If we failed to construct install path, it means the OS call to |
1613 // get %ProgramFiles% or %AppData% failed. Report this as failure. | 1612 // get %ProgramFiles% or %AppData% failed. Report this as failure. |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1652 prefs.GetBool(master_preferences::kDoNotLaunchChrome, | 1651 prefs.GetBool(master_preferences::kDoNotLaunchChrome, |
1653 &do_not_launch_chrome); | 1652 &do_not_launch_chrome); |
1654 if (!system_install && !do_not_launch_chrome) | 1653 if (!system_install && !do_not_launch_chrome) |
1655 chrome_install->LaunchChrome(installer_state.target_path()); | 1654 chrome_install->LaunchChrome(installer_state.target_path()); |
1656 } | 1655 } |
1657 } else if ((install_status == NEW_VERSION_UPDATED) || | 1656 } else if ((install_status == NEW_VERSION_UPDATED) || |
1658 (install_status == IN_USE_UPDATED)) { | 1657 (install_status == IN_USE_UPDATED)) { |
1659 const Product* chrome = installer_state.FindProduct( | 1658 const Product* chrome = installer_state.FindProduct( |
1660 BrowserDistribution::CHROME_BROWSER); | 1659 BrowserDistribution::CHROME_BROWSER); |
1661 if (chrome != NULL) { | 1660 if (chrome != NULL) { |
1662 DCHECK_NE(chrome_exe, string16()); | 1661 DCHECK_NE(chrome_exe, base::string16()); |
1663 RemoveChromeLegacyRegistryKeys(chrome->distribution(), chrome_exe); | 1662 RemoveChromeLegacyRegistryKeys(chrome->distribution(), chrome_exe); |
1664 } | 1663 } |
1665 } | 1664 } |
1666 | 1665 |
1667 if (prefs.install_chrome_app_launcher() && | 1666 if (prefs.install_chrome_app_launcher() && |
1668 InstallUtil::GetInstallReturnCode(install_status) == 0) { | 1667 InstallUtil::GetInstallReturnCode(install_status) == 0) { |
1669 std::string webstore_item(google_update::GetUntrustedDataValue( | 1668 std::string webstore_item(google_update::GetUntrustedDataValue( |
1670 kInstallFromWebstore)); | 1669 kInstallFromWebstore)); |
1671 if (!webstore_item.empty()) { | 1670 if (!webstore_item.empty()) { |
1672 bool success = InstallFromWebstore(webstore_item); | 1671 bool success = InstallFromWebstore(webstore_item); |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1885 // Call the newly updated setup.exe with kUncompressedArchive and | 1884 // Call the newly updated setup.exe with kUncompressedArchive and |
1886 // kMigrateChromeFrame to perform the migration. | 1885 // kMigrateChromeFrame to perform the migration. |
1887 LaunchChromeFrameMigrationProcess(*chrome_frame_state, cmd_line, | 1886 LaunchChromeFrameMigrationProcess(*chrome_frame_state, cmd_line, |
1888 installer_directory, system_install); | 1887 installer_directory, system_install); |
1889 } | 1888 } |
1890 | 1889 |
1891 VLOG(1) << "Installation complete, returning: " << return_code; | 1890 VLOG(1) << "Installation complete, returning: " << return_code; |
1892 | 1891 |
1893 return return_code; | 1892 return return_code; |
1894 } | 1893 } |
OLD | NEW |