home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 May / Chip_2001-05_cd2.bin / ChipCD / browsery / netscape601_eng / browser.xpi / install.js
Text File  |  2001-02-02  |  15KB  |  384 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 updateWinReg4Ren8dot3() 
  25. {
  26.   var fProgram      = getFolder("Program");
  27.   var fTemp         = getFolder("Temporary");
  28.  
  29.   //Notes:
  30.   // can't use a double backslash before subkey - Windows already puts it in.            
  31.   // subkeys have to exist before values can be put in.
  32.   var subkey;  // the name of the subkey you are poking around in
  33.   var valname; // the name of the value you want to look at
  34.   var value;   // the data in the value you want to look at.
  35.   var winreg = getWinRegistry() ;
  36.  
  37.   if(winreg != null) 
  38.   {
  39.     // Here, we get the current version.
  40.     winreg.setRootKey(winreg.HKEY_CURRENT_USER) ;  // CURRENT_USER
  41.     subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce" ;
  42.  
  43.     winreg.createKey(subkey,"");
  44.     valname = "ren8dot3";
  45.     value   = fProgram + "ren8dot3.exe " + fTemp + "ren8dot3.ini";
  46.     err     = winreg.setValueString(subkey, valname, value);
  47.   }
  48. }
  49.  
  50. function prepareRen8dot3(listLongFilePaths)
  51. {
  52.   var fTemp                 = getFolder("Temporary");
  53.   var fProgram              = getFolder("Program");
  54.   var fRen8dot3Ini          = getWinProfile(fTemp, "ren8dot3.ini");
  55.   var bIniCreated           = false;
  56.   var fLongFilePath;
  57.   var sShortFilePath;
  58.  
  59.   if(fRen8dot3Ini != null)
  60.   {
  61.     for(i = 0; i < listLongFilePaths.length; i++)
  62.     {
  63.       fLongFilePath   = getFolder(fProgram, listLongFilePaths[i]);
  64.       sShortFilePath  = File.windowsGetShortName(fLongFilePath);
  65.       if(sShortFilePath)
  66.       {
  67.         fRen8dot3Ini.writeString("rename", sShortFilePath, fLongFilePath);
  68.         bIniCreated = true;
  69.       }
  70.     }
  71.  
  72.     if(bIniCreated)
  73.       updateWinReg4Ren8dot3() ;
  74.   }
  75.  
  76.   return(0);
  77. }
  78.  
  79. function createShortcuts() 
  80. {
  81.   var subkey;
  82.   var valname;
  83.   var szStartMenuPrograms;
  84.   var szStartMenu;
  85.   var szFolderDesktop;
  86.   var szFolderQuickLaunch;
  87.   var szFolderSendTo;
  88.   var winreg;
  89.   var fWindows;
  90.   var fTemp;
  91.   var fCommunicator;
  92.   var fileExe;
  93.   var scExeDesc;
  94.   var scProfileDesc;
  95.   var scNSSmartUpdateDesc;
  96.   var scNSSmartUpdateDescParam;
  97.   var scProfileDescParam;
  98.   var scFolderName;
  99.   var fFolderDesktop;
  100.   var fFolderPath;
  101.   var fFolderPathStr;
  102.   var is_winnt;
  103.   var szCurrentVersion;
  104.  
  105.   winreg                    = getWinRegistry();
  106.   fWindows                  = getFolder("Windows");
  107.   fCommunicator             = getFolder("Communicator");
  108.   fTemp                     = fCommunicator + "Netscp6.exe";
  109.   fileExe                   = getFolder("file:///", fTemp);
  110.   scExeDesc                 = "Netscape 6";
  111.   scProfileDesc             = "Profile Manager";
  112.   scNSSmartUpdateDesc       = "Netscape SmartUpdate";
  113.   scNSSmartUpdateDescParam  = "http://home.netscape.com/smartupdate/index.html?cp=start6_0";
  114.   scProfileDescParam        = "-ProfileManager";
  115.   scFolderName              = "Netscape 6";
  116.   if(winreg != null) 
  117.   {
  118.     /* determine if the script is running under NT or not */
  119.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  120.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  121.     valname             = "CurrentVersion";
  122.     szCurrentVersion    = winreg.getValueString(subkey, valname);
  123.     logComment("szCurrentVersion: " + szCurrentVersion);
  124.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  125.     {
  126.       is_winnt = false;
  127.     }
  128.     else
  129.     {
  130.       is_winnt = true;
  131.     }
  132.  
  133.     if(is_winnt == false)
  134.     {
  135.       logComment("is_winnt is false: " + is_winnt);
  136.  
  137.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  138.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  139.       valname             = "Programs";
  140.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  141.       valname             = "Start Menu";
  142.       szStartMenu         = winreg.getValueString(subkey, valname);
  143.       valname             = "Desktop";
  144.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  145.     }
  146.     else
  147.     {
  148.       logComment("is_winnt is true: " + is_winnt);
  149.  
  150.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  151.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  152.       valname             = "Common Programs";
  153.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  154.       valname             = "Common Start Menu";
  155.       szStartMenu         = winreg.getValueString(subkey, valname);
  156.       valname             = "Common Desktop";
  157.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  158.     }
  159.  
  160.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  161.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  162.     valname             = "SendTo";
  163.     szFolderSendTo      = winreg.getValueString(subkey, valname);
  164.  
  165.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\GrpConv\\MapGroups";
  166.     valname             = "Quick Launch";
  167.     szFolderQuickLaunch = winreg.getValueString(subkey, valname);
  168.  
  169.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  170.     subkey              = "SOFTWARE\\Netscape\\Netscape 6\\6.01 (en)\\Main";
  171.     valname             = "Program Folder Path";
  172.     fFolderPathStr      = winreg.getValueString(subkey, valname);
  173.     if((fFolderPathStr == "") || (fFolderPathStr == null))
  174.     {
  175.       fTemp       = szStartMenuPrograms + "\\" + scFolderName;
  176.       fFolderPath = getFolder("file:///", fTemp);
  177.     }
  178.     else
  179.     {
  180.       /* convert the path string to a path folder object */
  181.       fFolderPath = getFolder("file:///", fFolderPathStr);
  182.     }
  183.     /* convert the path string to a path folder object */
  184.     fFolderDesktop = getFolder("file:///", szFolderDesktop);
  185.  
  186.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  187.     logComment("Folder StartMenu        : " + szStartMenu);
  188.     logComment("Folder FolderDesktop    : " + szFolderDesktop);
  189.     logComment("Folder FolderSendTo     : " + szFolderSendTo);
  190.     logComment("Folder FolderQuickLaunch: " + szFolderQuickLaunch);
  191.     logComment("fileExe                 : " + fileExe);
  192.     logComment("fFolderPath             : " + fFolderPath);
  193.     logComment("scExeDesc               : " + scExeDesc);
  194.     logComment("fCommunicator           : " + fCommunicator);
  195.  
  196.     /* explicitly create the fFolderPath even though the windowsShortcut function creates the folder.
  197.      * This is so that the folder creation gets logged for uninstall to remove it. */
  198.     File.dirCreate(fFolderPath);
  199.  
  200.     /* create the shortcuts */
  201.     File.windowsShortcut(fileExe, fFolderDesktop, scExeDesc,           fCommunicator,  "",                       fileExe, 0);
  202.     File.windowsShortcut(fileExe, fFolderPath,    scExeDesc,           fCommunicator,  "",                       fileExe, 0);
  203.     File.windowsShortcut(fileExe, fFolderPath,    scProfileDesc,       fCommunicator,  scProfileDescParam,       fileExe, 0);
  204.     File.windowsShortcut(fileExe, szStartMenu,    scNSSmartUpdateDesc, fCommunicator,  scNSSmartUpdateDescParam, fileExe, 0);
  205.  
  206.     /* set the Program Folder Path in the Netscape key in the Windows Registry */
  207.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  208.     subkey  = "SOFTWARE\\Netscape";
  209.     winreg.createKey(subkey,"");
  210.  
  211.     valname = "CurrentVersion";
  212.     subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  213.     winreg.createKey(subkey,"");
  214.  
  215.     valname = "CurrentVersion";
  216.     value   = "6.01 (en)";
  217.     err     = winreg.setValueString(subkey, valname, value);
  218.  
  219.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.01 (en)";
  220.     winreg.createKey(subkey,"");
  221.  
  222.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.01 (en)\\Main";
  223.     winreg.createKey(subkey,"");
  224.  
  225.     valname = "Program Folder Path";
  226.     value   = fFolderPath;
  227.     err     = winreg.setValueString(subkey, valname, value);
  228.  
  229.   }
  230.   else
  231.   {
  232.     logComment("winreg is null");
  233.   }
  234. }
  235.  
  236. function updateWinReg()
  237. {
  238.   //Notes:
  239.   // can't use a double backslash before subkey - Windows already puts it in.
  240.   // subkeys have to exist before values can be put in.
  241.   var winreg = getWinRegistry();
  242.   var subkey;  //the name of the subkey you are poking around in
  243.   var valname; // the name of the value you want to look at
  244.   var value;   //the data in the value you want to look at.
  245.  
  246.   if(winreg != null) 
  247.   {
  248.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  249.  
  250.     subkey  = "SOFTWARE\\Netscape";
  251.     winreg.createKey(subkey,"");
  252.  
  253.     subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  254.     winreg.createKey(subkey,"");
  255.  
  256.     valname = "CurrentVersion";
  257.     value   = "6.01 (en)";
  258.     err     = winreg.setValueString(subkey, valname, value);
  259.  
  260.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.01 (en)";
  261.     winreg.createKey(subkey,"");
  262.  
  263.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.01 (en)\\Main";
  264.     winreg.createKey(subkey,"");
  265.  
  266.     valname = "Install Directory";
  267.     value   = fCommunicator;
  268.     err     = winreg.setValueString(subkey, valname, value);
  269.  
  270.     // set the App Paths key here
  271.     subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Netscp6.exe";
  272.     winreg.createKey(subkey,"");
  273.  
  274.     valname = "";
  275.     value   = fCommunicator + "Netscp6.exe";
  276.     err     = winreg.setValueString(subkey, valname, value);
  277.  
  278.     valname = "Path";
  279.     value   = fCommunicator;
  280.     err     = winreg.setValueString(subkey, valname, value);
  281.   }
  282. }
  283.  
  284. // main
  285. var srDest;
  286. var err;
  287. var fCommunicator;
  288. var fWindowsSystem;
  289. var fileComponentRegStr;
  290. var fileComponentReg;
  291.  
  292. // This list contains filenames that are long filenames ( > 8.3) critical during installation time.
  293. // Unfortunately, it is statically created.  If there are new files that are suspected to be
  294. // locked in memory during installation of this .xpi file, then they should be listed here.
  295. // The filenames should include paths relative to the Netscape 6 folder.
  296. // '/' must be used as path delimiters regardless of platform.
  297. var listLongFilePaths = ["systemSignature.jar",
  298.                          "components/activation.dll",
  299.                          "chrome/net2phone.jar"];
  300.  
  301. srDest = 13793;
  302. err    = initInstall("Netscape Navigator", "Browser", "6.0.1.2001013114"); 
  303. logComment("initInstall: " + err);
  304.  
  305. fCommunicator  = getFolder("Program");
  306. fWindowsSystem = getFolder("Win System");
  307. logComment("fCommunicator: " + fCommunicator);
  308.  
  309. if(verifyDiskSpace(fCommunicator, srDest))
  310. {
  311.   setPackageFolder(fCommunicator);
  312.  
  313.   // Ren8dot3 process needs to be done before any files have been installed
  314.   // (this includes the temp files during the prepare phase)
  315.   prepareRen8dot3(listLongFilePaths);
  316.  
  317.   err = addDirectory("",
  318.                      "6.0.1.2001013114",
  319.                      "bin",              // dir name in jar to extract 
  320.                      fCommunicator,      // Where to put this file (Returned from getFolder) 
  321.                      "",                 // subdir name to create relative to fCommunicator
  322.                      true);              // Force Flag 
  323.   logComment("addDirectory() of Program returned: " + err);
  324.  
  325.   // check return value
  326.   if(err == SUCCESS)
  327.   {
  328.     updateWinReg();
  329.     createShortcuts();
  330.     resetError();
  331.  
  332.     // register chrome
  333.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global/");
  334.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator/");
  335.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor/");
  336.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator/");
  337.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/communicator/");
  338.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/editor/");
  339.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/global/");
  340.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/messenger/");
  341.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/navigator/");
  342.     registerChrome(SKIN | DELAYED_CHROME | SELECT_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/aim/");
  343.     registerChrome(PACKAGE | DELAYED_CHROME, getFolder("Chrome","net2phone.jar"), "content/net2phone/");
  344.     registerChrome(LOCALE | DELAYED_CHROME, getFolder("Chrome","net2phone.jar"), "locale/en-US/net2phone/");
  345.  
  346.     /* Log files that are created after the installer is done, so they can be uninstalled */
  347.     logComment("Installing: "    + fCommunicator + "Xpcs Registry.dat");
  348.     logComment("Create Folder: " + fCommunicator + "components");
  349.     logComment("Installing: "    + fCommunicator + "components\\xpti.dat");
  350.     logComment("Installing: "    + fCommunicator + "components\\xptitemp.dat");
  351.     logComment("Create Folder: " + fCommunicator + "chrome");
  352.     logComment("Installing: "    + fCommunicator + "chrome\\all-locales.rdf");
  353.     logComment("Installing: "    + fCommunicator + "chrome\\all-packages.rdf");
  354.     logComment("Installing: "    + fCommunicator + "chrome\\all-skins.rdf");
  355.     logComment("Installing: "    + fCommunicator + "chrome\\user-locales.rdf");
  356.     logComment("Installing: "    + fCommunicator + "chrome\\user-skins.rdf");
  357.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo");
  358.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\communicator");
  359.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\editor");
  360.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\messenger");
  361.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\navigator");
  362.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\communicator\\content");
  363.     logComment("Installing: "    + fCommunicator + "chrome\\overlayinfo\\communicator\\content\\overlays.rdf");
  364.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\editor\\content");
  365.     logComment("Installing: "    + fCommunicator + "chrome\\overlayinfo\\editor\\content\\overlays.rdf");
  366.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\messenger\\content");
  367.     logComment("Installing: "    + fCommunicator + "chrome\\overlayinfo\\messenger\\content\\overlays.rdf");
  368.     logComment("Create Folder: " + fCommunicator + "chrome\\overlayinfo\\navigator\\content");
  369.     logComment("Installing: "    + fCommunicator + "chrome\\overlayinfo\\navigator\\content\\overlays.rdf");
  370.  
  371.     err = getLastError();
  372.     if (err == SUCCESS)
  373.         performInstall(); 
  374.     else
  375.         cancelInstall(err);
  376.   }
  377.   else
  378.     cancelInstall(err);
  379. }
  380. else
  381.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  382.  
  383. // end main
  384.