home *** CD-ROM | disk | FTP | other *** search
/ Enter 2003: The Beautiful Scenery / enter-parhaat-2003.iso / files / Netscape / n2p.xpi / install.js
Encoding:
JavaScript  |  2002-08-23  |  5.4 KB  |  214 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
  75.       platformNode = 'unix';
  76.   }
  77.   else
  78.   {
  79.     var fOSMac  = getFolder("Mac System");
  80.     var fOSWin  = getFolder("Win System");
  81.  
  82.     logComment("fOSMac: "  + fOSMac);
  83.     logComment("fOSWin: "  + fOSWin);
  84.  
  85.     if(fOSMac != null)
  86.       platformNode = 'mac';
  87.     else if(fOSWin != null)
  88.       platformNode = 'win';
  89.     else
  90.       platformNode = 'unix';
  91.   }
  92.  
  93.   return platformNode;
  94. }
  95.  
  96. function updateNet2FoneIni()
  97. {
  98.   var fWindows;
  99.   var wpN2PIni;
  100.   var wpErr;
  101.  
  102.   fWindows = getFolder("Windows");
  103.   wpN2PIni = getWinProfile(fWindows, "net2fone.ini");
  104.  
  105.   wpErr = wpN2PIni.writeString("AccountInfo", "source", "NS_USA106");
  106.   wpErr = wpN2PIni.writeString("URLS"       , "REGURL", "http://www.net2phone.com/cgi-bin/clienturl.cgi?brand=netscape&language=english&action=%X%&acctnum=%A%&source=%S%"); 
  107.   return(wpErr);
  108. }
  109.  
  110. function getN2PFolder()
  111. {
  112.   var fN2P;
  113.   var winReg = getWinRegistry();
  114.  
  115.   if(winReg != null)
  116.   {
  117.     winReg.setRootKey(winReg.HKEY_LOCAL_MACHINE);
  118.     subKey    = "SOFTWARE\\Net2Phone\\Install";
  119.     valueName = "Directory";
  120.     fN2Pstr   = winReg.getValueString(subKey, valueName);
  121.     if((fN2Pstr == null) || (fN2Pstr == ""))
  122.     {
  123.       subKey          = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion";
  124.       valueName       = "ProgramFilesDir";
  125.       fCommonFilesDir = winReg.getValueString(subKey, valueName);
  126.       fN2Pstr         = fCommonFilesDir + "\\Net2Phone\\";
  127.     }
  128.  
  129.     fN2P = getFolder("file:///", fN2Pstr);
  130.   }
  131.   else
  132.   {
  133.     logComment("getWinRegsitry() failed: " + winReg);
  134.   }
  135.  
  136.   return fN2P;
  137. }
  138.  
  139. // main
  140. var srDest;
  141. var err;
  142. var cErr;
  143. var fN2P;
  144. var fN2PFinal;
  145. var fN2PExecute;
  146. var fileN2PIni;
  147. var fWindows;
  148. var fTemp;
  149. var rv;
  150.  
  151. srDest = 2433;
  152. err    = initInstall("Net2Phone", "/IDT/Net2Phone", "10.2.8.0"); 
  153. logComment("initInstall() returned: " + err);
  154.  
  155. fN2PFinal = getN2PFolder();
  156. fTemp     = getFolder("Temporary");
  157. fN2P      = getFolder("Temporary");
  158. if(verifyDiskSpace(fN2P, srDest))
  159. {
  160.   setPackageFolder(fN2PFinal);
  161.   err  = addDirectory("/IDT/Net2Phone",
  162.                       "10.2.8.0",
  163.                       "net2phone",          // dir name in jar to extract 
  164.                       fN2P,                 // Where to put this file (Returned from getFolder) 
  165.                       "",                   // subdir name to create relative to communicatorFolder
  166.                       true);                // Force Flag 
  167.   logComment("addDirectory() returned: " + err);
  168.  
  169.   if(!err)
  170.   {
  171.     fWindows   = getFolder("Windows");
  172.     fileN2PIni = getFolder("file:///", fWindows + "net2fone.ini");
  173.     rv         = File.exists(fileN2PIni);
  174.     logComment("fileExists() returned: " + rv);
  175.     if(rv == false)
  176.     {
  177.       logComment("File not found: " + fileN2PIni);
  178.       fileN2PIni = getFolder("file:///", fTemp + "net2fone.ini");
  179.       cErr       = File.copy(fileN2PIni, fWindows);
  180.       logComment("File.copy() of " + fileN2PIni + " returned: " + cErr);
  181.     }
  182.     else
  183.     {
  184.       logComment("File found: " + fileN2PIni);
  185.       wpErr = updateNet2FoneIni();
  186.       logComment("updateNet2Fone returned: " + wpErr);
  187.     }
  188.   }
  189.   else
  190.     cancelInstall(err);
  191.  
  192.   // check return value
  193.   if(!err)
  194.   {
  195.     fN2PExecute = getFolder(fN2P, "setupN2P.exe");
  196.     err = fileExecute(fN2PExecute, "/nofax /noGUI /nostr /noOL");
  197.     logComment("fileExecute() returned: " + err);
  198.  
  199.     fileN2PIni = getFolder("file:///", fTemp + "net2fone.ini");
  200.     err = fileDelete(fileN2PIni);
  201.     logComment("fileDelete() returned: " + err);
  202.  
  203.     err = performInstall(); 
  204.     logComment("performInstall() returned: " + err);
  205.   }
  206.   else
  207.     cancelInstall(err);
  208. }
  209. else
  210.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  211.  
  212. // end main
  213.  
  214.