home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2008 November / PCWNOV08.iso / Software / Freeware / NoScript 1.7.7 / noscript-1.7.7-fx+mz+sm.xpi / install.js < prev    next >
Encoding:
Text File  |  2008-07-14  |  4.7 KB  |  124 lines

  1. const APP_DISPLAY_NAME = "NoScript";
  2. const APP_NAME = "noscript";
  3. const APP_PACKAGE = "/informaction/noscript";
  4. const APP_VERSION = "1.7.7";
  5.  
  6. const APP_PREFS_FILE="defaults/preferences/noscript.js";
  7. const APP_XPCOM_SERVICE="components/noscriptService.js";
  8. const APP_JAR_FILE = "noscript.jar";
  9. const APP_CONTENT_FOLDER = "content/noscript/";
  10. const APP_LOCALES = [
  11.   "es-ES","cs-CZ","pl-PL","ja-JP","ca-AD","pt-PT","pt-BR","de-DE","nb-NO",
  12.   "fi-FI","fr-FR","it-IT","nl-NL","tr-TR","zh-CN","ru-RU","bg-BG","ro-RO",
  13.   "uk-UA", "th-TH", "fa-IR", "el-GR", "hr-HR", "he-IL", "be-BY", "vi-VN",
  14.   "sk-SK", "hu-HU", "mk-MK", "da-DK", "sv-SE", "lt-LT", "zh-TW", // "sr-YU",
  15.   "id-ID", "es-AR", "ar", "de-AT", "ko-KR", "et-EE", // "sl-SI",
  16.   "en-US"
  17.   ];
  18.  
  19. const APP_SUCCESS_MESSAGE = APP_DISPLAY_NAME + " should now be available when you restart the browser.";
  20.  
  21. const INST_TO_PROFILE = "Do you wish to install " + APP_DISPLAY_NAME + 
  22.   " to your profile?\nIf you are in doubt, this is the preferred option: click OK.\n(Click Cancel if you want " + 
  23.   APP_DISPLAY_NAME + " installing to the Mozilla directory.)";
  24.  
  25. var instToProfile = true;
  26.  
  27. myPerformInstall(false);
  28.  
  29. function myPerformInstall(secondTry) {
  30.   
  31.   
  32.   
  33.   var err;
  34.   initInstall(APP_NAME, APP_PACKAGE, APP_VERSION);
  35.   
  36.   function checkChrome(folder) {
  37.     var chrome = getFolder(folder, APP_JAR_FILE);
  38.     if (chrome && File.isDirectory(chrome))
  39.       File.dirRemove(chrome);
  40.     return !chrome || !File.isDirectory(chrome); 
  41.   }
  42.   if(!secondTry) {  
  43.     // profile installs only work since 2003-03-06
  44.     instToProfile = checkChrome(getFolder("Profile", "chrome")) ||
  45.       (!checkChrome(getFolder("chrome")) && 
  46.         buildID > 2003030600 && !!confirm(INST_TO_PROFILE));
  47.   }
  48.  
  49.   var chromef = instToProfile ? getFolder("Profile", "chrome") : getFolder("chrome");
  50.   err = addFile(APP_PACKAGE, APP_VERSION, "chrome/" + APP_JAR_FILE, chromef, null);
  51.   
  52.   if(APP_PREFS_FILE && (err == SUCCESS) ) {
  53.     const prefDirs=[
  54.       getFolder(getFolder("Profile"),"pref"),
  55.       getFolder(getFolder(getFolder("Program"),"defaults"),"pref")
  56.       ];
  57.     for(var j = prefDirs.length; j-->0;) {
  58.       var prefDir = prefDirs[j];
  59.       if(!File.exists(prefDir)) {
  60.         File.dirCreate(prefDir);
  61.       }
  62.       err = addFile(APP_PACKAGE, APP_VERSION,  APP_PREFS_FILE, prefDir, null, true);
  63.       logComment("Adding "+APP_PREFS_FILE+" in "+prefDir+": exit code = "+err);
  64.     }
  65.   }
  66.   
  67.   if(err == SUCCESS) {
  68.     var jar = getFolder(chromef, APP_JAR_FILE);
  69.     const chromeFlag = instToProfile ? PROFILE_CHROME : DELAYED_CHROME;
  70.   
  71.     registerChrome(CONTENT | chromeFlag, jar, APP_CONTENT_FOLDER);
  72.     var localesCount=APP_LOCALES.length;
  73.     if(localesCount>0) {
  74.       registerChrome(LOCALE | chromeFlag, jar, "content/noscript/"+APP_LOCALES[--localesCount]+"/");
  75.       while(localesCount-- >0) {
  76.         registerChrome(LOCALE  | chromeFlag, jar, "locale/"+APP_LOCALES[localesCount]+"/noscript/");
  77.       }
  78.     }
  79.     registerChrome(SKIN | chromeFlag, jar, "skin/classic/noscript/");
  80.     
  81.     var xpcomError = SUCCESS;
  82.     if(APP_XPCOM_SERVICE) {
  83.       var componentsDir = getFolder("Components");
  84.       err = addFile(APP_NAME, ".autoreg", getFolder("Program"), "");
  85.       xpcomError = addFile(APP_PACKAGE,APP_VERSION, APP_XPCOM_SERVICE, componentsDir, null, true);
  86.     }
  87.     
  88.     err = performInstall();
  89.     if(err == -239 && !secondTry) {
  90.       alert("Chrome registration problem, maybe transient, retrying...");
  91.       cancelInstall(err);
  92.       myPerformInstall(true);
  93.       return;
  94.     }
  95.     if(err == SUCCESS || err == 999) {
  96.       if(xpcomError != SUCCESS) {
  97.         alert("*** WARNING: PARTIAL INSTALLATION ***\n" +
  98.               "A component requiring permissions to write in the SeaMonkey program directory couldn't be installed.\n"+
  99.               "You will need either to reinstall " + APP_DISPLAY_NAME + " once as Administrator / root or install SeaMonkey in an user-writable location.");
  100.         err = xpcomError;
  101.       } else {
  102.         alert(APP_DISPLAY_NAME+" "+APP_VERSION+" has been succesfully installed in your " + 
  103.           (instToProfile ? "profile" : "browser") +
  104.           ".\n" + APP_SUCCESS_MESSAGE);
  105.       }
  106.     } else {
  107.       var msg = "Install failed!!! Error code:" + err;
  108.  
  109.       if(err == -239) {
  110.         msg += "\nThis specific error is usually transient:"
  111.           +"\nif you retry to install again, it will probably go away."
  112.       }
  113.  
  114.       alert(msg);
  115.       cancelInstall(err);
  116.     }
  117.   } else {
  118.     alert("Failed to create " +APP_JAR_FILE +"\n"
  119.       +"You probably don't have appropriate permissions \n"
  120.       +"(write access to your profile or chrome directory). \n"
  121.       +"_____________________________\nError code:" + err);
  122.     cancelInstall(err);
  123.   }
  124. }