home *** CD-ROM | disk | FTP | other *** search
/ .net 2000 December / Net78.iso / pc / Software / Netscape 6 / PC / browser.xpi / install.js
Encoding:
JavaScript  |  2000-09-29  |  12.7 KB  |  315 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. function createShortcuts() 
  25. {
  26.   var subkey;
  27.   var valname;
  28.   var szStartMenuPrograms;
  29.   var szStartMenu;
  30.   var szFolderDesktop;
  31.   var szFolderQuickLaunch;
  32.   var szFolderSendTo;
  33.   var winreg;
  34.   var fWindows;
  35.   var fTemp;
  36.   var fCommunicator;
  37.   var fileExe;
  38.   var scExeDesc;
  39.   var scProfileDesc;
  40.   var scNSSmartUpdateDesc;
  41.   var scNSSmartUpdateDescParam;
  42.   var scProfileDescParam;
  43.   var scFolderName;
  44.   var fFolderDesktop;
  45.   var fFolderPath;
  46.   var fFolderPathStr;
  47.   var is_winnt;
  48.   var szCurrentVersion;
  49.  
  50.   winreg                    = getWinRegistry();
  51.   fWindows                  = getFolder("Windows");
  52.   fCommunicator             = getFolder("Communicator");
  53.   fTemp                     = fCommunicator + "Netscp6.exe";
  54.   fileExe                   = getFolder("file:///", fTemp);
  55.   scExeDesc                 = "Netscape 6";
  56.   scProfileDesc             = "Profile Manager";
  57.   scNSSmartUpdateDesc       = "Netscape SmartUpdate";
  58.   scNSSmartUpdateDescParam  = "http://home.netscape.com/smartupdate/index.html?cp=start6_0";
  59.   scProfileDescParam        = "-ProfileManager";
  60.   scFolderName              = "Netscape 6";
  61.   if(winreg != null) 
  62.   {
  63.     /* determine if the script is running under NT or not */
  64.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  65.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  66.     valname             = "CurrentVersion";
  67.     szCurrentVersion    = winreg.getValueString(subkey, valname);
  68.     logComment("szCurrentVersion: " + szCurrentVersion);
  69.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  70.     {
  71.       is_winnt = false;
  72.     }
  73.     else
  74.     {
  75.       is_winnt = true;
  76.     }
  77.  
  78.     if(is_winnt == false)
  79.     {
  80.       logComment("is_winnt is false: " + is_winnt);
  81.  
  82.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  83.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  84.       valname             = "Programs";
  85.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  86.       valname             = "Start Menu";
  87.       szStartMenu         = winreg.getValueString(subkey, valname);
  88.       valname             = "Desktop";
  89.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  90.     }
  91.     else
  92.     {
  93.       logComment("is_winnt is true: " + is_winnt);
  94.  
  95.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  96.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  97.       valname             = "Common Programs";
  98.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  99.       valname             = "Common Start Menu";
  100.       szStartMenu         = winreg.getValueString(subkey, valname);
  101.       valname             = "Common Desktop";
  102.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  103.     }
  104.  
  105.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  106.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  107.     valname             = "SendTo";
  108.     szFolderSendTo      = winreg.getValueString(subkey, valname);
  109.  
  110.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\GrpConv\\MapGroups";
  111.     valname             = "Quick Launch";
  112.     szFolderQuickLaunch = winreg.getValueString(subkey, valname);
  113.  
  114.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  115.     subkey              = "SOFTWARE\\Netscape\\Netscape 6\\6.0b3 (en)\\Main";
  116.     valname             = "Program Folder Path";
  117.     fFolderPathStr      = winreg.getValueString(subkey, valname);
  118.     if((fFolderPathStr == "") || (fFolderPathStr == null))
  119.     {
  120.       fTemp       = szStartMenuPrograms + "\\" + scFolderName;
  121.       fFolderPath = getFolder("file:///", fTemp);
  122.     }
  123.     else
  124.     {
  125.       /* convert the path string to a path folder object */
  126.       fFolderPath = getFolder("file:///", fFolderPathStr);
  127.     }
  128.     /* convert the path string to a path folder object */
  129.     fFolderDesktop = getFolder("file:///", szFolderDesktop);
  130.  
  131.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  132.     logComment("Folder StartMenu        : " + szStartMenu);
  133.     logComment("Folder FolderDesktop    : " + szFolderDesktop);
  134.     logComment("Folder FolderSendTo     : " + szFolderSendTo);
  135.     logComment("Folder FolderQuickLaunch: " + szFolderQuickLaunch);
  136.     logComment("fileExe                 : " + fileExe);
  137.     logComment("fFolderPath             : " + fFolderPath);
  138.     logComment("scExeDesc               : " + scExeDesc);
  139.     logComment("fCommunicator           : " + fCommunicator);
  140.  
  141.     /* explicitly create the fFolderPath even though the windowsShortcut function creates the folder.
  142.      * This is so that the folder creation gets logged for uninstall to remove it. */
  143.     File.dirCreate(fFolderPath);
  144.  
  145.     /* create the shortcuts */
  146.     File.windowsShortcut(fileExe, fFolderDesktop, scExeDesc,           fCommunicator,  "",                       fileExe, 0);
  147.     File.windowsShortcut(fileExe, fFolderPath,    scExeDesc,           fCommunicator,  "",                       fileExe, 0);
  148.     File.windowsShortcut(fileExe, fFolderPath,    scProfileDesc,       fCommunicator,  scProfileDescParam,       fileExe, 0);
  149.     File.windowsShortcut(fileExe, szStartMenu,    scNSSmartUpdateDesc, fCommunicator,  scNSSmartUpdateDescParam, fileExe, 0);
  150.  
  151.     /* set the Program Folder Path in the Netscape key in the Windows Registry */
  152.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  153.     subkey  = "SOFTWARE\\Netscape";
  154.     winreg.createKey(subkey,"");
  155.  
  156.     valname = "CurrentVersion";
  157.     subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  158.     winreg.createKey(subkey,"");
  159.  
  160.     valname = "CurrentVersion";
  161.     value   = "6.0b3 (en)";
  162.     err     = winreg.setValueString(subkey, valname, value);
  163.  
  164.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.0b3 (en)";
  165.     winreg.createKey(subkey,"");
  166.  
  167.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.0b3 (en)\\Main";
  168.     winreg.createKey(subkey,"");
  169.  
  170.     valname = "Program Folder Path";
  171.     value   = fFolderPath;
  172.     err     = winreg.setValueString(subkey, valname, value);
  173.  
  174.   }
  175.   else
  176.   {
  177.     logComment("winreg is null");
  178.   }
  179. }
  180.  
  181. function updateWinReg()
  182. {
  183.   //Notes:
  184.   // can't use a double backslash before subkey - Windows already puts it in.
  185.   // subkeys have to exist before values can be put in.
  186.   var winreg = getWinRegistry();
  187.   var subkey;  //the name of the subkey you are poking around in
  188.   var valname; // the name of the value you want to look at
  189.   var value;   //the data in the value you want to look at.
  190.  
  191.   if(winreg != null) 
  192.   {
  193.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  194.  
  195.     subkey  = "SOFTWARE\\Netscape";
  196.     winreg.createKey(subkey,"");
  197.  
  198.     subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  199.     winreg.createKey(subkey,"");
  200.  
  201.     valname = "CurrentVersion";
  202.     value   = "6.0b3 (en)";
  203.     err     = winreg.setValueString(subkey, valname, value);
  204.  
  205.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.0b3 (en)";
  206.     winreg.createKey(subkey,"");
  207.  
  208.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.0b3 (en)\\Main";
  209.     winreg.createKey(subkey,"");
  210.  
  211.     valname = "Install Directory";
  212.     value   = fCommunicator;
  213.     err     = winreg.setValueString(subkey, valname, value);
  214.  
  215.     // set the App Paths key here
  216.     subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Netscp6.exe";
  217.     winreg.createKey(subkey,"");
  218.  
  219.     valname = "";
  220.     value   = fCommunicator + "Netscp6.exe";
  221.     err     = winreg.setValueString(subkey, valname, value);
  222.  
  223.     valname = "Path";
  224.     value   = fCommunicator;
  225.     err     = winreg.setValueString(subkey, valname, value);
  226.   }
  227. }
  228.  
  229. // main
  230. var srDest;
  231. var err;
  232. var fCommunicator;
  233. var fWindowsSystem;
  234. var fileComponentRegStr;
  235. var fileComponentReg;
  236.  
  237. srDest = 77025;
  238. err    = initInstall("Netscape Navigator", "Browser", "6.0.N6.2000092909"); 
  239. logComment("initInstall: " + err);
  240.  
  241. fCommunicator  = getFolder("Program");
  242. fWindowsSystem = getFolder("Win System");
  243. logComment("fCommunicator: " + fCommunicator);
  244.  
  245. if(verifyDiskSpace(fCommunicator, srDest))
  246. {
  247.   setPackageFolder(fCommunicator);
  248.   err = addDirectory("",
  249.                      "6.0.N6.2000092909",
  250.                      "bin",              // dir name in jar to extract 
  251.                      fCommunicator,      // Where to put this file (Returned from getFolder) 
  252.                      "",                 // subdir name to create relative to fCommunicator
  253.                      true);              // Force Flag 
  254.   logComment("addDirectory() of Program returned: " + err);
  255.  
  256.   // check return value
  257.   if(err == SUCCESS)
  258.   {
  259.     updateWinReg();
  260.     createShortcuts();
  261.     resetError();
  262.  
  263.     // register chrome
  264.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global/");
  265.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator/");
  266.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor/");
  267.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator/");
  268.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/communicator/");
  269.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/editor/");
  270.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/global/");
  271.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/messenger/");
  272.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/navigator/");
  273.     registerChrome(SKIN | DELAYED_CHROME | SELECT_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/aim/");
  274.     registerChrome(PACKAGE | DELAYED_CHROME, getFolder("Chrome","net2phone.jar"), "content/net2phone/");
  275.     registerChrome(LOCALE | DELAYED_CHROME, getFolder("Chrome","net2phone.jar"), "locale/en-US/net2phone/");
  276.  
  277.     /* Log files that are created after the installer is done, so they can be uninstalled */
  278.     logComment("Installing: "    + fCommunicator + "Xpcs Registry.dat");
  279.     logComment("Create Folder: " + fCommunicator + "components");
  280.     logComment("Installing: "    + fCommunicator + "components\\xpti.dat");
  281.     logComment("Installing: "    + fCommunicator + "components\\xptitemp.dat");
  282.     logComment("Create Folder: " + fCommunicator + "chrome");
  283.     logComment("Installing: "    + fCommunicator + "chrome\\all-locales.rdf");
  284.     logComment("Installing: "    + fCommunicator + "chrome\\all-packages.rdf");
  285.     logComment("Installing: "    + fCommunicator + "chrome\\all-skins.rdf");
  286.     logComment("Installing: "    + fCommunicator + "chrome\\user-locales.rdf");
  287.     logComment("Installing: "    + fCommunicator + "chrome\\user-skins.rdf");
  288.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo");
  289.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\communicator");
  290.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\editor");
  291.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\messenger");
  292.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\navigator");
  293.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\communicator\\content");
  294.     logComment("Installing: "    + fCommunicator + "chrome\\overlayinfo\\communicator\\content\\overlays.rdf");
  295.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\editor\\content");
  296.     logComment("Installing: "    + fCommunicator + "chrome\\overlayinfo\\editor\\content\\overlays.rdf");
  297.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\messenger\\content");
  298.     logComment("Installing: "    + fCommunicator + "chrome\\overlayinfo\\messenger\\content\\overlays.rdf");
  299.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\navigator\\content");
  300.     logComment("Installing: "    + fCommunicator + "chrome\\overlayinfo\\navigator\\content\\overlays.rdf");
  301.  
  302.     err = getLastError();
  303.     if (err == SUCCESS)
  304.         performInstall(); 
  305.     else
  306.         cancelInstall(err);
  307.   }
  308.   else
  309.     cancelInstall(err);
  310. }
  311. else
  312.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  313.  
  314. // end main
  315.