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/install.h" | 5 #include "chrome/installer/setup/install.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <shlobj.h> | 8 #include <shlobj.h> |
9 #include <time.h> | 9 #include <time.h> |
10 | 10 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 message.append("Start menu "); | 80 message.append("Start menu "); |
81 break; | 81 break; |
82 default: | 82 default: |
83 NOTREACHED(); | 83 NOTREACHED(); |
84 } | 84 } |
85 | 85 |
86 message.push_back('"'); | 86 message.push_back('"'); |
87 if (properties.has_shortcut_name()) | 87 if (properties.has_shortcut_name()) |
88 message.append(UTF16ToUTF8(properties.shortcut_name)); | 88 message.append(UTF16ToUTF8(properties.shortcut_name)); |
89 else | 89 else |
90 message.append(UTF16ToUTF8(dist->GetAppShortCutName())); | 90 message.append(UTF16ToUTF8(dist->GetDisplayName())); |
91 message.push_back('"'); | 91 message.push_back('"'); |
92 | 92 |
93 message.append(" shortcut to "); | 93 message.append(" shortcut to "); |
94 message.append(UTF16ToUTF8(properties.target.value())); | 94 message.append(UTF16ToUTF8(properties.target.value())); |
95 if (properties.has_arguments()) | 95 if (properties.has_arguments()) |
96 message.append(UTF16ToUTF8(properties.arguments)); | 96 message.append(UTF16ToUTF8(properties.arguments)); |
97 | 97 |
98 if (properties.pin_to_taskbar && | 98 if (properties.pin_to_taskbar && |
99 base::win::GetVersion() >= base::win::VERSION_WIN7) { | 99 base::win::GetVersion() >= base::win::VERSION_WIN7) { |
100 message.append(" and pinning to the taskbar."); | 100 message.append(" and pinning to the taskbar."); |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 " <SplashScreen Image='%2$ls\\splash-620x300.png'/>\r\n" | 323 " <SplashScreen Image='%2$ls\\splash-620x300.png'/>\r\n" |
324 " </VisualElements>\r\n" | 324 " </VisualElements>\r\n" |
325 "</Application>"; | 325 "</Application>"; |
326 | 326 |
327 const string16 manifest_template(ASCIIToUTF16(kManifestTemplate)); | 327 const string16 manifest_template(ASCIIToUTF16(kManifestTemplate)); |
328 | 328 |
329 BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution( | 329 BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution( |
330 BrowserDistribution::CHROME_BROWSER); | 330 BrowserDistribution::CHROME_BROWSER); |
331 // TODO(grt): http://crbug.com/75152 Write a reference to a localized | 331 // TODO(grt): http://crbug.com/75152 Write a reference to a localized |
332 // resource for |display_name|. | 332 // resource for |display_name|. |
333 string16 display_name(dist->GetAppShortCutName()); | 333 string16 display_name(dist->GetDisplayName()); |
334 EscapeXmlAttributeValueInSingleQuotes(&display_name); | 334 EscapeXmlAttributeValueInSingleQuotes(&display_name); |
335 | 335 |
336 // Fill the manifest with the desired values. | 336 // Fill the manifest with the desired values. |
337 string16 manifest16(base::StringPrintf(manifest_template.c_str(), | 337 string16 manifest16(base::StringPrintf(manifest_template.c_str(), |
338 display_name.c_str(), | 338 display_name.c_str(), |
339 elements_dir.c_str())); | 339 elements_dir.c_str())); |
340 | 340 |
341 // Write the manifest to |src_path|. | 341 // Write the manifest to |src_path|. |
342 const std::string manifest(UTF16ToUTF8(manifest16)); | 342 const std::string manifest(UTF16ToUTF8(manifest16)); |
343 if (file_util::WriteFile( | 343 if (file_util::WriteFile( |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 ShellUtil::SYSTEM_LEVEL : ShellUtil::CURRENT_USER); | 404 ShellUtil::SYSTEM_LEVEL : ShellUtil::CURRENT_USER); |
405 | 405 |
406 // |base_properties|: The basic properties to set on every shortcut installed | 406 // |base_properties|: The basic properties to set on every shortcut installed |
407 // (to be refined on a per-shortcut basis). | 407 // (to be refined on a per-shortcut basis). |
408 ShellUtil::ShortcutProperties base_properties(shortcut_level); | 408 ShellUtil::ShortcutProperties base_properties(shortcut_level); |
409 product.AddDefaultShortcutProperties(target, &base_properties); | 409 product.AddDefaultShortcutProperties(target, &base_properties); |
410 | 410 |
411 if (!do_not_create_desktop_shortcut || | 411 if (!do_not_create_desktop_shortcut || |
412 shortcut_operation == ShellUtil::SHELL_SHORTCUT_REPLACE_EXISTING) { | 412 shortcut_operation == ShellUtil::SHELL_SHORTCUT_REPLACE_EXISTING) { |
413 ShellUtil::ShortcutProperties desktop_properties(base_properties); | 413 ShellUtil::ShortcutProperties desktop_properties(base_properties); |
414 if (alternate_desktop_shortcut) | 414 if (alternate_desktop_shortcut) { |
415 desktop_properties.set_shortcut_name(dist->GetAlternateApplicationName()); | 415 desktop_properties.set_shortcut_name( |
| 416 dist->GetShortcutName( |
| 417 BrowserDistribution::SHORTCUT_CHROME_ALTERNATE)); |
| 418 } |
416 ExecuteAndLogShortcutOperation( | 419 ExecuteAndLogShortcutOperation( |
417 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist, desktop_properties, | 420 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist, desktop_properties, |
418 shortcut_operation); | 421 shortcut_operation); |
419 | 422 |
420 // On update there is no harm in always trying to update the alternate | 423 // On update there is no harm in always trying to update the alternate |
421 // Desktop shortcut. | 424 // Desktop shortcut. |
422 if (!alternate_desktop_shortcut && | 425 if (!alternate_desktop_shortcut && |
423 shortcut_operation == ShellUtil::SHELL_SHORTCUT_REPLACE_EXISTING) { | 426 shortcut_operation == ShellUtil::SHELL_SHORTCUT_REPLACE_EXISTING) { |
424 desktop_properties.set_shortcut_name(dist->GetAlternateApplicationName()); | 427 desktop_properties.set_shortcut_name( |
| 428 dist->GetShortcutName( |
| 429 BrowserDistribution::SHORTCUT_CHROME_ALTERNATE)); |
425 ExecuteAndLogShortcutOperation( | 430 ExecuteAndLogShortcutOperation( |
426 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist, desktop_properties, | 431 ShellUtil::SHORTCUT_LOCATION_DESKTOP, dist, desktop_properties, |
427 shortcut_operation); | 432 shortcut_operation); |
428 } | 433 } |
429 } | 434 } |
430 | 435 |
431 if (!do_not_create_quick_launch_shortcut || | 436 if (!do_not_create_quick_launch_shortcut || |
432 shortcut_operation == ShellUtil::SHELL_SHORTCUT_REPLACE_EXISTING) { | 437 shortcut_operation == ShellUtil::SHELL_SHORTCUT_REPLACE_EXISTING) { |
433 // There is no such thing as an all-users Quick Launch shortcut, always | 438 // There is no such thing as an all-users Quick Launch shortcut, always |
434 // install the per-user shortcut. | 439 // install the per-user shortcut. |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 if (app_host_path.empty()) | 694 if (app_host_path.empty()) |
690 return false; | 695 return false; |
691 | 696 |
692 CommandLine cmd(app_host_path); | 697 CommandLine cmd(app_host_path); |
693 cmd.AppendSwitchASCII(::switches::kInstallFromWebstore, app_code); | 698 cmd.AppendSwitchASCII(::switches::kInstallFromWebstore, app_code); |
694 VLOG(1) << "App install command: " << cmd.GetCommandLineString(); | 699 VLOG(1) << "App install command: " << cmd.GetCommandLineString(); |
695 return base::LaunchProcess(cmd, base::LaunchOptions(), NULL); | 700 return base::LaunchProcess(cmd, base::LaunchOptions(), NULL); |
696 } | 701 } |
697 | 702 |
698 } // namespace installer | 703 } // namespace installer |
OLD | NEW |