home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 January / 01_02.iso / software / netscape62win / browser.xpi / install.js
Text File  |  2001-10-22  |  29KB  |  731 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 updateWinReg4Ren8dot3() 
  97. {
  98.   var fProgram      = getFolder("Program");
  99.   var fTemp         = getFolder("Temporary");
  100.  
  101.   //Notes:
  102.   // can't use a double backslash before subkey - Windows already puts it in.            
  103.   // subkeys have to exist before values can be put in.
  104.   var subkey;  // the name of the subkey you are poking around in
  105.   var valname; // the name of the value you want to look at
  106.   var value;   // the data in the value you want to look at.
  107.   var winreg = getWinRegistry() ;
  108.  
  109.   if(winreg != null) 
  110.   {
  111.     // Here, we get the current version.
  112.     winreg.setRootKey(winreg.HKEY_CURRENT_USER) ;  // CURRENT_USER
  113.     subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce" ;
  114.  
  115.     winreg.createKey(subkey,"");
  116.     valname = "ren8dot3";
  117.     value   = fProgram + "ren8dot3.exe " + fTemp + "ren8dot3.ini";
  118.     err     = winreg.setValueString(subkey, valname, value);
  119.   }
  120. }
  121.  
  122. function prepareRen8dot3(listLongFilePaths)
  123. {
  124.   var fTemp                 = getFolder("Temporary");
  125.   var fProgram              = getFolder("Program");
  126.   var fRen8dot3Ini          = getWinProfile(fTemp, "ren8dot3.ini");
  127.   var bIniCreated           = false;
  128.   var fLongFilePath;
  129.   var sShortFilePath;
  130.  
  131.   if(fRen8dot3Ini != null)
  132.   {
  133.     for(i = 0; i < listLongFilePaths.length; i++)
  134.     {
  135.       fLongFilePath   = getFolder(fProgram, listLongFilePaths[i]);
  136.       sShortFilePath  = File.windowsGetShortName(fLongFilePath);
  137.       if(sShortFilePath)
  138.       {
  139.         fRen8dot3Ini.writeString("rename", sShortFilePath, fLongFilePath);
  140.         bIniCreated = true;
  141.       }
  142.     }
  143.  
  144.     if(bIniCreated)
  145.       updateWinReg4Ren8dot3() ;
  146.   }
  147.  
  148.   return(0);
  149. }
  150.  
  151. function DeleteObsoleteShortcutsOnUpgrade()
  152. {
  153.   var subkey;
  154.   var valname;
  155.   var szStartMenuPrograms;
  156.   var szFolderDesktop;
  157.   var winreg;
  158.   var is_winnt;
  159.   var versionThreshold;
  160.   var rv;
  161.   var keyVersion;
  162.   var fFileToCheck;
  163.   var fileFound;
  164.  
  165.   winreg = getWinRegistry();
  166.   if(winreg != null) 
  167.   {
  168.     /* determine if the script is running under NT or not */
  169.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  170.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  171.     szCurrentVersion    = winreg.getValueString(subkey, "CurrentVersion");
  172.     logComment("szCurrentVersion: " + szCurrentVersion);
  173.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  174.     {
  175.       is_winnt = false;
  176.     }
  177.     else
  178.     {
  179.       is_winnt = true;
  180.     }
  181.  
  182.     logComment("is_winnt value: " + is_winnt);
  183.     if(!is_winnt || restrictedAccess)
  184.     {
  185.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  186.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  187.       szStartMenuPrograms = winreg.getValueString(subkey, "Programs");
  188.       szFolderDesktop     = winreg.getValueString(subkey, "Desktop");
  189.     }
  190.     else
  191.     {
  192.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  193.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  194.       szStartMenuPrograms = winreg.getValueString(subkey, "Common Programs");
  195.       szFolderDesktop     = winreg.getValueString(subkey, "Common Desktop");
  196.     }
  197.  
  198.     versionThreshold = "6.20.0.2001100100";
  199.     rv = InstallTrigger.compareVersion("Browser", versionThreshold);
  200.     keyVersion = InstallTrigger.getVersion("Browser");
  201.     fFileToCheck = getFolder("Program", "Netscp6.exe");
  202.     fileFound = File.isFile(fFileToCheck);
  203.  
  204.     logComment("Folder Desktop          : " + szFolderDesktop);
  205.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  206.     logComment("versionThreshold        : " + versionThreshold);
  207.     logComment("keyVersion              : " + keyVersion);
  208.     logComment("compare result          : " + rv);
  209.     logComment("file to check           : " + fFileToCheck);
  210.     logComment("file to check found     : " + fileFound);
  211.   }
  212.  
  213.   if(fileFound && (rv < 0) && (keyVersion != null))
  214.   {
  215.     deleteThisFile("file:///",   szFolderDesktop + "\\Netscape 6.lnk");
  216.     deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape 6\\Netscape 6.lnk");
  217.     deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape 6\\Profile Manager.lnk");
  218.     deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape 6\\Free Aol & Unlimited Internet.url");
  219.     deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape 6\\Profile Manager.lnk");
  220.     deleteThisFolder("file:///", szStartMenuPrograms + "\\Netscape 6", false);
  221.   }
  222. }
  223.  
  224. function registerProgramFolderKey(winreg, fFolderPath)
  225. {
  226.   var subkey;
  227.   var valname;
  228.   var value;
  229.   var err;
  230.  
  231.   /* set the Program Folder Path in the Mozilla key in the Windows Registry */
  232.   subkey  = "SOFTWARE\\Netscape";
  233.   winreg.createKey(subkey,"");
  234.  
  235.   valname = "CurrentVersion";
  236.   subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  237.   winreg.createKey(subkey,"");
  238.  
  239.   valname = "CurrentVersion";
  240.   value   = "6.2 (en)";
  241.   err     = winreg.setValueString(subkey, valname, value);
  242.  
  243.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.2 (en)";
  244.   winreg.createKey(subkey,"");
  245.  
  246.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.2 (en)\\Main";
  247.   winreg.createKey(subkey,"");
  248.  
  249.   valname = "Program Folder Path";
  250.   value   = fFolderPath;
  251.   err     = winreg.setValueString(subkey, valname, value);
  252. }
  253.  
  254. function createShortcuts() 
  255. {
  256.   var subkey;
  257.   var valname;
  258.   var szStartMenuPrograms;
  259.   var szStartMenu;
  260.   var szFolderDesktop;
  261.   var szFolderQuickLaunch;
  262.   var szFolderSendTo;
  263.   var winreg;
  264.   var fWindows;
  265.   var fTemp;
  266.   var fProgram;
  267.   var fileExe;
  268.   var scExeDesc;
  269.   var scProfileDesc;
  270.   var scNSSmartUpdateDesc;
  271.   var scNSSmartUpdateDescParam;
  272.   var scProfileDescParam;
  273.   var scFolderName;
  274.   var szStartupFolder;
  275.   var fFolderDesktop;
  276.   var fFolderPath;
  277.   var fFolderPathStr;
  278.   var is_winnt;
  279.   var szCurrentVersion;
  280.  
  281.   winreg                    = getWinRegistry();
  282.   fWindows                  = getFolder("Windows");
  283.   fProgram                  = getFolder("Program");
  284.   fTemp                     = fProgram + "Netscp6.exe";
  285.   fileExe                   = getFolder("file:///", fTemp);
  286.   scExeDesc                 = "Netscape 6.2";
  287.   scProfileDesc             = "Profile Manager";
  288.   scNSSmartUpdateDesc       = "Netscape SmartUpdate";
  289.   scNSSmartUpdateDescParam  = "http://home.netscape.com/smartupdate/index.html?cp=start6_1";
  290.   scProfileDescParam        = "-ProfileManager";
  291.   scFolderName              = "Netscape 6.2";
  292.   if(winreg != null) 
  293.   {
  294.     /* determine if the script is running under NT or not */
  295.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  296.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  297.     valname             = "CurrentVersion";
  298.     szCurrentVersion    = winreg.getValueString(subkey, valname);
  299.     logComment("szCurrentVersion: " + szCurrentVersion);
  300.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  301.     {
  302.       is_winnt = false;
  303.     }
  304.     else
  305.     {
  306.       is_winnt = true;
  307.     }
  308.  
  309.     logComment("is_winnt value: " + is_winnt);
  310.     if(!is_winnt || restrictedAccess)
  311.     {
  312.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  313.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  314.       valname             = "Programs";
  315.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  316.       valname             = "Start Menu";
  317.       szStartMenu         = winreg.getValueString(subkey, valname);
  318.       valname             = "Desktop";
  319.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  320.       valname             = "Startup";
  321.       szStartupFolder     = winreg.getValueString(subkey, valname);
  322.     }
  323.     else
  324.     {
  325.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  326.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  327.       valname             = "Common Programs";
  328.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  329.       valname             = "Common Start Menu";
  330.       szStartMenu         = winreg.getValueString(subkey, valname);
  331.       valname             = "Common Desktop";
  332.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  333.       valname             = "Common Startup";
  334.       szStartupFolder     = winreg.getValueString(subkey, valname);
  335.     }
  336.  
  337.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  338.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  339.     valname             = "SendTo";
  340.     szFolderSendTo      = winreg.getValueString(subkey, valname);
  341.  
  342.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\GrpConv\\MapGroups";
  343.     valname             = "Quick Launch";
  344.     szFolderQuickLaunch = winreg.getValueString(subkey, valname);
  345.  
  346.     subkey              = "SOFTWARE\\Netscape\\Netscape 6\\6.2 (en)\\Main";
  347.     valname             = "Program Folder Path";
  348.     fFolderPathStr      = winreg.getValueString(subkey, valname);
  349.     if((fFolderPathStr == "") || (fFolderPathStr == null))
  350.     {
  351.       fTemp       = szStartMenuPrograms + "\\" + scFolderName;
  352.       fFolderPath = getFolder("file:///", fTemp);
  353.     }
  354.     else
  355.     {
  356.       /* convert the path string to a path folder object */
  357.       fFolderPath = getFolder("file:///", fFolderPathStr);
  358.     }
  359.     /* convert the path string to a path folder object */
  360.     fFolderDesktop = getFolder("file:///", szFolderDesktop);
  361.  
  362.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  363.     logComment("Folder StartMenu        : " + szStartMenu);
  364.     logComment("Folder FolderDesktop    : " + szFolderDesktop);
  365.     logComment("Folder FolderSendTo     : " + szFolderSendTo);
  366.     logComment("Folder FolderQuickLaunch: " + szFolderQuickLaunch);
  367.     logComment("fileExe                 : " + fileExe);
  368.     logComment("fFolderPath             : " + fFolderPath);
  369.     logComment("scExeDesc               : " + scExeDesc);
  370.     logComment("fProgram                : " + fProgram);
  371.  
  372.     /* explicitly create the fFolderPath even though the windowsShortcut function creates the folder.
  373.      * This is so that the folder creation gets logged for uninstall to remove it. */
  374.     if(!File.exists(fFolderPath))
  375.       File.dirCreate(fFolderPath);
  376.  
  377.     /* create the shortcuts */
  378.     File.windowsShortcut(fileExe, fFolderDesktop, scExeDesc,           fProgram,  "",                       fileExe, 0);
  379.     File.windowsShortcut(fileExe, fFolderPath,    scExeDesc,           fProgram,  "",                       fileExe, 0);
  380.     File.windowsShortcut(fileExe, fFolderPath,    scProfileDesc,       fProgram,  scProfileDescParam,       fileExe, 0);
  381.     File.windowsShortcut(fileExe, szStartMenu,    scNSSmartUpdateDesc, fProgram,  scNSSmartUpdateDescParam, fileExe, 0);
  382.  
  383.     if(!restrictedAccess)
  384.     {
  385.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  386.       registerProgramFolderKey(winreg, fFolderPath);
  387.     }
  388.  
  389.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  390.     registerProgramFolderKey(winreg, fFolderPath);
  391.  
  392.     /* remove turbo mode shortcut */
  393.  
  394.     fFolderPath = getFolder("file:///", szStartupFolder);
  395.                                     
  396.     /* remove shortcut from the startup folder */
  397.  
  398.     basename = "Netscp6.exe"
  399.     fTemp = fFolderPath + basename + ".lnk";
  400.     fFolderPath = getFolder("file:///", fTemp);
  401.     if (File.exists(fFolderPath)) 
  402.     { 
  403.         logComment("Removing Quick Launch shortcut from Windows startup folder\n");
  404.         fileDelete(fFolderPath);
  405.     }
  406.  
  407.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.2 (en)\\Setup";
  408.     valname = "browserargs";
  409.     regvalue = winreg.getValueString(subkey, valname);
  410.  
  411.     /* log this so if the user turns on turbo mode in the browser the uninstaller will undo it */
  412.  
  413.     logComment( "store registry value string: HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run [Mozilla Quick Launch]");
  414.     if (regvalue && regvalue != undefined && regvalue.length != 0) 
  415.     {
  416.         var value = new String(regvalue);
  417.         var index = value.indexOf("turbo");
  418.         if (index != -1) 
  419.         {
  420.             var index2 = value.indexOf("=", index);
  421.             if (index2 != -1) 
  422.             {
  423.                 turboarg = value.slice(index2 + 1, index2 + 2);
  424.                 winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  425.                 subkey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
  426.                 valname = "Mozilla Quick Launch";
  427.                 if ( turboarg == "Y" || turboarg == "y") 
  428.                 {
  429.                     fTemp = fileExe;
  430.                     fileExe = getFolder("file:///", fTemp);
  431.                     newKey = fileExe + ' -turbo';
  432.                     winreg.createKey(subkey,"");
  433.                     winreg.setValueString(subkey, valname, newKey);
  434.                 } 
  435.                 else 
  436.                 {
  437.                     winreg.deleteValue(subkey, valname);
  438.                 }
  439.             }
  440.         }
  441.     }
  442.   }
  443.   else
  444.   {
  445.     logComment("winreg is null");
  446.   }
  447. }
  448.  
  449. function registerMainKeys(winreg)
  450. {
  451.   var subkey;  //the name of the subkey you are poking around in
  452.   var valname; //the name of the value you want to look at
  453.   var value;   //the data in the value you want to look at.
  454.   var err;
  455.  
  456.   subkey  = "SOFTWARE\\Netscape";
  457.   winreg.createKey(subkey,"");
  458.  
  459.   subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  460.   winreg.createKey(subkey,"");
  461.  
  462.   valname = "CurrentVersion";
  463.   value   = "6.2 (en)";
  464.   err     = winreg.setValueString(subkey, valname, value);
  465.  
  466.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.2 (en)";
  467.   winreg.createKey(subkey,"");
  468.  
  469.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.2 (en)\\Main";
  470.   winreg.createKey(subkey,"");
  471.  
  472.   valname = "Install Directory";
  473.   value   = fProgram;
  474.   err     = winreg.setValueString(subkey, valname, value);
  475.  
  476.   // The following keys are required to be created to supply information
  477.   // about the location of the Gecko Embedded Client to 3rd party apps.
  478.   // "SOFTWARE\\Mozilla" must not be localized!
  479.   subkey  = "SOFTWARE\\Mozilla\\Netscape 6 6.2";
  480.   winreg.createKey(subkey,"");
  481.  
  482.   subkey  = "SOFTWARE\\Mozilla\\Netscape 6 6.2\\Extensions";
  483.   winreg.createKey(subkey,"");
  484.  
  485.   valname = "Components";
  486.   value   = fProgram + "Components";
  487.   err     = winreg.setValueString(subkey, valname, value);
  488.  
  489.   valname = "Plugins";
  490.   value   = fProgram + "Plugins";
  491.   err     = winreg.setValueString(subkey, valname, value);
  492.  
  493.   subkey  = "SOFTWARE\\Mozilla\\Netscape 6 6.2\\bin";
  494.   winreg.createKey(subkey,"");
  495.  
  496.   valname = "PathToExe";
  497.   value   = fProgram + "Netscp6.exe";
  498.   err     = winreg.setValueString(subkey, valname, value);
  499.  
  500.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.2 (en)\\Main";
  501.   winreg.setValueString(subkey, valname, value);
  502. }
  503.  
  504. function updateWinReg()
  505. {
  506.   //Notes:
  507.   // can't use a double backslash before subkey - Windows already puts it in.
  508.   // subkeys have to exist before values can be put in.
  509.   var winreg = getWinRegistry();
  510.   var subkey;  //the name of the subkey you are poking around in
  511.   var valname; //the name of the value you want to look at
  512.   var value;   //the data in the value you want to look at.
  513.   var err;
  514.   var ikwDefined;
  515.  
  516.   if(winreg != null) 
  517.   {
  518.     /* This will check to see if the user has restricted access or not.
  519.      * It checks to see if HKEY_LOCALMACHINE\SOFTWARE is writable.  If
  520.      * it is, then access is not restricted.  This is only used to
  521.      * determine which Desktop, Programs, and Start Menu folders
  522.      * are to used: common or per user
  523.      */
  524.     restrictedAccess = false;
  525.     ikwDefined = typeof(winreg.isKeyWritable);
  526.     logComment("winreg.isKeyWritable(): " + ikwDefined);
  527.     if(ikwDefined == "function")
  528.     {
  529.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  530.       if(!winreg.isKeyWritable("SOFTWARE"))
  531.         restrictedAccess = true;
  532.     }
  533.  
  534.     logComment("restrictedAccess value: " + restrictedAccess);
  535.     if(!restrictedAccess)
  536.     {
  537.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  538.       registerMainKeys(winreg);
  539.  
  540.       // set the App Paths key here
  541.       subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Netscp6.exe";
  542.       winreg.createKey(subkey,"");
  543.       valname = "";
  544.       value   = fProgram + "Netscp6.exe";
  545.       err     = winreg.setValueString(subkey, valname, value);
  546.  
  547.       valname = "Path";
  548.       value   = fProgram;
  549.       err     = winreg.setValueString(subkey, valname, value);
  550.     }
  551.  
  552.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  553.     registerMainKeys(winreg);
  554.   }
  555. }
  556.  
  557. function upgradeCleanup()
  558. {
  559.   // Obsolete files from Netscape 6.0 and Netscape 6.01 that
  560.   // need to be cleaned up.
  561.   deleteThisFile("Program",    "oji.dll");
  562.   deleteThisFile("Program",    "jsdom.dll");
  563.   deleteThisFile("Program",    "img3250.dll");
  564.   deleteThisFile("Program",    "gkgfxwin.dll");
  565.   deleteThisFile("Program",    "gkwidget.dll");
  566.   deleteThisFile("Program",    "defaults/pref/psm-glue.js");
  567.   deleteThisFile("Program",    "defaults/wallet/URLFieldSchema.tbl");
  568.   deleteThisFile("Components", "gkhtml.dll");
  569.   deleteThisFile("Components", "mozucth.dll");
  570.   deleteThisFile("Components", "nsgif.dll");
  571.   deleteThisFile("Components", "nsjpg.dll");
  572.   deleteThisFile("Components", "nsmng.dll");
  573.   deleteThisFile("Components", "nspng.dll");
  574.   deleteThisFile("Components", "smime.dll");
  575. }
  576.  
  577. // main
  578. var srDest;
  579. var err;
  580. var fProgram;
  581. var fWindowsSystem;
  582. var fileComponentRegStr;
  583. var fileComponentReg;
  584. var restrictedAccess;
  585.  
  586. // This list contains filenames that are long filenames ( > 8.3) critical during installation time.
  587. // This list is automatically generated during the build process.
  588. // The filenames should include paths relative to the Netscape 6 folder.
  589. // '/' must be used as path delimiters regardless of platform.
  590. var listLongFilePaths = ["chrome/content-packs.jar",
  591.                          "chrome/net2phone.jar",
  592.                          "components/accessibility.dll",
  593.                          "components/activation.dll",
  594.                          "components/embedcomponents.dll",
  595.                          "components/gkcontent.dll",
  596.                          "components/transformiix.dll",
  597.                          "components/xmlextras.dll",
  598.                          "ISimpleDOMDocumentMarshal.dll",
  599.                          "ISimpleDOMNodeMarshal.dll",
  600.                          "nsldap32v40.dll",
  601.                          "systemSignature.jar",
  602.                          "xpicleanup.exe"];
  603.  
  604. srDest = 17761;
  605. err    = initInstall("Netscape Navigator", "Browser", "6.20.0.2001102218"); 
  606. logComment("initInstall: " + err);
  607.  
  608. fProgram  = getFolder("Program");
  609. fWindowsSystem = getFolder("Win System");
  610. logComment("fProgram: " + fProgram);
  611.  
  612. if(verifyDiskSpace(fProgram, srDest))
  613. {
  614.   setPackageFolder(fProgram);
  615.  
  616.   /* delete the obsolete shortcuts on upgrade */
  617.   DeleteObsoleteShortcutsOnUpgrade();
  618.  
  619.   // Ren8dot3 process needs to be done before any files have been installed
  620.   // (this includes the temp files during the prepare phase)
  621.   prepareRen8dot3(listLongFilePaths);
  622.  
  623.   err = addDirectory("",
  624.                      "6.20.0.2001102218",
  625.                      "bin",              // dir name in jar to extract 
  626.                      fProgram,           // Where to put this file (Returned from getFolder) 
  627.                      "",                 // subdir name to create relative to fProgram
  628.                      true);              // Force Flag 
  629.   logComment("addDirectory() of Program returned: " + err);
  630.  
  631.   // check return value
  632.   if(err == SUCCESS)
  633.   {
  634.     updateWinReg();
  635.     createShortcuts();
  636.     upgradeCleanup();
  637.     resetError();
  638.  
  639.     // register chrome
  640.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-platform/");
  641.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator-platform/");
  642.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator-platform/");
  643.  
  644.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-region/");
  645.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator-region/");
  646.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor-region/");
  647.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator-region/");
  648.     registerChrome(PACKAGE | DELAYED_CHROME, getFolder("Chrome","net2phone.jar"), "content/net2phone-region/");
  649.  
  650.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global/");
  651.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/cookie/");
  652.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/wallet/");
  653.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","content-packs.jar"),"content/content-packs/");
  654.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator/");
  655.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor/");
  656.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator/");
  657.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/mozldap/");
  658.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/necko/");
  659.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/communicator/");
  660.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/editor/");
  661.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/global/");
  662.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/messenger/");
  663.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/navigator/");
  664.     registerChrome(SKIN | DELAYED_CHROME | SELECT_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/aim/");
  665.     registerChrome(PACKAGE | DELAYED_CHROME, getFolder("Chrome","net2phone.jar"), "content/net2phone/");
  666.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","help.jar"),"content/help/");
  667.  
  668.  
  669.     /* Log files that are created after the installer is done, so they can be uninstalled */
  670.     logComment("Installing: "    + fProgram + "Xpcs Registry.dat");
  671.     logComment("Installing: "    + fProgram + "xpcom.log");
  672.     logComment("Create Folder: " + fProgram + "components");
  673.     logComment("Installing: "    + fProgram + "components\\xpti.dat");
  674.     logComment("Installing: "    + fProgram + "components\\xptitemp.dat");
  675.     logComment("Create Folder: " + fProgram + "chrome");
  676.     logComment("Installing: "    + fProgram + "chrome\\installed-chrome.txt");
  677.     logComment("Installing: "    + fProgram + "chrome\\all-locales.rdf");
  678.     logComment("Installing: "    + fProgram + "chrome\\all-packages.rdf");
  679.     logComment("Installing: "    + fProgram + "chrome\\all-skins.rdf");
  680.     logComment("Installing: "    + fProgram + "chrome\\user-locales.rdf");
  681.     logComment("Installing: "    + fProgram + "chrome\\user-skins.rdf");
  682.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo");
  683.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\communicator");
  684.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\editor");
  685.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\messenger");
  686.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator");
  687.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\communicator\\content");
  688.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\communicator\\content\\overlays.rdf");
  689.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\editor\\content");
  690.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\editor\\content\\overlays.rdf");
  691.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\messenger\\content");
  692.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\messenger\\content\\overlays.rdf");
  693.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator\\content");
  694.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\navigator\\content\\overlays.rdf");
  695.  
  696.     // log comments for uninstalling the registry keys created by the browser for setting
  697.     // itself up in WinXP's Start menu
  698.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\Netscp6.exe []");
  699.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\Netscp6.exe []");
  700.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\Netscp6.exe\\DefaultIcon []");
  701.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\Netscp6.exe\\DefaultIcon []");
  702.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\Netscp6.exe\\shell []");
  703.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\Netscp6.exe\\shell\\open []");
  704.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\Netscp6.exe\\shell\\open\\command []");
  705.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\StartMenuInternet\\Netscp6.exe\\shell\\open\\command []");
  706.  
  707.     err = getLastError();
  708.     if (err == SUCCESS)
  709.     {
  710.         performInstall(); 
  711.         if (! ('buildID' in Install))
  712.         {
  713.             logComment("Running Pre-Mozilla 0.9.1");
  714.             initInstall("Post-install Cleanup Utility", "xpicleanup", "6.20.0.2001102218");
  715.             cleanupUtility = getFolder(fProgram, "xpicleanup.exe");
  716.             err = File.execute(cleanupUtility);
  717.             logComment("execute() returned: " + err);
  718.             err = performInstall();
  719.         }
  720.     }
  721.     else
  722.         cancelInstall(err);
  723.   }
  724.   else
  725.     cancelInstall(err);
  726. }
  727. else
  728.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  729.  
  730. // end main
  731.