Home | History | Annotate | Download | only in gcapi_mac
      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.
      4 
      5 #include "chrome/installer/gcapi_mac/gcapi.h"
      6 
      7 #import <Foundation/Foundation.h>
      8 #include <getopt.h>
      9 
     10 #include <string>
     11 
     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"
     23 );
     24 }
     25 
     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   };
     36 
     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   }
     67 
     68   if (reinstall) {
     69     [[NSFileManager defaultManager]
     70         removeItemAtPath:@"/Applications/Google Chrome.app" error:nil];
     71   }
     72 
     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;
     78 
     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   }
     86 
     87   if (launch)
     88     LaunchGoogleChrome();
     89 }
     90