home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 May / Chip_2001-05_cd2.bin / ChipCD / browsery / netscape601_eng / xpcom.xpi / install.js next >
Encoding:
JavaScript  |  2001-02-02  |  6.9 KB  |  225 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 updateWinReg()
  80. {
  81.   //Notes:
  82.   // can't use a double backslash before subkey - Windows already puts it in.
  83.   // subkeys have to exist before values can be put in.
  84.   var winreg = getWinRegistry();
  85.   var subkey;  //the name of the subkey you are poking around in
  86.   var valname; // the name of the value you want to look at
  87.   var value;   //the data in the value you want to look at.
  88.  
  89.   if(winreg != null) 
  90.   {
  91.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  92.     subkey  = "SOFTWARE\\Netscape";
  93.     winreg.createKey(subkey,"");
  94.  
  95.     subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  96.     winreg.createKey(subkey,"");
  97.  
  98.     valname = "CurrentVersion";
  99.     value   = "6.01 (en)";
  100.     err     = winreg.setValueString(subkey, valname, value);
  101.  
  102.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.01 (en)";
  103.     winreg.createKey(subkey,"");
  104.  
  105.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.01 (en)\\Main";
  106.     winreg.createKey(subkey,"");
  107.  
  108.     valname = "Install Directory";
  109.     value   = fCommunicator;
  110.     err     = winreg.setValueString(subkey, valname, value);
  111.  
  112.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.01 (en)\\Uninstall";
  113.     winreg.createKey(subkey,"");
  114.  
  115.     valname = "Uninstall Log Folder";
  116.     value   = szUninstall;
  117.     err     = winreg.setValueString(subkey, valname, value);
  118.  
  119.     valname = "Description";
  120.     value   = "Netscape 6 (6.01)";
  121.     err     = winreg.setValueString(subkey, valname, value);
  122.   }
  123. }
  124.  
  125. // main
  126. var srDest;
  127. var err;
  128. var szUninstall;
  129. var fCommunicator;
  130. var fWindowsSystem;
  131. var fileTemp;
  132. var fileComponentReg;
  133. var fileComponentRegStr;
  134. var fileMsvcrt;
  135. var fileMsvcirt;
  136.  
  137. srDest = 1537;
  138. err    = initInstall("Netscape XPCom", "XPCom", "6.0.1.2001013114"); 
  139. logComment("initInstall: " + err);
  140.  
  141. fCommunicator  = getFolder("Program");
  142. fWindowsSystem = getFolder("Win System");
  143. logComment("fCommunicator: " + fCommunicator);
  144.  
  145. // build the uninstall folder path
  146. szUninstall = fCommunicator + "Uninstall";
  147.  
  148. // Log component.reg and xpcom.log files so it can be deleted by
  149. // the uninstaller.
  150. // These two files are created after installation is done, thus
  151. // are normally not logged for uninstall.
  152. logComment("Installing: " + fCommunicator + "component.reg");
  153.  
  154. if(verifyDiskSpace(fCommunicator, srDest))
  155. {
  156.   setPackageFolder(fCommunicator);
  157.   err = addDirectory("",
  158.                      "6.0.1.2001013114",
  159.                      "bin",              // dir name in jar to extract 
  160.                      fCommunicator,      // Where to put this file (Returned from getFolder) 
  161.                      "",                 // subdir name to create relative to fCommunicator
  162.                      true);              // Force Flag 
  163.   logComment("addDirectory() of Program returned: " + err);
  164.  
  165.   if(err == SUCCESS)
  166.   {
  167.     fileTemp   = fWindowsSystem + "msvcrt.dll";
  168.     fileMsvcrt = getFolder("file:///", fileTemp);
  169.     rv         = File.exists(fileMsvcrt);
  170.     logComment("fileExists() returned: " + rv);
  171.     if(rv == false)
  172.     {
  173.       logComment("File not found: " + fileMsvcrt);
  174.       err = addFile("/Microsoft/Shared",
  175.                     "6.0.1.2001013114",
  176.                     "msvcrt.dll",         // dir name in jar to extract 
  177.                     fWindowsSystem,       // Where to put this file (Returned from getFolder) 
  178.                     "",                   // subdir name to create relative to fCommunicator
  179.                     WIN_SHARED_FILE);
  180.       logComment("addFile() of msvcrt.dll returned: " + err);
  181.     }
  182.     else
  183.     {
  184.       logComment("File found: " + fileMsvcrt);
  185.     }
  186.  
  187.     fileTemp    = fWindowsSystem + "msvcirt.dll";
  188.     fileMsvcirt = getFolder("file:///", fileTemp);
  189.     rv          = File.exists(fileMsvcirt);
  190.     logComment("fileExists() returned: " + rv);
  191.     if(rv == false)
  192.     {
  193.       logComment("File not found: " + fileMsvcirt);
  194.       err = addFile("/Microsoft/Shared",
  195.                     "6.0.1.2001013114",
  196.                     "msvcirt.dll",        // dir name in jar to extract 
  197.                     fWindowsSystem,       // Where to put this file (Returned from getFolder) 
  198.                     "",                   // subdir name to create relative to fCommunicator
  199.                     WIN_SHARED_FILE);
  200.       logComment("addFile() of msvcirt.dll returned: " + err);
  201.     }
  202.     else
  203.     {
  204.       logComment("File found: " + fileMsvcirt);
  205.     }
  206.  
  207.     if(!err)
  208.     {
  209.       updateWinReg();
  210.  
  211.       err = performInstall(); 
  212.       logComment("performInstall() returned: " + err);
  213.     }
  214.     else
  215.       cancelInstall(err);
  216.   }
  217.   else
  218.     cancelInstall(err);
  219. }
  220. else
  221.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  222.  
  223. // end main
  224.  
  225.