home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2006 March / PCWMAR06.iso / Software / FromTheMag / Noscript / noscript-1.1.3.5-fx+mz.xpi / install.js < prev    next >
Encoding:
Text File  |  2005-12-08  |  3.6 KB  |  99 lines

  1. const APP_DISPLAY_NAME = "NoScript";
  2. const APP_NAME = "noscript";
  3. const APP_PACKAGE = "/informaction/noscript";
  4. const APP_VERSION = "1.1.3.5";
  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","en-US"
  13.   ];
  14.  
  15. const APP_SUCCESS_MESSAGE = APP_DISPLAY_NAME+" should now be available when you restart Mozilla.";
  16.  
  17. const INST_TO_PROFILE = "Do you wish to install "+APP_DISPLAY_NAME+" to your profile?\nThis will mean it does not need reinstalling when you update Mozilla.\n(Click Cancel if you want "+APP_DISPLAY_NAME+" installing to the Mozilla directory.)";
  18.  
  19. var instToProfile = true;
  20.  
  21. myPerformInstall(false);
  22.  
  23. function myPerformInstall(secondTry) {
  24.   
  25.   var err;
  26.   initInstall(APP_NAME, APP_PACKAGE, APP_VERSION);
  27.   
  28.   if(!secondTry) {  
  29.     // profile installs only work since 2003-03-06
  30.     instToProfile = (buildID>2003030600 && confirm(INST_TO_PROFILE));
  31.   }
  32.   
  33.   var chromef = instToProfile ? getFolder("Profile", "chrome") : getFolder("chrome");
  34.   err = addFile(APP_PACKAGE, APP_VERSION, "chrome/" + APP_JAR_FILE, chromef, null);
  35.   
  36.   if(APP_PREFS_FILE && (err == SUCCESS) ) {
  37.     const prefDirs=[
  38.       getFolder(getFolder("Profile"),"pref"),
  39.       getFolder(getFolder(getFolder("Program"),"defaults"),"pref")
  40.       ];
  41.     for(var j=prefDirs.length; j-->0;) {
  42.       var prefDir=prefDirs[j];
  43.       if(!File.exists(prefDir)) {
  44.         File.dirCreate(prefDir);
  45.       }
  46.       err = addFile(APP_PACKAGE, APP_VERSION,  APP_PREFS_FILE, prefDir, null, true);
  47.       logComment("Adding "+APP_PREFS_FILE+" in "+prefDir+": exit code = "+err);
  48.     }
  49.   }
  50.   
  51.   if(err == SUCCESS) {
  52.     var jar = getFolder(chromef, APP_JAR_FILE);
  53.     const chromeFlag=instToProfile?PROFILE_CHROME:DELAYED_CHROME;
  54.   
  55.     registerChrome(CONTENT | chromeFlag, jar, APP_CONTENT_FOLDER);
  56.     var localesCount=APP_LOCALES.length;
  57.     if(localesCount>0) {
  58.       registerChrome(LOCALE | chromeFlag, jar, "content/noscript/"+APP_LOCALES[--localesCount]+"/");
  59.       while(localesCount-- >0) {
  60.         registerChrome(LOCALE  | chromeFlag, jar, "locale/"+APP_LOCALES[localesCount]+"/noscript/");
  61.       }
  62.     }
  63.     registerChrome(SKIN | chromeFlag, jar, "skin/classic/noscript/");
  64.     
  65.     
  66.     if(APP_XPCOM_SERVICE) {
  67.       var componentsDir = getFolder("Components");
  68.       addFile(APP_PACKAGE,APP_VERSION, APP_XPCOM_SERVICE, componentsDir, null, true);
  69.       addFile(APP_NAME, "components/.autoreg", getFolder("Program"), "");
  70.     }
  71.     
  72.     err = performInstall();
  73.     if(err == -239 && !secondTry) {
  74.       alert("Chrome registration problem, maybe transient, retrying...");
  75.       cancelInstall(err);
  76.       myPerformInstall(true);
  77.       return;
  78.     }
  79.     if(err == SUCCESS || err == 999) {
  80.       alert(APP_DISPLAY_NAME+" "+APP_VERSION+" has been succesfully installed.\n"+APP_SUCCESS_MESSAGE);
  81.     } else {
  82.       var msg = "Install failed!!! Error code:" + err;
  83.  
  84.       if(err == -239) {
  85.         msg += "\nThis specific error is usually transient:"
  86.           +"\nif you retry to install again, it will probably go away."
  87.       }
  88.  
  89.       alert(msg);
  90.       cancelInstall(err);
  91.     }
  92.   } else {
  93.     alert("Failed to create " +APP_JAR_FILE +"\n"
  94.       +"You probably don't have appropriate permissions \n"
  95.       +"(write access to your profile or chrome directory). \n"
  96.       +"_____________________________\nError code:" + err);
  97.     cancelInstall(err);
  98.   }
  99. }