home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2006 March / maximum-cd-2006-03.iso / Software / Apps / firefox_setup_1.5.exe / browser.xpi / install.js
Encoding:
JavaScript  |  2005-11-11  |  11.1 KB  |  323 lines

  1. // this function verifies disk space in kilobytes
  2. function verifyDiskSpace(dirPath, spaceRequired)
  3. {
  4.   var spaceAvailable;
  5.  
  6.   // Get the available disk space on the given path
  7.   spaceAvailable = fileGetDiskSpaceAvailable(dirPath);
  8.  
  9.   // Convert the available disk space into kilobytes
  10.   spaceAvailable = parseInt(spaceAvailable / 1024);
  11.  
  12.   // do the verification
  13.   if(spaceAvailable < spaceRequired)
  14.   {
  15.     logComment("Insufficient disk space: " + dirPath);
  16.     logComment("  required : " + spaceRequired + " K");
  17.     logComment("  available: " + spaceAvailable + " K");
  18.     return(false);
  19.   }
  20.  
  21.   return(true);
  22. }
  23.  
  24. // this function deletes a file if it exists
  25. function deleteThisFile(dirKey, file)
  26. {
  27.   var fFileToDelete;
  28.  
  29.   fFileToDelete = getFolder(dirKey, file);
  30.   logComment("File to delete: " + fFileToDelete);
  31.   if(File.isFile(fFileToDelete))
  32.   {
  33.     File.remove(fFileToDelete);
  34.     return(true);
  35.   }
  36.   else
  37.     return(false);
  38. }
  39.  
  40. // this function deletes a folder if it exists
  41. function deleteThisFolder(dirKey, folder, recursiveDelete)
  42. {
  43.   var fToDelete;
  44.  
  45.   if(typeof recursiveDelete == "undefined")
  46.     recursiveDelete = true;
  47.  
  48.   fToDelete = getFolder(dirKey, folder);
  49.   logComment("folder to delete: " + fToDelete);
  50.   if(File.isDirectory(fToDelete))
  51.   {
  52.     File.dirRemove(fToDelete, recursiveDelete);
  53.     return(true);
  54.   }
  55.   else
  56.     return(false);
  57. }
  58.  
  59. // OS type detection
  60. // which platform?
  61. function getPlatform()
  62. {
  63.   var platformStr;
  64.   var platformNode;
  65.  
  66.   if('platform' in Install)
  67.   {
  68.     platformStr = new String(Install.platform);
  69.  
  70.     if (!platformStr.search(/^Macintosh/))
  71.       platformNode = 'mac';
  72.     else if (!platformStr.search(/^Win/))
  73.       platformNode = 'win';
  74.     else if (!platformStr.search(/^OS\/2/))
  75.       platformNode = 'win';
  76.     else
  77.       platformNode = 'unix';
  78.   }
  79.   else
  80.   {
  81.     var fOSMac  = getFolder("Mac System");
  82.     var fOSWin  = getFolder("Win System");
  83.  
  84.     logComment("fOSMac: "  + fOSMac);
  85.     logComment("fOSWin: "  + fOSWin);
  86.  
  87.     if(fOSMac != null)
  88.       platformNode = 'mac';
  89.     else if(fOSWin != null)
  90.       platformNode = 'win';
  91.     else
  92.       platformNode = 'unix';
  93.   }
  94.  
  95.   return platformNode;
  96. }
  97.  
  98. function removeOldFiles() {
  99.   deleteThisFile("Program", "chrome/US.jar");
  100.   deleteThisFile("Program", "chrome/en-win.jar");
  101.   deleteThisFile("Program", "chrome/help.jar");
  102.   deleteThisFile("Program", "chrome/chrome.rdf");
  103.   deleteThisFile("Program", "chrome/installed-chrome.txt");
  104.   deleteThisFile("Program", "chrome/app-chrome.manifest");
  105.   deleteThisFolder("Program", "chrome/overlayinfo");
  106.   deleteThisFile("Program", "defaults/pref/all.js");
  107.   deleteThisFile("Program", "defaults/pref/security-prefs.js");
  108.   deleteThisFile("Program", "defaults/pref/winpref.js");
  109.   deleteThisFile("Program", "defaults/pref/xpinstall.js");
  110.   deleteThisFile("Program", "defaults/pref/bug307259.js");
  111.   deleteThisFile("Program", "defaults/pref/bug259708.js");
  112.   deleteThisFile("Program", "defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf");
  113.   deleteThisFolder("Program", "defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}");
  114.   deleteThisFile("Program", "defaults/profile/extensions/Extensions.rdf");
  115.   deleteThisFile("Program", "defaults/profile/extensions/installed-extensions.txt");
  116.   deleteThisFolder("Program", "defaults/profile/extensions");
  117.   deleteThisFolder("Program", "defaults/profile/US");
  118.   deleteThisFile("Program", "extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}/install.rdf");
  119.   deleteThisFolder("Program", "extensions/{641d8d09-7dda-4850-8228-ac0ab65e2ac9}");
  120.   deleteThisFile("Program", "searchplugins/dictionary.src");
  121.   deleteThisFile("Program", "searchplugins/dictionary.png");
  122.   deleteThisFolder("Program", "searchplugins");
  123.   deleteThisFile("Program", "components/component.reg");
  124.   deleteThisFile("Program", "components/compreg.dat");
  125.   deleteThisFile("Program", "components/xpti.dat");
  126.   deleteThisFile("Program", "components/xptitemp.dat");
  127.   deleteThisFile("Program", "components/nsBackgroundUpdateService.js");
  128.   deleteThisFile("Program", "components/autocomplete.xpt");
  129.   deleteThisFile("Program", "zlib.dll");
  130.   deleteThisFile("Program", "components/BrandRes.dll");
  131.   deleteThisFile("Program", "components/fullsoft.dll");
  132.   deleteThisFile("Program", "components/master.ini");
  133.   deleteThisFile("Program", "components/qfaservices.dll");
  134.   deleteThisFile("Program", "components/qfaservices.xpt");
  135.   deleteThisFile("Program", "components/talkback-l10n.ini");
  136.   deleteThisFile("Program", "components/talkback.cnt");
  137.   deleteThisFile("Program", "components/talkback.exe");
  138.   deleteThisFile("Program", "components/talkback.hlp");
  139.   deleteThisFile("Program", "components/libqfaservices.so");
  140.   deleteThisFile("Program", "components/talkback/master.ini");
  141.   deleteThisFile("Program", "components/talkback/talkback");
  142.   deleteThisFile("Program", "components/talkback/talkback.so");
  143.   deleteThisFile("Program", "components/talkback/XTalkback.ad");
  144.   deleteThisFile("Program", "extensions/reporter@mozilla.org/install.rdf");
  145.   deleteThisFile("Program", "extensions/reporter@mozilla.org/chrome.manifest");
  146.   deleteThisFile("Program", "extensions/reporter@mozilla.org/chrome/reporter.jar");
  147.   deleteThisFile("Program", "extensions/reporter@mozilla.org/defaults/preferences/reporter.js");
  148. }
  149. function copyFlashXPT()
  150. {
  151.   /*
  152.    * Check if Netscape Navigator (pre 6.0) is installed and if the
  153.    * flash player is installed in Netscape's plugin folder. If it is,
  154.    * try to copy the flashplayer.xpt file into our plugins folder to
  155.    * make ensure that flash is scriptable if we're using it from
  156.    * Netscape's plugins folder.
  157.    */
  158.  
  159.   var winreg = getWinRegistry();
  160.  
  161.   winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  162.   var subkey = "Software\\Netscape\\Netscape Navigator";
  163.   var nsver = winreg.getValueString(subkey, "CurrentVersion");
  164.  
  165.   if (!nsver)
  166.     return;
  167.  
  168.   subkey += "\\" + nsver + "\\Main";
  169.  
  170.   var navPluginsDir = winreg.getValueString(subkey, "Plugins Directory");
  171.  
  172.   if (!navPluginsDir)
  173.     return;
  174.  
  175.   var navFlashXPT = getFolder("file:///", navPluginsDir + "\\flashplayer.xpt");
  176.  
  177.   if (!File.exists(navFlashXPT))
  178.     return;
  179.  
  180.   var target = getFolder("file:///", fProgram + "\\plugins\\flashplayer.xpt");
  181.  
  182.   // Copy the file flashplayer.xpt from Netscape's plugin directory to
  183.   // Firefox's plugin directory.
  184.   File.copy(navFlashXPT, target);
  185.  
  186.   logComment("Copied Flash xpt file from '" + navFlashXPT + "' to '" + target +
  187.              "'");
  188. }
  189.  
  190. function copyQuickTimeXPT()
  191. {
  192.   /*
  193.    * Check if QuickTime is installed and copy
  194.    * nsIQTScriptablePlugin.xpt from its plugins directory into our
  195.    * plugins directory. If we don't do this, QuickTime will load in
  196.    * Firefox, but it won't be scriptable.
  197.    */
  198.  
  199.   var winreg = getWinRegistry();
  200.  
  201.   winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  202.   var subkey = "Software\\Apple Computer, Inc.\\QuickTime";
  203.   var qtdir = winreg.getValueString(subkey, "InstallDir");
  204.  
  205.   if (!qtdir)
  206.     return;
  207.  
  208.   var qtXPT = getFolder("file:///",
  209.                         qtdir + "\\Plugins\\nsIQTScriptablePlugin.xpt");
  210.  
  211.   if (!File.exists(qtXPT))
  212.     return;
  213.  
  214.   var target = getFolder("file:///",
  215.                          fProgram + "\\plugins\\nsIQTScriptablePlugin.xpt");
  216.  
  217.   // Copy the file nsIQTScriptablePlugin.xpt from the QuickTime
  218.   // installation directory to Firefox's plugin directory.
  219.   File.copy(qtXPT, target);
  220.  
  221.   logComment("Copied QuickTime xpt file from '" + qtXPT + "' to '" + target +
  222.              "'");
  223. }
  224.  
  225. // main
  226. var srDest;
  227. var err;
  228. var err2;
  229. var fProgram;
  230. var fWindowsSystem;
  231. var fileComponentRegStr;
  232. var fileComponentReg;
  233. var fileToRegister;
  234. var args;
  235.  
  236. args = new String(Install.arguments);
  237. logComment("args: " + args);
  238.  
  239. srDest = 2550;
  240. err    = initInstall("Mozilla Firefox", "Firefox", "1.5"); 
  241. logComment("initInstall: " + err);
  242.  
  243. fProgram  = getFolder("Program");
  244. fWindowsSystem = getFolder("Win System");
  245. logComment("fProgram: " + fProgram);
  246.  
  247. if(verifyDiskSpace(fProgram, srDest))
  248. {
  249.   setPackageFolder(fProgram);
  250.  
  251.   removeOldFiles();
  252.   err = addDirectory("",
  253.                      "1.5",
  254.                      "bin",              // dir name in jar to extract 
  255.                      fProgram,           // Where to put this file (Returned from GetFolder) 
  256.                      "",                 // subdir name to create relative to fProgram
  257.                      true);              // Force Flag 
  258.   logComment("addDirectory() of Program returned: " + err);
  259.  
  260.   // check return value
  261.   if( err == SUCCESS )
  262.   {
  263.     fileToRegister = getFolder(fProgram, "AccessibleMarshal.dll");
  264.     err2           = File.windowsRegisterServer(fileToRegister);
  265.     logComment("windowsRegisterServer() returned: " + err2);
  266.  
  267.     // we don't want to fail on errors for the above two
  268.     resetError();
  269.  
  270.     // Create the uninstall folder. 
  271.     err = File.dirCreate(getFolder("Program", "uninstall"));
  272.     logComment("dirCreate() of Program/uninstall returned: " + err);
  273.  
  274.     copyFlashXPT();
  275.     copyQuickTimeXPT();
  276.     
  277.     /* Log files that are created after the installer is done, so they can be uninstalled */
  278.     logComment("Installing: "    + fProgram + ".autoreg");
  279.     logComment("Installing: "    + fProgram + "Xpcs Registry.dat");
  280.     logComment("Installing: "    + fProgram + "xpcom.log");
  281.     logComment("Create Folder: " + fProgram + "components");
  282.     logComment("Installing: "    + fProgram + "components\\xpti.dat");
  283.     logComment("Installing: "    + fProgram + "components\\xptitemp.dat");
  284.     logComment("Installing: "    + fProgram + "components\\compreg.dat");
  285.     logComment("Create Folder: " + fProgram + "components\\Netscape");
  286.     logComment("Create Folder: " + fProgram + "components\\Netscape\\MozillaTrunk");
  287.     logComment("Installing: "    + fProgram + "components\\Netscape\\MozillaTrunk\\manifest.ini");
  288.     logComment("Installing: "    + fProgram + "components\\Netscape\\MozillaTrunk\\permdata.box");
  289.     logComment("Installing: "    + fProgram + "components\\Netscape\\MozillaTrunk\\Talkback.ini");
  290.     logComment("Create Folder: " + fProgram + "chrome");
  291.     logComment("Create Folder: " + fProgram + "uninstall");
  292.     logComment("Installing: "    + fProgram + "active-update.xml");
  293.     logComment("Installing: "    + fProgram + "updates.xml");
  294.     logComment("Installing: "    + fProgram + "last-update.log");
  295.     logComment("Create Folder: " + fProgram + "updates");
  296.  
  297.     err = getLastError();
  298.     if (err == SUCCESS)
  299.     {
  300.       err = performInstall();
  301.       logComment("performInstall() returned: " + err);
  302.       if (! ('buildID' in Install))
  303.       {
  304.         logComment("Running Pre-Mozilla 0.9.1");
  305.         initInstall("Post-install Cleanup Utility", "Browser/xpicleanup", "1.5");
  306.         cleanupUtility = getFolder(fProgram, "xpicleanup.exe");
  307.         err = File.execute(cleanupUtility);
  308.         logComment("execute() returned: " + err);
  309.         err = performInstall();
  310.       }
  311.     }
  312.     else
  313.       cancelInstall(err);
  314.   }
  315.   else
  316.     cancelInstall(err);
  317. }
  318. else
  319.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  320.  
  321.  
  322. // end main
  323.