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 #include "chrome/browser/chrome_browser_main_win.h" | 5 #include "chrome/browser/chrome_browser_main_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <shellapi.h> | 8 #include <shellapi.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 351 // system-level Chrome instead. | 351 // system-level Chrome instead. |
| 352 const string16 text = | 352 const string16 text = |
| 353 l10n_util::GetStringUTF16(IDS_MACHINE_LEVEL_INSTALL_CONFLICT); | 353 l10n_util::GetStringUTF16(IDS_MACHINE_LEVEL_INSTALL_CONFLICT); |
| 354 const string16 caption = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME); | 354 const string16 caption = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME); |
| 355 const UINT flags = MB_OK | MB_ICONERROR | MB_TOPMOST; | 355 const UINT flags = MB_OK | MB_ICONERROR | MB_TOPMOST; |
| 356 ui::MessageBox(NULL, text, caption, flags); | 356 ui::MessageBox(NULL, text, caption, flags); |
| 357 } | 357 } |
| 358 CommandLine uninstall_cmd( | 358 CommandLine uninstall_cmd( |
| 359 InstallUtil::GetChromeUninstallCmd(false, dist->GetType())); | 359 InstallUtil::GetChromeUninstallCmd(false, dist->GetType())); |
| 360 if (!uninstall_cmd.GetProgram().empty()) { | 360 if (!uninstall_cmd.GetProgram().empty()) { |
| 361 uninstall_cmd.AppendSwitch(installer::switches::kSelfDestruct); | |
| 361 uninstall_cmd.AppendSwitch(installer::switches::kForceUninstall); | 362 uninstall_cmd.AppendSwitch(installer::switches::kForceUninstall); |
| 362 uninstall_cmd.AppendSwitch( | 363 uninstall_cmd.AppendSwitch( |
| 363 installer::switches::kDoNotRemoveSharedItems); | 364 installer::switches::kDoNotRemoveSharedItems); |
| 364 base::LaunchOptions launch_options; | 365 |
| 366 const FilePath setup_exe(uninstall_cmd.GetProgram()); | |
| 367 const string16 params(uninstall_cmd.GetArgumentsString()); | |
| 368 | |
| 369 SHELLEXECUTEINFO sei = { sizeof(sei) }; | |
|
grt (UTC plus 2)
2013/01/02 17:59:33
For safety, I think you need:
sei.fMask =
gab
2013/01/02 21:15:48
Done.
| |
| 370 sei.nShow = SW_SHOWNORMAL; | |
| 371 sei.lpFile = setup_exe.value().c_str(); | |
| 372 sei.lpParameters = params.c_str(); | |
|
grt (UTC plus 2)
2013/01/02 17:59:33
MSDN says that quotes in lpParameters must be quot
gab
2013/01/02 21:15:48
Interesting, if this is ever a problem (and if it
grt (UTC plus 2)
2013/01/03 15:41:27
Yup. Wasn't suggesting that this was the place, ju
| |
| 373 // On Windows 8 SEE_MASK_FLAG_LOG_USAGE is necessary to guarantee we | |
| 374 // flip to the Desktop when launching. | |
| 365 if (is_metro) | 375 if (is_metro) |
| 366 launch_options.force_breakaway_from_job_ = true; | 376 sei.fMask = SEE_MASK_FLAG_LOG_USAGE; |
|
grt (UTC plus 2)
2013/01/02 17:59:33
= -> |=
gab
2013/01/02 21:15:48
Done.
| |
| 367 base::LaunchProcess(uninstall_cmd, launch_options, NULL); | 377 |
| 378 if (!::ShellExecuteExW(&sei)) | |
|
grt (UTC plus 2)
2013/01/02 17:59:33
nit: please remove the trailing 'W'
grt (UTC plus 2)
2013/01/02 17:59:33
MSDN suggests that COM should always be initialize
robertshield
2013/01/02 19:36:06
This should be fine.
gab
2013/01/02 21:15:48
Done.
gab
2013/01/02 21:15:48
Ack.
| |
| 379 NOTREACHED(); | |
|
grt (UTC plus 2)
2013/01/02 17:59:33
DPCHECK(false); so that the last-error code is log
gab
2013/01/02 21:15:48
Done.
| |
| 368 } | 380 } |
| 369 return true; | 381 return true; |
| 370 } | 382 } |
| 371 } | 383 } |
| 372 return false; | 384 return false; |
| 373 } | 385 } |
| 374 | 386 |
| 375 string16 TranslationDelegate::GetLocalizedString(int installer_string_id) { | 387 string16 TranslationDelegate::GetLocalizedString(int installer_string_id) { |
| 376 int resource_id = 0; | 388 int resource_id = 0; |
| 377 switch (installer_string_id) { | 389 switch (installer_string_id) { |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 389 if (resource_id) | 401 if (resource_id) |
| 390 return l10n_util::GetStringUTF16(resource_id); | 402 return l10n_util::GetStringUTF16(resource_id); |
| 391 return string16(); | 403 return string16(); |
| 392 } | 404 } |
| 393 | 405 |
| 394 // static | 406 // static |
| 395 void ChromeBrowserMainPartsWin::SetupInstallerUtilStrings() { | 407 void ChromeBrowserMainPartsWin::SetupInstallerUtilStrings() { |
| 396 CR_DEFINE_STATIC_LOCAL(TranslationDelegate, delegate, ()); | 408 CR_DEFINE_STATIC_LOCAL(TranslationDelegate, delegate, ()); |
| 397 installer::SetTranslationDelegate(&delegate); | 409 installer::SetTranslationDelegate(&delegate); |
| 398 } | 410 } |
| OLD | NEW |