Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / chrome / installer / gcapi_mac / gcapi_example_client.mm
blob9c698cd56b8ccebeff722234dbbda1856593fd5d
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
3 // found in the LICENSE file.
5 #include "chrome/installer/gcapi_mac/gcapi.h"
7 #import <Foundation/Foundation.h>
8 #include <getopt.h>
10 #include <string>
12 void Usage() {
13   fprintf(stderr,
14 "usage: gcapi_example [options]\n"
15 "\n"
16 "options:\n"
17 "  --criteria-check    exit after criteria check\n"
18 "  --force-reinstall   delete Google Chrome from Applications first\n"
19 "  --install <path>    copy <path> to /Applications/Google Chrome.app, set up\n"
20 "  --brand <CODE>      set brandcode to <CODE> during installation\n"
21 "  --launch            launch Google Chrome when all is done\n"
22 "  --help              print this message\n"
26 int main(int argc, char* argv[]) {
27   const option kLongOptions[] = {
28     { "criteria-check", no_argument, NULL, 'c' },
29     { "force-reinstall", no_argument, NULL, 'r' },
30     { "install", required_argument, NULL, 'i' },
31     { "brand", required_argument, NULL, 'b' },
32     { "launch", no_argument, NULL, 'l' },
33     { "help", no_argument, NULL, 'h' },
34     { NULL, 0, NULL, 0 }
35   };
37   std::string source_path;
38   std::string brand_code;
39   bool check_only = false;
40   bool reinstall = false;
41   bool launch = false;
42   int opt;
43   while ((opt = getopt_long(argc, argv, "cri:b:lh", kLongOptions, NULL))
44          != -1) {
45     switch (opt) {
46       case 'c':
47         check_only = true;
48         break;
49       case 'r':
50         reinstall = true;
51         break;
52       case 'i':
53         source_path = optarg;
54         break;
55       case 'b':
56         brand_code = optarg;
57         break;
58       case 'l':
59         launch = true;
60         break;
61       case 'h':
62       default:
63         Usage();
64         return 1;
65     }
66   }
68   if (reinstall) {
69     [[NSFileManager defaultManager]
70         removeItemAtPath:@"/Applications/Google Chrome.app" error:nil];
71   }
73   unsigned reasons;
74   int can_install = GoogleChromeCompatibilityCheck(&reasons);
75   NSLog(@"can_install: %d, reasons %x", can_install, reasons);
76   if (check_only)
77     return 0;
79   if (can_install && !source_path.empty()) {
80     int install_result = InstallGoogleChrome(
81         source_path.c_str(),
82         brand_code.empty() ? NULL : brand_code.c_str(),
83         NULL, 0);
84     NSLog(@"install result: %d", install_result);
85   }
87   if (launch)
88     LaunchGoogleChrome();