home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2007 June / PCpro_2007_06.ISO / files / heftdateien / firefox / editcss0.3.5.xpi / install.js < prev    next >
Encoding:
JavaScript  |  2006-02-08  |  5.0 KB  |  140 lines

  1. // This code is heavily inspired by Chris Pederick (useragentswitcher) install.js
  2. var contentFlag         = CONTENT | PROFILE_CHROME;
  3. var localeFlag          = LOCALE | PROFILE_CHROME;
  4. var skinFlag            = SKIN | PROFILE_CHROME;
  5.  
  6. var displayName         = "EditCSS"; // The name displayed to the user (don't include the version)
  7. var version             = "0.3.5";
  8.  
  9. var name                = "editcss"; // The leafname of the JAR file (without the .jar part)
  10. var jarName             = name + ".jar";
  11.  
  12. // Comment out one of the following two lines depending on your package structure.
  13. var jarFolder           = "content/" + name + "/"
  14. //var jarFolder           = "content/"
  15.  
  16. var error               = null;
  17.  
  18. var folder              = getFolder("Profile", "chrome");
  19. var prefFolder          = getFolder(getFolder("Program", "defaults"), "pref");
  20. var compFolder          = getFolder("Components");
  21. var searchFolder        = getFolder("Plugins");
  22.  
  23. var locales             = new Array( "en-US", "fr-FR", "it-IT", "cs-CZ" );
  24. var skins               = new Array( "classic" );
  25. var prefs               = new Array(  ); // "myprefs.js"
  26. var components          = new Array(  );
  27. var searchPlugins       = new Array(  );
  28.  
  29. var existsInApplication = File.exists(getFolder(getFolder("chrome"), jarName));
  30. var existsInProfile     = File.exists(getFolder(folder, jarName));
  31.  
  32. // Mozilla Suite/Seamonkey stores all pref files in a single directory
  33. // under the application directory.  If the name of the preference file(s)
  34. // is/are not unique enough, you may override other extension preferences.
  35. // set this to true if you need to prevent this.
  36. var disambiguatePrefs   = true;
  37.  
  38. // If the extension exists in the application folder or it doesn't exist
  39. // in the profile folder and the user doesn't want it installed to the
  40. // profile folder
  41. if(existsInApplication ||
  42.     (!existsInProfile &&
  43.       !confirm( "Do you want to install the " + displayName +
  44.                 " extension into your profile folder?\n" +
  45.                 "(Cancel will install into the application folder)")))
  46. {
  47.     contentFlag = CONTENT | DELAYED_CHROME;
  48.     folder      = getFolder("chrome");
  49.     localeFlag  = LOCALE | DELAYED_CHROME;
  50.     skinFlag    = SKIN | DELAYED_CHROME;
  51. }
  52.  
  53. initInstall(displayName, name, version);
  54. setPackageFolder(folder);
  55. error = addFile(name, version, "chrome/" + jarName, folder, null);
  56.  
  57. // If adding the JAR file succeeded
  58. if(error == SUCCESS)
  59. {
  60.     folder = getFolder(folder, jarName);
  61.  
  62.     registerChrome(contentFlag, folder, jarFolder);
  63.     for (var i = 0; i < locales.length; i++) {
  64. // Comment out one of the following two lines depending on your package structure.
  65. //      registerChrome(localeFlag, folder, "locale/" + locales[i] + "/");
  66.         registerChrome(localeFlag, folder, "locale/" + locales[i] + "/" + name + "/");
  67.     }
  68.  
  69.     for (var i = 0; i < skins.length; i++) {
  70. // Comment out one of the following two lines depending on your package structure.
  71. //      registerChrome(skinFlag, folder, "skin/" + skins[i] + "/");
  72.         registerChrome(skinFlag, folder, "skin/" + skins[i] + "/" + name + "/");
  73.     }
  74.  
  75.     for (var i = 0; i < prefs.length; i++) {
  76.         if (!disambiguatePrefs) {
  77.             addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
  78.                 prefFolder, prefs[i], true);
  79.         } else {
  80.             addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
  81.                 prefFolder, name + "-" + prefs[i], true);
  82.         }
  83.     }
  84.  
  85.     for (var i = 0; i < components.length; i++) {
  86.         addFile(name + " Components", version, "components/" + components[i],
  87.             compFolder, components[i], true);
  88.     }
  89.  
  90.     for (var i = 0; i < searchPlugins.length; i++) {
  91.         addFile(name + " searchPlugins", version, "searchplugins/" + searchPlugins[i],
  92.             searchFolder, searchPlugins[i], true);
  93.     }
  94.  
  95.     error = performInstall();
  96.  
  97.     // If the install failed
  98.     if(error != SUCCESS && error != REBOOT_NEEDED)
  99.     {
  100.         displayError(error);
  101.         cancelInstall(error);
  102.     }
  103.     else
  104.     {
  105.         alert("The installation of the " + displayName + " extension succeeded.");
  106.     }
  107. }
  108. else
  109. {
  110.     displayError(error);
  111.     cancelInstall(error);
  112. }
  113.  
  114. // Displays the error message to the user
  115. function displayError(error)
  116. {
  117.     // If the error code was -215
  118.     if(error == READ_ONLY)
  119.     {
  120.         alert("The installation of " + displayName +
  121.             " failed.\nOne of the files being overwritten is read-only.");
  122.     }
  123.     // If the error code was -235
  124.     else if(error == INSUFFICIENT_DISK_SPACE)
  125.     {
  126.         alert("The installation of " + displayName +
  127.             " failed.\nThere is insufficient disk space.");
  128.     }
  129.     // If the error code was -239
  130.     else if(error == CHROME_REGISTRY_ERROR)
  131.     {
  132.         alert("The installation of " + displayName +
  133.             " failed.\nChrome registration failed.");
  134.     }
  135.     else
  136.     {
  137.         alert("The installation of " + displayName +
  138.             " failed.\nThe error code is: " + error);
  139.     }
  140. }