home *** CD-ROM | disk | FTP | other *** search
/ PC Home 138 / PC Home issue 138.iso / Software / Essentials / Netscape / browser.xpi / install.js
Encoding:
JavaScript  |  2003-02-08  |  34.2 KB  |  899 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. //This function does some registry cleanup specific to WinXP
  97. //  Return value of true means that we are upgrading over a NS6.x installation.
  98. function xpCleanupRegistry(winreg)
  99. {
  100.   var fFileToVerify;
  101.   var fFromRegistry;
  102.   var szN6ExePath;
  103.   var sfpToExe;
  104.   var sfpFromRegistry;
  105.   var regkey;
  106.   var subkey;
  107.   var str1;
  108.   var str2;
  109.  
  110.   fFileToVerify = getFolder("Program", "Netscp6.exe");
  111.   if(File.isFile(fFileToVerify))
  112.   {
  113.     logComment("Found " + fFileToVerify + " so this is an upgrade over NS6.x");
  114.  
  115.     // We've got to turn 1) the path to the file which we found and
  116.     //   2) the path in the registry into strings which can be compared, 
  117.     //   taking into account the fact that either could be a shortened path.
  118.     regkey         = "SOFTWARE\\Clients\\StartMenuInternet\\NETSCP6.EXE";
  119.     subkey         = regkey + "\\shell\\open\\command";
  120.     szFromRegistry = winreg.getValueString(subkey, "");
  121.     fFromRegistry  = getFolder("file:///", szFromRegistry);   
  122.     sfpToExe        = File.windowsGetShortName(fFileToVerify);
  123.     sfpFromRegistry = File.windowsGetShortName(fFromRegistry);
  124.     str1 = new String(sfpToExe);
  125.     str2 = new String(sfpFromRegistry);
  126.     logComment("Comparing " + str1.toUpperCase() + " to " + str2.toUpperCase());
  127.  
  128.     if(str1.toUpperCase() == str2.toUpperCase())
  129.     {
  130.       winreg.deleteKey(regkey + "\\DefaultIcon");
  131.       winreg.deleteKey(regkey + "\\shell\\open\\command");
  132.       winreg.deleteKey(regkey + "\\shell\\open");
  133.       winreg.deleteKey(regkey + "\\shell\\properties\\command");
  134.       winreg.deleteKey(regkey + "\\shell\\properties");
  135.       winreg.deleteKey(regkey + "\\shell");
  136.       winreg.deleteKey(regkey);
  137.       subkey = "SOFTWARE\\Clients\\StartMenuInternet";
  138.       szFromRegistry = winreg.getValueString(subkey, "");
  139.       str1 = new String(szFromRegistry);
  140.       if(str1.toUpperCase() == "NETSCP6.EXE")
  141.         err = winreg.setValueString(subkey, "", "Netscp.exe");
  142.     }
  143.  
  144.     return(true);
  145.   }
  146.   else
  147.   {
  148.     logComment("Did not find file " + fFileToVerify + " so this is not an upgrade over NS6.x");
  149.     return(false);
  150.   }
  151. }
  152.  
  153. function DeleteObsoleteShortcutsOnUpgrade()
  154. {
  155.   var subkey;
  156.   var szStartMenuPrograms;
  157.   var szStartMenu;
  158.   var szFolderDesktop;
  159.   var winreg;
  160.   var is_winnt;
  161.   var keyVersion;
  162.   var fFileToCheck;
  163.   var fileFound;
  164.   var t = InstallTrigger;
  165.   var is6;
  166.   var is62;
  167.   var verNum;
  168.  
  169.   winreg = getWinRegistry();
  170.   if(winreg != null)
  171.   {
  172.     /* determine if the script is running under NT or not */
  173.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  174.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  175.     szCurrentVersion    = winreg.getValueString(subkey, "CurrentVersion");
  176.     logComment("szCurrentVersion: " + szCurrentVersion);
  177.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  178.     {
  179.       is_winnt = false;
  180.     }
  181.     else
  182.     {
  183.       is_winnt = true;
  184.     }
  185.  
  186.     logComment("is_winnt value: " + is_winnt);
  187.     if(!is_winnt || restrictedAccess)
  188.     {
  189.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  190.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  191.       szStartMenuPrograms = winreg.getValueString(subkey, "Programs");
  192.       szStartMenu         = winreg.getValueString(subkey, "Start Menu");
  193.       szFolderDesktop     = winreg.getValueString(subkey, "Desktop");
  194.     }
  195.     else
  196.     {
  197.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  198.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  199.       szStartMenuPrograms = winreg.getValueString(subkey, "Common Programs");
  200.       szStartMenu         = winreg.getValueString(subkey, "Common Start Menu");
  201.       szFolderDesktop     = winreg.getValueString(subkey, "Common Desktop");
  202.     }
  203.  
  204.     is6  = Math.abs(t.compareVersion("Browser","6.0")) < t.MINOR_DIFF ||
  205.            Math.abs(t.compareVersion("Browser","6.10")) < t.MINOR_DIFF;
  206.  
  207.     is62 = Math.abs(t.compareVersion("Browser","6.2")) < t.MINOR_DIFF ||
  208.            Math.abs(t.compareVersion("Browser","6.20")) < t.MINOR_DIFF;
  209.  
  210.     keyVersion = t.getVersion("Browser");
  211.     logComment("Folder Desktop          : " + szFolderDesktop);
  212.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  213.     logComment("Folder StartMenu        : " + szStartMenu);
  214.     logComment("keyVersion              : " + keyVersion);
  215.     logComment("file to check           : " + fFileToCheck);
  216.     logComment("file to check found     : " + fileFound);
  217.     if(keyVersion != null)
  218.     {
  219.       verNum = "";
  220.       if(is62)
  221.         verNum = "6.2";
  222.       else if(is6)
  223.         verNum = "6";
  224.       else
  225.         return;
  226.  
  227.       logComment("Upgrading from " + verNum);
  228.       deleteThisFile("file:///",   szFolderDesktop + "\\Netscape " + verNum + ".lnk");
  229.       deleteThisFile("file:///",   szStartMenu + "\\Netscape SmartUpdate.lnk");
  230.       deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape " + verNum + "\\Netscape " + verNum + ".lnk");
  231.       deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape " + verNum + "\\Profile Manager.lnk");
  232.       deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape " + verNum + "\\Free Aol & Unlimited Internet.url");
  233.       deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape " + verNum + "\\Mail.lnk");
  234.       deleteThisFolder("file:///", szStartMenuPrograms + "\\Netscape " + verNum, false);
  235.     }
  236.   }
  237. }
  238.  
  239. function registerNetscape6Path(winreg, fFolderPath)
  240. {
  241.   var subkey;
  242.   var valname;
  243.   var value;
  244.   var err;
  245.  
  246.   subkey  = "SOFTWARE\\Netscape";
  247.   winreg.createKey(subkey,"");
  248.  
  249.   valname = "CurrentVersion";
  250.   value   = "7.02 (en)";
  251.   subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  252.   winreg.createKey(subkey,"");
  253.   err     = winreg.setValueString(subkey, valname, value);
  254.  
  255.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\7.02 (en)";
  256.   winreg.createKey(subkey,"");
  257.  
  258.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\7.02 (en)\\Main";
  259.   winreg.createKey(subkey,"");
  260.  
  261.   valname = "Program Folder Path";
  262.   value   = fFolderPath;
  263.   err     = winreg.setValueString(subkey, valname, value);
  264.  
  265.   valname = "Install Directory";
  266.   value   = fProgram;
  267.   err     = winreg.setValueString(subkey, valname, value);
  268.  
  269.   valname = "PathToExe";
  270.   value   = fProgram + "Netscp.exe";
  271.   err     = winreg.setValueString(subkey, valname, value);
  272. }
  273.  
  274. function registerProgramFolderKey(winreg, fFolderPath)
  275. {
  276.   var subkey;
  277.   var valname;
  278.   var value;
  279.   var err;
  280.  
  281.   /* set the Program Folder Path in the Mozilla key in the Windows Registry */
  282.   subkey  = "SOFTWARE\\Netscape";
  283.   winreg.createKey(subkey,"");
  284.  
  285.   valname = "CurrentVersion";
  286.   subkey  = "SOFTWARE\\Netscape\\Netscape";
  287.   winreg.createKey(subkey,"");
  288.  
  289.   valname = "CurrentVersion";
  290.   value   = "7.02 (en)";
  291.   err     = winreg.setValueString(subkey, valname, value);
  292.  
  293.   subkey  = "SOFTWARE\\Netscape\\Netscape\\7.02 (en)";
  294.   winreg.createKey(subkey,"");
  295.  
  296.   subkey  = "SOFTWARE\\Netscape\\Netscape\\7.02 (en)\\Main";
  297.   winreg.createKey(subkey,"");
  298.  
  299.   valname = "Program Folder Path";
  300.   value   = fFolderPath;
  301.   err     = winreg.setValueString(subkey, valname, value);
  302. }
  303.  
  304. function createShortcuts() 
  305. {
  306.   var subkey;
  307.   var valname;
  308.   var szStartMenuPrograms;
  309.   var szStartMenu;
  310.   var szFolderDesktop;
  311.   var szFolderQuickLaunch;
  312.   var szFolderSendTo;
  313.   var szFolderAppData;
  314.   var winreg;
  315.   var fWindows;
  316.   var fTemp;
  317.   var fProgram;
  318.   var fDefShortcuts;
  319.   var fileExe;
  320.   var fileProfileIcon;
  321.   var fileComposerIcon;
  322.   var fileHelpIcon;
  323.   var scExeDesc;
  324.   var scNavigatorDesc;
  325.   var scProfileDesc;
  326.   var scProfileParam;
  327.   var scAddrBookDesc;
  328.   var scAddrBookParam;
  329.   var scComposerDesc;
  330.   var scComposerParam;
  331.   var scHelpDesc;
  332.   var scHelpParam;
  333.   var scFolderName;
  334.   var szStartupFolder;
  335.   var fFolderStartMenu;
  336.   var fFolderDesktop;
  337.   var fFolderPath;
  338.   var fFolderPathStr;
  339.   var fFolderQuickLaunch;
  340.   var is_winnt;
  341.   var szCurrentVersion;
  342.   var folderQuickLaunchExists;
  343.  
  344.   winreg                    = getWinRegistry();
  345.   fWindows                  = getFolder("Windows");
  346.   fProgram                  = getFolder("Program");
  347.   fDefShortcuts             = getFolder("Program","defaults/shortcuts");
  348.   fileExe                   = getFolder("Program", "Netscp.exe");
  349.   fileProfileIcon           = getFolder("Chrome", "icons/default/profileWindow.ico");
  350.   fileAddrBookIcon          = getFolder("Chrome", "icons/default/addressbookWindow.ico");
  351.   fileComposerIcon          = getFolder("Chrome", "icons/default/editorWindow.ico");
  352.   fileHelpIcon              = getFolder("Chrome", "icons/default/help.ico");
  353.   scExeDesc                 = "Netscape 7.0";
  354.   scNavigatorDesc           = "Navigator";
  355.   scProfileDesc             = "Profile Manager";
  356.   scProfileParam            = "-ProfileManager";
  357.   scAddrBookDesc            = "Address Book";
  358.   scAddrBookParam           = "-addressbook";
  359.   scComposerDesc            = "Composer";
  360.   scComposerParam           = "-edit";
  361.   scHelpDesc                = "Help & Support";
  362.   scHelpParam               = "-chrome chrome://help/content";
  363.   scFolderName              = "Netscape 7.0";
  364.   if(winreg != null) 
  365.   {
  366.     /* determine if the script is running under NT or not */
  367.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  368.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  369.     valname             = "CurrentVersion";
  370.     szCurrentVersion    = winreg.getValueString(subkey, valname);
  371.     logComment("szCurrentVersion: " + szCurrentVersion);
  372.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  373.     {
  374.       is_winnt = false;
  375.     }
  376.     else
  377.     {
  378.       is_winnt = true;
  379.     }
  380.  
  381.     logComment("is_winnt value: " + is_winnt);
  382.     if(!is_winnt || restrictedAccess)
  383.     {
  384.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  385.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  386.       szStartMenuPrograms = winreg.getValueString(subkey, "Programs");
  387.       szStartMenu         = winreg.getValueString(subkey, "Start Menu");
  388.       szFolderDesktop     = winreg.getValueString(subkey, "Desktop");
  389.       szStartupFolder     = winreg.getValueString(subkey, "Startup");
  390.     }
  391.     else
  392.     {
  393.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  394.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  395.       szStartMenuPrograms = winreg.getValueString(subkey, "Common Programs");
  396.       szStartMenu         = winreg.getValueString(subkey, "Common Start Menu");
  397.       szFolderDesktop     = winreg.getValueString(subkey, "Common Desktop");
  398.       szStartupFolder     = winreg.getValueString(subkey, "Common Startup");
  399.     }
  400.  
  401.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  402.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  403.     valname             = "SendTo";
  404.     szFolderSendTo      = winreg.getValueString(subkey, valname);
  405.  
  406.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  407.     valname             = "AppData";
  408.     szFolderAppData     = winreg.getValueString(subkey, valname);
  409.  
  410.     // locate the Quick Launch folder
  411.     szFolderQuickLaunch     = szFolderAppData + "\\Microsoft\\Internet Explorer\\Quick Launch";
  412.     fFolderQuickLaunch      = getFolder("file:///", szFolderQuickLaunch);
  413.     folderQuickLaunchExists = File.isDirectory(fFolderQuickLaunch);
  414.     if(!folderQuickLaunchExists)
  415.     {
  416.       subkey                  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\GrpConv\\MapGroups";
  417.       valname                 = "Quick Launch";
  418.       szFolderQuickLaunch     = winreg.getValueString(subkey, valname);
  419.       folderQuickLaunchExists = File.isDirectory(fFolderPath);
  420.       if(folderQuickLaunchExists)
  421.         fFolderQuickLaunch = getFolder("file:///", szFolderQuickLaunch);
  422.     }
  423.     logComment("folderQuickLaunchExists: " + folderQuickLaunchExists);
  424.  
  425.     subkey              = "SOFTWARE\\Netscape\\Netscape\\7.02 (en)\\Main";
  426.     valname             = "Program Folder Path";
  427.     fFolderPathStr      = winreg.getValueString(subkey, valname);
  428.     if((fFolderPathStr == "") || (fFolderPathStr == null))
  429.     {
  430.       fTemp       = szStartMenuPrograms + "\\" + scFolderName;
  431.       fFolderPath = getFolder("file:///", fTemp);
  432.     }
  433.     else
  434.     {
  435.       /* convert the path string to a path folder object */
  436.       fFolderPath = getFolder("file:///", fFolderPathStr);
  437.     }
  438.  
  439.     /* Convert path strings to a path folder objects */
  440.     fFolderDesktop = getFolder("file:///", szFolderDesktop);
  441.     fFolderStartMenu = getFolder("file:///", szStartMenu);
  442.  
  443.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  444.     logComment("Folder StartMenu        : " + szStartMenu);
  445.     logComment("Folder FolderDesktop    : " + szFolderDesktop);
  446.     logComment("Folder FolderSendTo     : " + szFolderSendTo);
  447.     logComment("Folder FolderQuickLaunch: " + szFolderQuickLaunch);
  448.     logComment("fileExe                 : " + fileExe);
  449.     logComment("fFolderPath             : " + fFolderPath);
  450.     logComment("fProgram                : " + fProgram);
  451.  
  452.     /* explicitly create the fFolderPath even though the windowsShortcut function creates the folder.
  453.      * This is so that the folder creation gets logged for uninstall to remove it. */
  454.     if(!File.exists(fFolderPath))
  455.       File.dirCreate(fFolderPath);
  456.     if(!File.exists(fDefShortcuts))
  457.       File.dirCreate(fDefShortcuts);
  458.  
  459.     /* create the shortcuts */
  460.     File.windowsShortcut(fileExe, fFolderStartMenu, scExeDesc,    fProgram, "",              fileExe, 0);
  461.     File.windowsShortcut(fileExe, fFolderDesktop, scExeDesc,      fProgram, "",              fileExe, 0);
  462.     File.windowsShortcut(fileExe, fDefShortcuts,  scExeDesc,      fProgram, "",              fileExe, 0);
  463.     File.windowsShortcut(fileExe, fFolderPath,    scNavigatorDesc,fProgram, "",              fileExe, 0);
  464.     File.windowsShortcut(fileExe, fFolderPath,    scProfileDesc,  fProgram, scProfileParam,  fileProfileIcon, 0);
  465.     File.windowsShortcut(fileExe, fFolderPath,    scAddrBookDesc, fProgram, scAddrBookParam, fileAddrBookIcon, 0);
  466.     File.windowsShortcut(fileExe, fFolderPath,    scComposerDesc, fProgram, scComposerParam, fileComposerIcon, 0);
  467.     File.windowsShortcut(fileExe, fFolderPath,    scHelpDesc,     fProgram, scHelpParam,     fileHelpIcon, 0);
  468.  
  469.     // create shortcut in the Quick Launch folder
  470.     if(folderQuickLaunchExists)
  471.       File.windowsShortcut(fileExe, fFolderQuickLaunch, scExeDesc, fProgram,  "", fileExe, 0);
  472.  
  473.     if(!restrictedAccess)
  474.     {
  475.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  476.       registerProgramFolderKey(winreg, fFolderPath);
  477.       registerNetscape6Path(winreg, fFolderPath);
  478.     }
  479.  
  480.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  481.     registerProgramFolderKey(winreg, fFolderPath);
  482.     registerNetscape6Path(winreg, fFolderPath);
  483.  
  484.     /* remove turbo mode shortcut */
  485.  
  486.     fFolderPath = getFolder("file:///", szStartupFolder);
  487.                                     
  488.     /* remove shortcut from the startup folder */
  489.  
  490.     basename = "Netscp.exe"
  491.     fTemp = fFolderPath + basename + ".lnk";
  492.     fFolderPath = getFolder("file:///", fTemp);
  493.     if (File.exists(fFolderPath)) 
  494.     { 
  495.         logComment("Removing Quick Launch shortcut from Windows startup folder\n");
  496.         fileDelete(fFolderPath);
  497.     }
  498.  
  499.     subkey  = "SOFTWARE\\Netscape\\Netscape\\7.02 (en)\\Setup";
  500.     valname = "browserargs";
  501.     regvalue = winreg.getValueString(subkey, valname);
  502.  
  503.     /* log this so if the user turns on turbo mode in the browser the uninstaller will undo it */
  504.     logComment( "store registry value string: HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run [Mozilla Quick Launch]");
  505.     if (regvalue && regvalue != undefined && regvalue.length != 0) 
  506.     {
  507.         var value = new String(regvalue);
  508.         var index = value.indexOf("turbo");
  509.         if (index != -1) 
  510.         {
  511.             var index2 = value.indexOf("=", index);
  512.             if (index2 != -1) 
  513.             {
  514.                 turboarg = value.slice(index2 + 1, index2 + 2);
  515.                 winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  516.                 subkey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
  517.                 valname = "Mozilla Quick Launch";
  518.  
  519.                 //Is aim set already?
  520.                 szSubKeyVal = winreg.getValueString(subkey, valname);
  521.                 value = new String(szSubKeyVal);
  522.                 index = value.indexOf("-aim");
  523.                 if(index == -1)
  524.                   bAimSet = false;
  525.                 else
  526.                   bAimSet = true;
  527.  
  528.                 fTemp = fileExe;
  529.                 fileExe = getFolder("file:///", fTemp);
  530.                 if ( turboarg == "Y" || turboarg == "y") 
  531.                 {
  532.                     newKey = '"' + fileExe + '"' + ' -turbo';
  533.                     if(bAimSet)
  534.                        newKey = newKey + ' -aim';
  535.                     else
  536.                        winreg.createKey(subkey,"");
  537.                     winreg.setValueString(subkey, valname, newKey);
  538.                 } 
  539.                 else 
  540.                 {
  541.                     if (bAimSet)
  542.                     {
  543.                        newKey = '"' + fileExe + '"' + ' -aim';
  544.                        winreg.setValueString(subkey, valname, newKey);
  545.                     }
  546.                     else
  547.                        winreg.deleteValue(subkey, valname);
  548.                 }
  549.             }
  550.         }
  551.     }
  552.   }
  553.   else
  554.   {
  555.     logComment("winreg is null");
  556.   }
  557. }
  558.  
  559. function IsWinnt()
  560. {
  561.   /* Determines if the script is running under NT or not.
  562.    *
  563.    */
  564.   var winreg = getWinRegistry();
  565.   var subkey;
  566.   var valname;
  567.   var szCurrentVersion;
  568.  
  569.   winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  570.   subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  571.   valname             = "CurrentVersion";
  572.   szCurrentVersion    = winreg.getValueString(subkey, valname);
  573.   logComment("szCurrentVersion: " + szCurrentVersion);
  574.   if((szCurrentVersion == "") || (szCurrentVersion == null))
  575.   {
  576.     return false;
  577.   }
  578.   else
  579.   {
  580.     return true;
  581.   }
  582. }
  583.  
  584. function registerMainKeys(winreg)
  585. {
  586.   var subkey;  //the name of the subkey you are poking around in
  587.   var valname; //the name of the value you want to look at
  588.   var value;   //the data in the value you want to look at.
  589.   var err;
  590.  
  591.   subkey  = "SOFTWARE\\Netscape";
  592.   winreg.createKey(subkey,"");
  593.  
  594.   subkey  = "SOFTWARE\\Netscape\\Netscape";
  595.   winreg.createKey(subkey,"");
  596.  
  597.   valname = "CurrentVersion";
  598.   value   = "7.02 (en)";
  599.   err     = winreg.setValueString(subkey, valname, value);
  600.  
  601.   subkey  = "SOFTWARE\\Netscape\\Netscape\\7.02 (en)";
  602.   winreg.createKey(subkey,"");
  603.  
  604.   subkey  = "SOFTWARE\\Netscape\\Netscape\\7.02 (en)\\Main";
  605.   winreg.createKey(subkey,"");
  606.  
  607.   valname = "Install Directory";
  608.   value   = fProgram;
  609.   err     = winreg.setValueString(subkey, valname, value);
  610.  
  611.   // The following keys are required to be created to supply information
  612.   // about the location of the Gecko Embedded Client to 3rd party apps.
  613.   // "SOFTWARE\\Mozilla" must not be localized!
  614.   subkey  = "SOFTWARE\\Mozilla\\Netscape 7.02";
  615.   winreg.createKey(subkey,"");
  616.   err     = winreg.setValueString(subkey, "GeckoVer", "1.0.1");
  617.  
  618.   subkey  = "SOFTWARE\\Mozilla\\Netscape 7.02\\Extensions";
  619.   winreg.createKey(subkey,"");
  620.  
  621.   valname = "Components";
  622.   value   = fProgram + "Components";
  623.   err     = winreg.setValueString(subkey, valname, value);
  624.  
  625.   valname = "Plugins";
  626.   value   = fProgram + "Plugins";
  627.   err     = winreg.setValueString(subkey, valname, value);
  628.  
  629.   subkey  = "SOFTWARE\\Mozilla\\Netscape 7.02\\bin";
  630.   winreg.createKey(subkey,"");
  631.  
  632.   valname = "PathToExe";
  633.   value   = fProgram + "Netscp.exe";
  634.   err     = winreg.setValueString(subkey, valname, value);
  635.  
  636.   subkey  = "SOFTWARE\\Netscape\\Netscape\\7.02 (en)\\Main";
  637.   winreg.setValueString(subkey, valname, value);
  638.  
  639.   // Register as a windows XP internet browser
  640.   if( IsWinnt() )
  641.   {
  642.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  643.  
  644.     winreg.createKey("Software\\Clients\\StartMenuInternet\\Netscp.exe","");
  645.     winreg.createKey("Software\\Clients\\StartMenuInternet\\Netscp.exe\\InstallInfo","");
  646.  
  647.     subkey = "Software\\Clients\\StartMenuInternet\\Netscp.exe\\InstallInfo";
  648.     valname = "HideIconsCommand";
  649.     data = "\"" + fProgram + "uninstall\\NSUninst.exe\" /ms /ua \"7.02 (en)\" /hs browser";
  650.     winreg.setValueString(subkey, valname, data);
  651.  
  652.     subkey = "Software\\Clients\\StartMenuInternet\\Netscp.exe\\InstallInfo";
  653.     valname = "IconsVisible";
  654.     winreg.setValueNumber(subkey, valname, 1);
  655.  
  656.     subkey = "Software\\Clients\\StartMenuInternet\\Netscp.exe\\InstallInfo";
  657.     valname = "ReinstallCommand";
  658.     data = "\"" + fProgram + "Netscp.exe\" -silent -nosplash -setDefaultBrowser ";
  659.     winreg.setValueString(subkey, valname, data);
  660.  
  661.     subkey = "Software\\Clients\\StartMenuInternet\\Netscp.exe\\InstallInfo";
  662.     valname = "ShowIconsCommand";
  663.     data = "\"" + fProgram + "uninstall\\NSUninst.exe\" /ms /ua \"7.02 (en)\" /ss browser";
  664.     winreg.setValueString(subkey, valname, data);
  665.   }
  666.  
  667. }
  668.  
  669. function updateWinReg()
  670. {
  671.   //Notes:
  672.   // can't use a double backslash before subkey - Windows already puts it in.
  673.   // subkeys have to exist before values can be put in.
  674.   var winreg = getWinRegistry();
  675.   var subkey;  //the name of the subkey you are poking around in
  676.   var subkey2; //the name of the other subkey you are poking around in
  677.   var valname; //the name of the value you want to look at
  678.   var value;   //the data in the value you want to look at.
  679.   var err;
  680.   var ikwDefined;
  681.  
  682.   if(winreg != null) 
  683.   {
  684.     /* This will check to see if the user has restricted access or not.
  685.      * It checks to see if HKEY_LOCALMACHINE\SOFTWARE is writable.  If
  686.      * it is, then access is not restricted.  This is only used to
  687.      * determine which Desktop, Programs, and Start Menu folders
  688.      * are to used: common or per user
  689.      */
  690.     restrictedAccess = false;
  691.     ikwDefined = typeof(winreg.isKeyWritable);
  692.     logComment("winreg.isKeyWritable(): " + ikwDefined);
  693.     if(ikwDefined == "function")
  694.     {
  695.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  696.       if(!winreg.isKeyWritable("SOFTWARE"))
  697.         restrictedAccess = true;
  698.     }
  699.  
  700.     // set the App Paths key here
  701.     // Keep the old App Paths key around in case legacy software is using it to find us
  702.     subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Netscp.exe";
  703.     subkey2 = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Netscp6.exe";
  704.     winreg.createKey(subkey,"");
  705.     winreg.createKey(subkey2,"");
  706.  
  707.     valname = "";
  708.     value   = fProgram + "Netscp.exe";
  709.     err     = winreg.setValueString(subkey, valname, value);
  710.     err     = winreg.setValueString(subkey2, valname, value);
  711.  
  712.     valname = "Path";
  713.     value   = fProgram;
  714.     err     = winreg.setValueString(subkey, valname, value);
  715.     err     = winreg.setValueString(subkey2, valname, value);
  716.  
  717.     logComment("restrictedAccess value: " + restrictedAccess);
  718.     if(!restrictedAccess)
  719.     {
  720.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  721.       registerMainKeys(winreg);  // this call may change winreg root key, so need to reset it
  722.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  723.       xpCleanupRegistry(winreg);
  724.     }
  725.  
  726.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  727.     registerMainKeys(winreg); // this call may change winreg root key, so need to reset it
  728.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  729.     xpCleanupRegistry(winreg);
  730.   }
  731. }
  732.  
  733. function upgradeCleanup()
  734. {
  735.   // Obsolete files from previous Netscape installation that
  736.   // need to be cleaned up.
  737.   deleteThisFile("Program",    "oji.dll");
  738.   deleteThisFile("Program",    "jsdom.dll");
  739.   deleteThisFile("Program",    "img3250.dll");
  740.   deleteThisFile("Program",    "gkgfxwin.dll");
  741.   deleteThisFile("Program",    "gkwidget.dll");
  742.   deleteThisFile("Program",    "defaults/pref/psm-glue.js");
  743.   deleteThisFile("Program",    "defaults/pref/config-ns.js");
  744.   deleteThisFile("Program",    "defaults/pref/editor-ns.js");
  745.   deleteThisFile("Program",    "defaults/wallet/URLFieldSchema.tbl");
  746.   deleteThisFile("Program",    "res/acceptlanguage.properties");
  747.   deleteThisFile("Program",    "res/broken-image.gif");
  748.   deleteThisFile("Program",    "res/nssifail.txt");
  749.   deleteThisFile("Program",    "nsldap32v40.dll");
  750.   deleteThisFile("Program",    "Netscp6.exe");
  751.   deleteThisFile("Program",    "uninstall/N6Uninst.exe");
  752.   deleteThisFile("Components", "alchrdet.dll");
  753.   deleteThisFile("Components", "gkhtml.dll");
  754.   deleteThisFile("Components", "mozucth.dll");
  755.   deleteThisFile("Components", "nsgif.dll");
  756.   deleteThisFile("Components", "nsjpg.dll");
  757.   deleteThisFile("Components", "nsmng.dll");
  758.   deleteThisFile("Components", "nspng.dll");
  759.   deleteThisFile("Components", "smime.dll");
  760.   deleteThisFile("Components", "AcctIdl.dll");
  761.   deleteThisFile("Components", "chardetc.dll");
  762.   deleteThisFile("Components", "evntloop.dll");
  763.   deleteThisFile("Components", "nativapp.dll");
  764.   deleteThisFile("Components", "universalchardet.dll");
  765.   deleteThisFile("Components", "n2p.dll");
  766.   deleteThisFile("Chrome",     "chrome.rdf");
  767.   deleteThisFile("Chrome",     "net2phone.jar");
  768.   deleteThisFolder("Chrome",   "overlayinfo");
  769. }
  770.  
  771. // main
  772. var srDest;
  773. var err;
  774. var fProgram;
  775. var fWindowsSystem;
  776. var fileComponentRegStr;
  777. var fileComponentReg;
  778. var restrictedAccess;
  779.  
  780. srDest = 20609;
  781. err    = initInstall("Netscape Navigator", "Browser", "7.0.2.2003020809"); 
  782. logComment("initInstall: " + err);
  783.  
  784. fProgram  = getFolder("Program");
  785. fWindowsSystem = getFolder("Win System");
  786. logComment("fProgram: " + fProgram);
  787.  
  788. if(verifyDiskSpace(fProgram, srDest))
  789. {
  790.   setPackageFolder(fProgram);
  791.  
  792.   /* delete the obsolete shortcuts on upgrade */
  793.   DeleteObsoleteShortcutsOnUpgrade();
  794.  
  795.   upgradeCleanup();
  796.   err = addDirectory("",
  797.                      "7.0.2.2003020809",
  798.                      "bin",              // dir name in jar to extract 
  799.                      fProgram,           // Where to put this file (Returned from getFolder) 
  800.                      "",                 // subdir name to create relative to fProgram
  801.                      true);              // Force Flag 
  802.   logComment("addDirectory() of Program returned: " + err);
  803.  
  804.   // check return value
  805.   if(err == SUCCESS)
  806.   {
  807.     fileToRegister = getFolder(fProgram, "ISimpleDOMNodeMarshal.dll");
  808.     err2           = File.windowsRegisterServer(fileToRegister);
  809.     logComment("windowsRegisterServer() returned: " + err2);
  810.     fileToRegister = getFolder(fProgram, "ISimpleDOMDocumentMarshal.dll");
  811.     err2           = File.windowsRegisterServer(fileToRegister);
  812.     logComment("windowsRegisterServer() returned: " + err2);
  813.  
  814.     updateWinReg();
  815.     createShortcuts();
  816.     resetError();
  817.  
  818.     // register chrome
  819.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-platform/");
  820.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator-platform/");
  821.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator-platform/");
  822.  
  823.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-region/");
  824.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator-region/");
  825.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor-region/");
  826.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator-region/");
  827.  
  828.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global/");
  829.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/autoconfig/");
  830.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/cookie/");
  831.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/wallet/");
  832.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","content-packs.jar"),"content/content-packs/");
  833.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator/");
  834.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor/");
  835.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator/");
  836.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/mozldap/");
  837.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/necko/");
  838.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","forms.jar"),"content/forms/");
  839.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/communicator/");
  840.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/editor/");
  841.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/global/");
  842.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/messenger/");
  843.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/navigator/");
  844.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/aim/");
  845.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","forms.jar"), "skin/classic/forms/");
  846.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","help.jar"),"content/help/");
  847.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/p3p/");
  848.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/xbl-marquee/");
  849.  
  850.     /* Log files that are created after the installer is done, so they can be uninstalled */
  851.     logComment("Installing: "    + fProgram + "Xpcs Registry.dat");
  852.     logComment("Installing: "    + fProgram + "xpcom.log");
  853.     logComment("Create Folder: " + fProgram + "components");
  854.     logComment("Installing: "    + fProgram + "components\\xpti.dat");
  855.     logComment("Installing: "    + fProgram + "components\\xptitemp.dat");
  856.     logComment("Create Folder: " + fProgram + "chrome");
  857.     logComment("Installing: "    + fProgram + "chrome\\installed-chrome.txt");
  858.     logComment("Installing: "    + fProgram + "chrome\\chrome.rdf");
  859.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo");
  860.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\communicator");
  861.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\communicator\\content");
  862.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\communicator\\content\\overlays.rdf");
  863.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\editor");
  864.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\editor\\content");
  865.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\editor\\content\\overlays.rdf");
  866.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\messenger");
  867.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\messenger\\content");
  868.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\messenger\\content\\overlays.rdf");
  869.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator");
  870.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator\\content");
  871.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\navigator\\content\\overlays.rdf");
  872.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator\\skin");
  873.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\navigator\\skin\\stylesheets.rdf");
  874.  
  875.     err = getLastError();
  876.     if (err == SUCCESS)
  877.     {
  878.         performInstall(); 
  879.         if (! ('buildID' in Install))
  880.         {
  881.             logComment("Running Pre-Mozilla 0.9.1");
  882.             initInstall("Post-install Cleanup Utility", "Browser/xpicleanup", "7.0.2.2003020809");
  883.             cleanupUtility = getFolder(fProgram, "xpicleanup.exe");
  884.             err = File.execute(cleanupUtility);
  885.             logComment("execute() returned: " + err);
  886.             err = performInstall();
  887.         }
  888.     }
  889.     else
  890.         cancelInstall(err);
  891.   }
  892.   else
  893.     cancelInstall(err);
  894. }
  895. else
  896.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  897.  
  898. // end main
  899.