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 <comdef.h> | 5 #include <comdef.h> |
6 #include <iomanip> | 6 #include <iomanip> |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <winspool.h> | 8 #include <winspool.h> |
9 #include <setupapi.h> // Must be included after windows.h | 9 #include <setupapi.h> // Must be included after windows.h |
10 | 10 |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 // We don't support XP service pack 2 or older. | 384 // We don't support XP service pack 2 or older. |
385 base::win::Version version = base::win::GetVersion(); | 385 base::win::Version version = base::win::GetVersion(); |
386 return (version > base::win::VERSION_XP) || | 386 return (version > base::win::VERSION_XP) || |
387 ((version == base::win::VERSION_XP) && | 387 ((version == base::win::VERSION_XP) && |
388 (base::win::OSInfo::GetInstance()->service_pack().major >= 3)); | 388 (base::win::OSInfo::GetInstance()->service_pack().major >= 3)); |
389 } | 389 } |
390 | 390 |
391 HRESULT RegisterVirtualDriver(const base::FilePath& install_path) { | 391 HRESULT RegisterVirtualDriver(const base::FilePath& install_path) { |
392 HRESULT result = S_OK; | 392 HRESULT result = S_OK; |
393 | 393 |
394 DCHECK(file_util::DirectoryExists(install_path)); | 394 DCHECK(base::DirectoryExists(install_path)); |
395 if (!IsOSSupported()) { | 395 if (!IsOSSupported()) { |
396 LOG(ERROR) << "Requires XP SP3 or later."; | 396 LOG(ERROR) << "Requires XP SP3 or later."; |
397 return HRESULT_FROM_WIN32(ERROR_OLD_WIN_VERSION); | 397 return HRESULT_FROM_WIN32(ERROR_OLD_WIN_VERSION); |
398 } | 398 } |
399 | 399 |
400 result = InstallDriver(install_path); | 400 result = InstallDriver(install_path); |
401 if (FAILED(result)) { | 401 if (FAILED(result)) { |
402 LOG(ERROR) << "Unable to install driver."; | 402 LOG(ERROR) << "Unable to install driver."; |
403 return result; | 403 return result; |
404 } | 404 } |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 HRESULT DoRegister(const base::FilePath& install_path) { | 470 HRESULT DoRegister(const base::FilePath& install_path) { |
471 HRESULT result = UnregisterVirtualDriver(); | 471 HRESULT result = UnregisterVirtualDriver(); |
472 if (FAILED(result)) | 472 if (FAILED(result)) |
473 return result; | 473 return result; |
474 return RegisterVirtualDriver(install_path); | 474 return RegisterVirtualDriver(install_path); |
475 } | 475 } |
476 | 476 |
477 HRESULT DoDelete(const base::FilePath& install_path) { | 477 HRESULT DoDelete(const base::FilePath& install_path) { |
478 if (install_path.value().empty()) | 478 if (install_path.value().empty()) |
479 return E_INVALIDARG; | 479 return E_INVALIDARG; |
480 if (!file_util::DirectoryExists(install_path)) | 480 if (!base::DirectoryExists(install_path)) |
481 return S_FALSE; | 481 return S_FALSE; |
482 Sleep(5000); // Give parent some time to exit. | 482 Sleep(5000); // Give parent some time to exit. |
483 return base::Delete(install_path, true) ? S_OK : E_FAIL; | 483 return base::Delete(install_path, true) ? S_OK : E_FAIL; |
484 } | 484 } |
485 | 485 |
486 HRESULT DoInstall(const base::FilePath& install_path) { | 486 HRESULT DoInstall(const base::FilePath& install_path) { |
487 HRESULT result = UnregisterVirtualDriver(); | 487 HRESULT result = UnregisterVirtualDriver(); |
488 if (FAILED(result)) { | 488 if (FAILED(result)) { |
489 LOG(ERROR) << "Unable to unregister."; | 489 LOG(ERROR) << "Unable to unregister."; |
490 return result; | 490 return result; |
491 } | 491 } |
492 base::FilePath old_install_path = GetInstallLocation(kUninstallId); | 492 base::FilePath old_install_path = GetInstallLocation(kUninstallId); |
493 if (!old_install_path.value().empty() && | 493 if (!old_install_path.value().empty() && |
494 install_path != old_install_path) { | 494 install_path != old_install_path) { |
495 if (file_util::DirectoryExists(old_install_path)) | 495 if (base::DirectoryExists(old_install_path)) |
496 base::Delete(old_install_path, true); | 496 base::Delete(old_install_path, true); |
497 } | 497 } |
498 CreateUninstallKey(kUninstallId, LoadLocalString(IDS_DRIVER_NAME), | 498 CreateUninstallKey(kUninstallId, LoadLocalString(IDS_DRIVER_NAME), |
499 kUninstallSwitch); | 499 kUninstallSwitch); |
500 result = RegisterVirtualDriver(install_path); | 500 result = RegisterVirtualDriver(install_path); |
501 if (FAILED(result)) | 501 if (FAILED(result)) |
502 return result; | 502 return result; |
503 SetGoogleUpdateKeys(kGoogleUpdateProductId, kNameValue); | 503 SetGoogleUpdateKeys(kGoogleUpdateProductId, kNameValue); |
504 return result; | 504 return result; |
505 } | 505 } |
506 | 506 |
507 HRESULT ExecuteCommands() { | 507 HRESULT ExecuteCommands() { |
508 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 508 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
509 | 509 |
510 base::FilePath exe_path; | 510 base::FilePath exe_path; |
511 if (FAILED(PathService::Get(base::DIR_EXE, &exe_path)) || | 511 if (FAILED(PathService::Get(base::DIR_EXE, &exe_path)) || |
512 !file_util::DirectoryExists(exe_path)) { | 512 !base::DirectoryExists(exe_path)) { |
513 return HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND); | 513 return HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND); |
514 } | 514 } |
515 | 515 |
516 if (command_line.HasSwitch(kDelete)) { | 516 if (command_line.HasSwitch(kDelete)) { |
517 return DoDelete(command_line.GetSwitchValuePath(kDelete)); | 517 return DoDelete(command_line.GetSwitchValuePath(kDelete)); |
518 } else if (command_line.HasSwitch(kUninstallSwitch)) { | 518 } else if (command_line.HasSwitch(kUninstallSwitch)) { |
519 return DoUninstall(); | 519 return DoUninstall(); |
520 } else if (command_line.HasSwitch(kInstallSwitch)) { | 520 } else if (command_line.HasSwitch(kInstallSwitch)) { |
521 return DoInstall(exe_path); | 521 return DoInstall(exe_path); |
522 } else if (command_line.HasSwitch(kUnregisterSwitch)) { | 522 } else if (command_line.HasSwitch(kUnregisterSwitch)) { |
(...skipping 20 matching lines...) Expand all Loading... |
543 LOG(INFO) << _com_error(retval).ErrorMessage() << " HRESULT=0x" << | 543 LOG(INFO) << _com_error(retval).ErrorMessage() << " HRESULT=0x" << |
544 std::setbase(16) << retval; | 544 std::setbase(16) << retval; |
545 | 545 |
546 // Installer is silent by default as required by Google Update. | 546 // Installer is silent by default as required by Google Update. |
547 if (CommandLine::ForCurrentProcess()->HasSwitch("verbose")) { | 547 if (CommandLine::ForCurrentProcess()->HasSwitch("verbose")) { |
548 cloud_print::DisplayWindowsMessage(NULL, retval, | 548 cloud_print::DisplayWindowsMessage(NULL, retval, |
549 cloud_print::LoadLocalString(IDS_DRIVER_NAME)); | 549 cloud_print::LoadLocalString(IDS_DRIVER_NAME)); |
550 } | 550 } |
551 return retval; | 551 return retval; |
552 } | 552 } |
OLD | NEW |