home *** CD-ROM | disk | FTP | other *** search
/ PC Extra 07 & 08 / pca1507.iso / tools / mozilla / NL / browser.xpi / install.js
Encoding:
JavaScript  |  2003-04-25  |  31.8 KB  |  773 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 if (!platformStr.search(/^OS\/2/))
  75.       platformNode = 'win';
  76.     else
  77.       platformNode = 'unix';
  78.   }
  79.   else
  80.   {
  81.     var fOSMac  = getFolder("Mac System");
  82.     var fOSWin  = getFolder("Win System");
  83.  
  84.     logComment("fOSMac: "  + fOSMac);
  85.     logComment("fOSWin: "  + fOSWin);
  86.  
  87.     if(fOSMac != null)
  88.       platformNode = 'mac';
  89.     else if(fOSWin != null)
  90.       platformNode = 'win';
  91.     else
  92.       platformNode = 'unix';
  93.   }
  94.  
  95.   return platformNode;
  96. }
  97.  
  98. function registerProgramFolderKey(winreg, fFolderPath)
  99. {
  100.   var subkey;
  101.   var err;
  102.  
  103.   /* set the Program Folder Path in the Mozilla key in the Windows Registry */
  104.   winreg.createKey("SOFTWARE\\mozilla.org","");
  105.  
  106.   subkey  = "SOFTWARE\\mozilla.org\\Mozilla";
  107.   winreg.createKey(subkey,"");
  108.   err     = winreg.setValueString(subkey, "CurrentVersion", "1.3.1 (en)");
  109.  
  110.   subkey  = "SOFTWARE\\mozilla.org\\Mozilla\\1.3.1 (en)";
  111.   winreg.createKey(subkey,"");
  112.  
  113.   subkey  = "SOFTWARE\\mozilla.org\\Mozilla\\1.3.1 (en)\\Main";
  114.   winreg.createKey(subkey,"");
  115.   err     = winreg.setValueString(subkey, "Program Folder Path", fFolderPath);
  116. }
  117.  
  118. function createShortcuts() 
  119. {
  120.   var subkey;
  121.   var valname;
  122.   var szStartMenuPrograms;
  123.   var szStartMenu;
  124.   var szFolderDesktop;
  125.   var szFolderQuickLaunch;
  126.   var szFolderSendTo;
  127.   var szFolderAppData;
  128.   var szStartupFolder;
  129.   var winreg;
  130.   var fWindows;
  131.   var fTemp;
  132.   var fProgram;
  133.   var fDefShortcuts;
  134.   var fileExe;
  135.   var fileReadme;
  136.   var fileLicense;
  137.   var scExeDesc;
  138.   var scReadmeDesc;
  139.   var scLicenseDesc;
  140.   var scProfileDesc;
  141.   var scProfileDescParam;
  142.   var scFolderName;
  143.   var fFolderDesktop;
  144.   var fFolderPath;
  145.   var fFolderPathStr;
  146.   var fFolderQuickLaunch;
  147.   var is_winnt;
  148.   var szCurrentVersion;
  149.   var folderQuickLaunchExists;
  150.  
  151.   winreg               = getWinRegistry();
  152.   fWindows             = getFolder("Windows");
  153.   fProgram             = getFolder("Program");
  154.   fDefShortcuts        = getFolder("Program","defaults/shortcuts");
  155.   fTemp                = fProgram + "Mozilla.exe";
  156.   fileExe              = getFolder("file:///", fTemp);
  157.   fileReadme           = getFolder("file:///", fProgram + "readme.txt");
  158.   fileLicense          = getFolder("file:///", fProgram + "license.txt");
  159.   scExeDesc            = "Mozilla";
  160.   scReadmeDesc         = "Readme";
  161.   scLicenseDesc        = "License";
  162.   scProfileDesc        = "Profile Manager";
  163.   scProfileDescParam   = "-ProfileManager";
  164.   scFolderName         = "Mozilla";
  165.   if(winreg != null) 
  166.   {
  167.     /* determine if the script is running under NT or not */
  168.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  169.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  170.     szCurrentVersion    = winreg.getValueString(subkey, "CurrentVersion");
  171.     logComment("szCurrentVersion: " + szCurrentVersion);
  172.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  173.     {
  174.       is_winnt = false;
  175.     }
  176.     else
  177.     {
  178.       is_winnt = true;
  179.     }
  180.  
  181.     logComment("is_winnt value: " + is_winnt);
  182.     if(!is_winnt || restrictedAccess)
  183.     {
  184.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  185.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  186.       szStartMenuPrograms = winreg.getValueString(subkey, "Programs");
  187.       szStartMenu         = winreg.getValueString(subkey, "Start Menu");
  188.       szFolderDesktop     = winreg.getValueString(subkey, "Desktop");
  189.       szStartupFolder     = winreg.getValueString(subkey, "Startup");
  190.     }
  191.     else
  192.     {
  193.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  194.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  195.       szStartMenuPrograms = winreg.getValueString(subkey, "Common Programs");
  196.       szStartMenu         = winreg.getValueString(subkey, "Common Start Menu");
  197.       szFolderDesktop     = winreg.getValueString(subkey, "Common Desktop");
  198.       szStartupFolder     = winreg.getValueString(subkey, "Common Startup");
  199.    }
  200.  
  201.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  202.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  203.     szFolderSendTo      = winreg.getValueString(subkey, "SendTo");
  204.  
  205.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  206.     szFolderAppData     = winreg.getValueString(subkey, "AppData");
  207.  
  208.     // locate the Quick Launch folder
  209.     szFolderQuickLaunch     = szFolderAppData + "\\Microsoft\\Internet Explorer\\Quick Launch";
  210.     fFolderQuickLaunch      = getFolder("file:///", szFolderQuickLaunch);
  211.     folderQuickLaunchExists = File.isDirectory(fFolderQuickLaunch);
  212.     if(!folderQuickLaunchExists)
  213.     {
  214.       subkey                  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\GrpConv\\MapGroups";
  215.       szFolderQuickLaunch     = winreg.getValueString(subkey, "Quick Launch");
  216.       folderQuickLaunchExists = File.isDirectory(fFolderPath);
  217.       if(folderQuickLaunchExists)
  218.         fFolderQuickLaunch = getFolder("file:///", szFolderQuickLaunch);
  219.     }
  220.     logComment("folderQuickLaunchExists: " + folderQuickLaunchExists);
  221.  
  222.     subkey              = "SOFTWARE\\mozilla.org\\Mozilla\\1.3.1 (en)\\Main";
  223.     fFolderPathStr      = winreg.getValueString(subkey, "Program Folder Path");
  224.     if((fFolderPathStr == "") || (fFolderPathStr == null))
  225.     {
  226.       fTemp       = szStartMenuPrograms + "\\" + scFolderName;
  227.       fFolderPath = getFolder("file:///", fTemp);
  228.     }
  229.     else
  230.     {
  231.       /* convert the path string to a path folder object */
  232.       fFolderPath = getFolder("file:///", fFolderPathStr);
  233.     }
  234.     /* convert the path string to a path folder object */
  235.     fFolderDesktop = getFolder("file:///", szFolderDesktop);
  236.  
  237.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  238.     logComment("Folder StartMenu        : " + szStartMenu);
  239.     logComment("Folder FolderDesktop    : " + szFolderDesktop);
  240.     logComment("Folder FolderSendTo     : " + szFolderSendTo);
  241.     logComment("Folder FolderQuickLaunch: " + szFolderQuickLaunch);
  242.     logComment("fileExe                 : " + fileExe);
  243.     logComment("fFolderPath             : " + fFolderPath);
  244.     logComment("scExeDesc               : " + scExeDesc);
  245.     logComment("fProgram                : " + fProgram);
  246.  
  247.     /* explicitly create the fFolderPath even though the windowsShortcut function creates the folder.
  248.      * This is so that the folder creation gets logged for uninstall to remove it. */
  249.     if(!File.exists(fFolderPath))
  250.       File.dirCreate(fFolderPath);
  251.     if(!File.exists(fDefShortcuts))
  252.       File.dirCreate(fDefShortcuts);
  253.  
  254.     /* create the shortcuts */
  255.     File.windowsShortcut(fileExe, fFolderDesktop, scExeDesc,     fProgram,  "",                 fileExe, 0);
  256.     File.windowsShortcut(fileExe, fFolderPath,    scExeDesc,     fProgram,  "",                 fileExe, 0);
  257.     File.windowsShortcut(fileExe, fDefShortcuts,  scExeDesc,     fProgram,  "",                 fileExe, 0);
  258.     File.windowsShortcut(fileExe, fFolderPath,    scProfileDesc, fProgram,  scProfileDescParam, fileExe, 0);
  259.     File.windowsShortcut(fileReadme,  fFolderPath, scReadmeDesc,  fProgram, "",                 fileReadme, 0);
  260.     File.windowsShortcut(fileLicense, fFolderPath, scLicenseDesc, fProgram, "",                 fileLicense, 0);
  261.  
  262.     // create shortcut in the Quick Launch folder
  263.     if(folderQuickLaunchExists)
  264.       File.windowsShortcut(fileExe, fFolderQuickLaunch, scExeDesc, fProgram,  "", fileExe, 0);
  265.  
  266.     if(!restrictedAccess)
  267.     {
  268.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  269.       registerProgramFolderKey(winreg, fFolderPath);
  270.     }
  271.  
  272.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  273.     registerProgramFolderKey(winreg, fFolderPath);
  274.  
  275.     /* remove turbo mode shortcut */
  276.  
  277.     fFolderPath = getFolder("file:///", szStartupFolder);
  278.                                     
  279.     /* remove shortcut from the startup folder */
  280.  
  281.     basename = "Mozilla.exe"
  282.     fTemp = fFolderPath + basename + ".lnk";
  283.     fFolderPath = getFolder("file:///", fTemp);
  284.     if (File.exists(fFolderPath)) 
  285.     { 
  286.         logComment("Removing Quick Launch shortcut from Windows startup folder\n");
  287.         fileDelete(fFolderPath);
  288.     }
  289.  
  290.     subkey  = "SOFTWARE\\mozilla.org\\Mozilla\\1.3.1 (en)\\Setup";
  291.     regvalue = winreg.getValueString(subkey, "browserargs");
  292.  
  293.     /* log this so if the user turns on turbo mode in the browser the uninstaller will undo it */
  294.  
  295.     logComment( "store registry value string: HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run [Mozilla Quick Launch]");
  296.     if (regvalue && regvalue != undefined && regvalue.length != 0) 
  297.     {
  298.         var value = new String(regvalue);
  299.         var index = value.indexOf("turbo");
  300.         if (index != -1) 
  301.         {
  302.             var index2 = value.indexOf("=", index);
  303.             if (index2 != -1) 
  304.             {
  305.                 turboarg = value.slice(index2 + 1, index2 + 2);
  306.                 winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  307.                 subkey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
  308.                 valname = "Mozilla Quick Launch";
  309.                 if ( turboarg == "Y" || turboarg == "y") 
  310.                 {
  311.                     fTemp = fileExe;
  312.                     fileExe = getFolder("file:///", fTemp);
  313.                     newKey = '"' + fileExe + '"' + ' -turbo';
  314.                     winreg.createKey(subkey,"");
  315.                     winreg.setValueString(subkey, valname, newKey);
  316.                 } 
  317.                 else 
  318.                 {
  319.                     winreg.deleteValue(subkey, valname);
  320.                 }
  321.             }
  322.         }
  323.     }
  324.   }
  325.   else
  326.   {
  327.     logComment("winreg is null");
  328.   }
  329. }
  330. function IsWinnt()
  331. {
  332.   /* Determines if the script is running under NT or not.
  333.    *
  334.    */
  335.   var winreg = getWinRegistry();
  336.   var subkey;
  337.   var szCurrentVersion;
  338.  
  339.   winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  340.   subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  341.   szCurrentVersion    = winreg.getValueString(subkey, "CurrentVersion");
  342.   logComment("szCurrentVersion: " + szCurrentVersion);
  343.   if((szCurrentVersion == "") || (szCurrentVersion == null))
  344.   {
  345.     return false;
  346.   }
  347.   else
  348.   {
  349.     return true;
  350.   }
  351. }
  352.  
  353. function registerMainKeys(winreg)
  354. {
  355.   var subkey;  //the name of the subkey you are poking around in
  356.   var data;
  357.   var err;
  358.  
  359.   winreg.createKey("SOFTWARE\\mozilla.org","");
  360.  
  361.   subkey  = "SOFTWARE\\mozilla.org\\Mozilla";
  362.   winreg.createKey(subkey,"");
  363.   err     = winreg.setValueString(subkey, "CurrentVersion", "1.3.1 (en)");
  364.  
  365.   subkey  = "SOFTWARE\\mozilla.org\\Mozilla\\1.3.1 (en)";
  366.   winreg.createKey(subkey,"");
  367.  
  368.   subkey  = "SOFTWARE\\mozilla.org\\Mozilla\\1.3.1 (en)\\Main";
  369.   winreg.createKey(subkey,"");
  370.  
  371.   err     = winreg.setValueString(subkey, "Install Directory", fProgram);
  372.  
  373.   // The following keys are required to be created to supply information
  374.   // about the location of the Gecko Embedded Client to 3rd party apps.
  375.   // "SOFTWARE\\Mozilla" must not be localized!
  376.   subkey  = "SOFTWARE\\Mozilla\\Mozilla 1.3.1";
  377.   winreg.createKey(subkey,"");
  378.   err     = winreg.setValueString(subkey, "GeckoVer", "1.0.1");
  379.  
  380.   subkey  = "SOFTWARE\\Mozilla\\Mozilla 1.3.1\\Extensions";
  381.   winreg.createKey(subkey,"");
  382.   err     = winreg.setValueString(subkey, "Components", fProgram + "Components");
  383.   err     = winreg.setValueString(subkey, "Plugins", fProgram + "Plugins");
  384.  
  385.   subkey  = "SOFTWARE\\Mozilla\\Mozilla 1.3.1\\bin";
  386.   winreg.createKey(subkey,"");
  387.   err     = winreg.setValueString(subkey, "PathToExe", fProgram + "Mozilla.exe");
  388.  
  389.   subkey  = "SOFTWARE\\mozilla.org\\Mozilla\\1.3.1 (en)\\Main";
  390.   err     = winreg.setValueString(subkey, "PathToExe", fProgram + "Mozilla.exe");
  391.  
  392.   // Register as a windows XP internet browser
  393.   if( IsWinnt() )
  394.   {
  395.     subkey = "Software\\Clients\\StartMenuInternet\\Mozilla.exe";
  396.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  397.  
  398.     winreg.createKey(subkey, "");
  399.     winreg.createKey(subkey + "\\DefaultIcon", "");
  400.     winreg.createKey(subkey + "\\shell", "");
  401.     winreg.createKey(subkey + "\\shell\\open", "");
  402.     winreg.createKey(subkey + "\\shell\\open\\command", "");
  403.     winreg.createKey(subkey + "\\InstallInfo", "");
  404.     winreg.setValueString(subkey, "", "Mozilla");
  405.  
  406.     // path does not need to be quoted per MS doc
  407.     data = fProgram + "Mozilla.exe,0";
  408.     winreg.setValueString(subkey + "\\DefaultIcon", "", data);
  409.  
  410.     data = "\"" + fProgram + "Mozilla.exe\"";
  411.     winreg.setValueString(subkey + "\\shell\\open\\command", "", data);
  412.  
  413.     data = "\"" + fProgram + "uninstall\\MozillaUninstall.exe\" /ua \"1.3.1 (en)\" /hs browser";
  414.     winreg.setValueString(subkey + "\\InstallInfo", "HideIconsCommand", data);
  415.  
  416.     winreg.setValueNumber(subkey + "\\InstallInfo", "IconsVisible", 1);
  417.  
  418.     data = "\"" + fProgram + "Mozilla.exe\" -silent -nosplash -setDefaultBrowser ";
  419.     winreg.setValueString(subkey + "\\InstallInfo", "ReinstallCommand", data);
  420.  
  421.     data = "\"" + fProgram + "uninstall\\MozillaUninstall.exe\" /ua \"1.3.1 (en)\" /ss browser";
  422.     winreg.setValueString(subkey + "\\InstallInfo", "ShowIconsCommand", data);
  423.   }
  424. }
  425.  
  426. function updateWinReg()
  427. {
  428.   //Notes:
  429.   // can't use a double backslash before subkey - Windows already puts it in.
  430.   // subkeys have to exist before values can be put in.
  431.   var winreg = getWinRegistry();
  432.   var subkey;  //the name of the subkey you are poking around in
  433.   var err;
  434.   var ikwDefined;
  435.  
  436.   if(winreg != null) 
  437.   {
  438.     /* This will check to see if the user has restricted access or not.
  439.      * It checks to see if HKEY_LOCALMACHINE\SOFTWARE is writable.  If
  440.      * it is, then access is not restricted.  This is only used to
  441.      * determine which Desktop, Programs, and Start Menu folders
  442.      * are to used: common or per user
  443.      */
  444.     restrictedAccess = false;
  445.     ikwDefined = typeof(winreg.isKeyWritable);
  446.     logComment("winreg.isKeyWritable(): " + ikwDefined);
  447.     if(ikwDefined == "function")
  448.     {
  449.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  450.       if(!winreg.isKeyWritable("SOFTWARE"))
  451.         restrictedAccess = true;
  452.     }
  453.  
  454.     logComment("restrictedAccess value: " + restrictedAccess);
  455.     if(!restrictedAccess)
  456.     {
  457.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  458.       registerMainKeys(winreg);
  459.  
  460.       // set the App Paths key here
  461.       subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Mozilla.exe";
  462.       winreg.createKey(subkey,"");
  463.       err     = winreg.setValueString(subkey, "", fProgram + "Mozilla.exe");
  464.       err     = winreg.setValueString(subkey, "Path", fProgram);
  465.     }
  466.  
  467.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  468.     registerMainKeys(winreg);
  469.   }
  470. }
  471.  
  472. function upgradeCleanup()
  473. {
  474.   // Obsolete files from Netscape 6.0 and Netscape 6.01 that
  475.   // need to be cleaned up.
  476.   deleteThisFile("Program",    "oji.dll");
  477.   deleteThisFile("Program",    "jsdom.dll");
  478.   deleteThisFile("Program",    "img3250.dll");
  479.   deleteThisFile("Program",    "gkgfxwin.dll");
  480.   deleteThisFile("Program",    "gkwidget.dll");
  481.   deleteThisFile("Program",    "jpeg3250.dll");
  482.   deleteThisFile("Program",    "mozreg.dll");
  483.   deleteThisFile("Program",    "defaults/pref/config.js");
  484.   deleteThisFile("Program",    "defaults/pref/initpref.js");
  485.   deleteThisFile("Program",    "defaults/pref/psm-glue.js");
  486.   deleteThisFile("Program",    "defaults/pref/typeaheadfind.js");
  487.   deleteThisFile("Program",    "defaults/wallet/URLFieldSchema.tbl");
  488.   deleteThisFile("Program",    "res/samples/collapsing.css");
  489.   deleteThisFile("Program",    "res/samples/collapsing.xul");
  490.   deleteThisFile("Program",    "res/samples/import-test.html");
  491.   deleteThisFile("Program",    "res/samples/sampleimages/xpconnect-sample.html");
  492.   deleteThisFile("Components", "gkhtml.dll");
  493.   deleteThisFile("Components", "mozucth.dll");
  494.   deleteThisFile("Components", "mozxfer.dll");
  495.   deleteThisFile("Components", "nsgif.dll");
  496.   deleteThisFile("Components", "nsjpg.dll");
  497.   deleteThisFile("Components", "nsmng.dll");
  498.   deleteThisFile("Components", "nspng.dll");
  499.   deleteThisFile("Components", "smime.dll");
  500.   deleteThisFile("Components", "AcctIdl.dll");
  501.   deleteThisFile("Components", "chardetc.dll");
  502.   deleteThisFile("Components", "evntloop.dll");
  503.   deleteThisFile("Components", "nativapp.dll");
  504.   deleteThisFile("Components", "universalchardet.dll");
  505.   deleteThisFile("Components", "ucvja.dll");
  506.   deleteThisFile("Components", "ucvko.dll");
  507.   deleteThisFile("Components", "ucvtw.dll");
  508.   deleteThisFile("Components", "ucvtw2.dll");
  509.   deleteThisFile("Components", "ucvlatin.dll");
  510.   deleteThisFile("Components", "ucvcn.dll");
  511.   deleteThisFile("Components", "ucvibm.dll");
  512.   deleteThisFile("Components", "txtsvc.dll");
  513.   deleteThisFile("Components", "gfx2.dll");
  514.   deleteThisFile("Components", "gfx2.xpt");
  515.   deleteThisFile("Components", "imggif.dll");
  516.   deleteThisFile("Components", "imgjpeg.dll");
  517.   deleteThisFile("Components", "imgpng.dll");
  518.   deleteThisFile("Components", "imgbmp.dll");
  519.   deleteThisFile("Components", "imgxbm.dll");
  520.   deleteThisFile("Components", "imgppm.dll");
  521.   deleteThisFile("Components", "ucharuti.dll");
  522.   deleteThisFile("Components", "chardet.dll");
  523.   deleteThisFile("Components", "lwbrk.dll");
  524.   deleteThisFile("Components", "nslocale.dll");
  525.   deleteThisFile("Components", "strres.dll");
  526.   deleteThisFile("Components", "mozbrwsr.dll");
  527.   deleteThisFile("Components", "nkcache.dll");
  528.   deleteThisFile("Components", "jsloader.dll");
  529.   deleteThisFile("Components", "gkcontent.dll");
  530.   deleteThisFile("Components", "psm.xpt");
  531.   deleteThisFile("Components", "typeaheadfind.xpt");
  532.   deleteThisFile("Chrome",     "chrome.rdf");
  533.   deleteThisFile("Chrome",     "forms.jar");
  534.   deleteThisFile("Chrome",     "typeaheadfind.jar");
  535.   deleteThisFolder("Chrome",   "overlayinfo");
  536.   deleteThisFolder("Components",   "Netscape/Gecko1.0");
  537.   deleteThisFolder("Components",   "Netscape/Netscape6.00");
  538.   deleteThisFolder("Components",   "Netscape/Netscape6.01");
  539.   deleteThisFolder("Components",   "Netscape/Netscape6.10");
  540.   deleteThisFolder("Components",   "Netscape/Netscape6.20");
  541.   deleteThisFolder("Components",   "Netscape/Netscape6.21");
  542.   deleteThisFolder("Components",   "Netscape/Netscape6.22");
  543.   deleteThisFolder("Components",   "Netscape/Netscape6.23");
  544.   deleteThisFolder("Components",   "Netscape/Mozilla1.2");
  545.  
  546.   if(!gGreLocal)
  547.   {
  548.     // If GRE is not local, meaning it's installed in a 
  549.     // global area, then cleanup  obsolete files that are
  550.     // now part of the GRE installer package.
  551.     deleteThisFile("Program",    "gkgfx.dll");
  552.     deleteThisFile("Program",    "js3250.dll");
  553.     deleteThisFile("Program",    "jsj3250.dll");
  554.     deleteThisFile("Program",    "mozctl.dll");
  555.     deleteThisFile("Program",    "mozctlx.dll");
  556.     deleteThisFile("Program",    "nss3.dll");
  557.     deleteThisFile("Program",    "nssckbi.dll");
  558.     deleteThisFile("Program",    "smime3.dll");
  559.     deleteThisFile("Program",    "softokn3.dll");
  560.     deleteThisFile("Program",    "ssl3.dll");
  561.     deleteThisFile("Program",    "xpcom.dll");
  562.     deleteThisFile("Program",    "xpistub.dll");
  563.     deleteThisFile("Program",    "zlib.dll");
  564.     deleteThisFile("Components", "accessibility.dll");
  565.     deleteThisFile("Components", "appshell.dll");
  566.     deleteThisFile("Components", "caps.dll");
  567.     deleteThisFile("Components", "chrome.dll");
  568.     deleteThisFile("Components", "cookie.dll");
  569.     deleteThisFile("Components", "docshell.dll");
  570.     deleteThisFile("Components", "editor.dll");
  571.     deleteThisFile("Components", "embedcomponents.dll");
  572.     deleteThisFile("Components", "gkgfxwin.dll");
  573.     deleteThisFile("Components", "gklayout.dll");
  574.     deleteThisFile("Components", "gkparser.dll");
  575.     deleteThisFile("Components", "gkplugin.dll");
  576.     deleteThisFile("Components", "gkview.dll");
  577.     deleteThisFile("Components", "gkwidget.dll");
  578.     deleteThisFile("Components", "i18n.dll");
  579.     deleteThisFile("Components", "imgicon.dll");
  580.     deleteThisFile("Components", "imglib2.dll");
  581.     deleteThisFile("Components", "imgmng.dll");
  582.     deleteThisFile("Components", "jar50.dll");
  583.     deleteThisFile("Components", "jsdom.dll");
  584.     deleteThisFile("Components", "jsurl.dll");
  585.     deleteThisFile("Components", "necko.dll");
  586.     deleteThisFile("Components", "necko2.dll");
  587.     deleteThisFile("Components", "nsDownloadProgressListener.js");
  588.     deleteThisFile("Components", "nsHelperAppDlg.js");
  589.     deleteThisFile("Components", "nsProgressDialog.js");
  590.     deleteThisFile("Components", "oji.dll");
  591.     deleteThisFile("Components", "pipboot.dll");
  592.     deleteThisFile("Components", "pipnss.dll");
  593.     deleteThisFile("Components", "profile.dll");
  594.     deleteThisFile("Components", "rdf.dll");
  595.     deleteThisFile("Components", "shistory.dll");
  596.     deleteThisFile("Components", "uconv.dll");
  597.     deleteThisFile("Components", "ucvmath.dll");
  598.     deleteThisFile("Components", "urildr.dll");
  599.     deleteThisFile("Components", "wallet.dll");
  600.     deleteThisFile("Components", "webbrwsr.dll");
  601.     deleteThisFile("Components", "xmlextras.dll");
  602.     deleteThisFile("Components", "xpc3250.dll");
  603.     deleteThisFile("Components", "xpinstal.dll");
  604.     deleteThisFile("Components", "xppref32.dll");
  605.   }
  606. }
  607.  
  608. // main
  609. var srDest;
  610. var err;
  611. var err2;
  612. var fProgram;
  613. var fWindowsSystem;
  614. var fileComponentRegStr;
  615. var fileComponentReg;
  616. var restrictedAccess;
  617. var fileToRegister;
  618. var args;
  619. var gGreLocal = false;
  620.  
  621. args = new String(Install.arguments);
  622. logComment("args: " + args);
  623.  
  624. // If -gGreLocal is passed in, then we need to *not* cleanup GRE files if they
  625. // exist in the browser dir.
  626. // The default is to delete any GRE files because we default GRE will be global.
  627. if(args == "-greLocal")
  628.   gGreLocal = true;
  629.  
  630. srDest = 11297;
  631. err    = initInstall("Mozilla", "Browser", "1.3.1.2003042512"); 
  632. logComment("initInstall: " + err);
  633.  
  634. fProgram  = getFolder("Program");
  635. fWindowsSystem = getFolder("Win System");
  636. logComment("fProgram: " + fProgram);
  637.  
  638. if(verifyDiskSpace(fProgram, srDest))
  639. {
  640.   setPackageFolder(fProgram);
  641.  
  642.   upgradeCleanup();
  643.   err = addDirectory("",
  644.                      "1.3.1.2003042512",
  645.                      "bin",              // dir name in jar to extract 
  646.                      fProgram,           // Where to put this file (Returned from GetFolder) 
  647.                      "",                 // subdir name to create relative to fProgram
  648.                      true);              // Force Flag 
  649.   logComment("addDirectory() of Program returned: " + err);
  650.  
  651.   // check return value
  652.   if( err == SUCCESS )
  653.   {
  654.     fileToRegister = getFolder(fProgram, "ISimpleDOMNodeMarshal.dll");
  655.     err2           = File.windowsRegisterServer(fileToRegister);
  656.     logComment("windowsRegisterServer() returned: " + err2);
  657.     fileToRegister = getFolder(fProgram, "ISimpleDOMDocumentMarshal.dll");
  658.     err2           = File.windowsRegisterServer(fileToRegister);
  659.     logComment("windowsRegisterServer() returned: " + err2);
  660.     updateWinReg();  // Finish registering above marshalling dll's
  661.  
  662.     createShortcuts();
  663.  
  664.     // we don't want to fail on errors for the above two
  665.     resetError();
  666.  
  667.     // register chrome
  668.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-platform/");
  669.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator-platform/");
  670.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator-platform/");
  671.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global/");
  672.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-region/");
  673.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/autoconfig/");
  674.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/cookie/");
  675.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/wallet/");
  676.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","content-packs.jar"), "content/content-packs/");
  677.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator/");
  678.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator-region/");
  679.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor/");
  680.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor-region/");
  681.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator/");
  682.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator-region/");
  683.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/necko/");
  684.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/mozldap/");
  685.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","classic.jar"),"skin/classic/communicator/");
  686.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","classic.jar"),"skin/classic/editor/");
  687.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","classic.jar"),"skin/classic/global/");
  688.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","classic.jar"),"skin/classic/messenger/");
  689.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","classic.jar"),"skin/classic/navigator/");
  690.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/communicator/");
  691.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/editor/");
  692.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/global/");
  693.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/messenger/");
  694.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/navigator/");
  695.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","help.jar"),"content/help/");
  696.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/xbl-marquee/");
  697.  
  698.     // We need to register the psm chrome files.
  699.     // We're checking to see if they exist first in case
  700.     // they were not built and packaged up.
  701.     var pki = getFolder("Chrome", "pippki.jar");
  702.     if(File.exists(pki)) 
  703.       registerChrome(CONTENT | DELAYED_CHROME, pki, "content/pippki/");
  704.  
  705.     var nss = getFolder("Chrome", "pipnss.jar");
  706.     if(File.exists(nss)) 
  707.       registerChrome(CONTENT | DELAYED_CHROME, nss, "content/pipnss/");
  708.  
  709.     /* Log files that are created after the installer is done, so they can be uninstalled */
  710.     logComment("Installing: "    + fProgram + ".autoreg");
  711.     logComment("Installing: "    + fProgram + "Xpcs Registry.dat");
  712.     logComment("Installing: "    + fProgram + "xpcom.log");
  713.     logComment("Create Folder: " + fProgram + "components");
  714.     logComment("Installing: "    + fProgram + "components\\xpti.dat");
  715.     logComment("Installing: "    + fProgram + "components\\xptitemp.dat");
  716.     logComment("Installing: "    + fProgram + "components\\compreg.dat");
  717.     logComment("Create Folder: " + fProgram + "components\\Netscape");
  718.     logComment("Create Folder: " + fProgram + "components\\Netscape\\MozillaTrunk");
  719.     logComment("Installing: "    + fProgram + "components\\Netscape\\MozillaTrunk\\manifest.ini");
  720.     logComment("Installing: "    + fProgram + "components\\Netscape\\MozillaTrunk\\permdata.box");
  721.     logComment("Installing: "    + fProgram + "components\\Netscape\\MozillaTrunk\\Talkback.ini");
  722.     logComment("Create Folder: " + fProgram + "chrome");
  723.     logComment("Installing: "    + fProgram + "chrome\\installed-chrome.txt");
  724.     logComment("Installing: "    + fProgram + "chrome\\chrome.rdf");
  725.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo");
  726.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\cookie");
  727.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\cookie\\content");
  728.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\cookie\\content\\overlays.rdf");
  729.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\inspector");
  730.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\inspector\\content");
  731.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\inspector\\content\\overlays.rdf");
  732.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\communicator");
  733.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\communicator\\content");
  734.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\communicator\\content\\overlays.rdf");
  735.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\editor");
  736.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\editor\\content");
  737.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\editor\\content\\overlays.rdf");
  738.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\messenger");
  739.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\messenger\\content");
  740.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\messenger\\content\\overlays.rdf");
  741.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator");
  742.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator\\content");
  743.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\navigator\\content\\overlays.rdf");
  744.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator\\skin");
  745.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\navigator\\skin\\stylesheets.rdf");
  746.  
  747.     err = getLastError();
  748.     if (err == SUCCESS)
  749.     {
  750.       err = performInstall();
  751.       logComment("performInstall() returned: " + err);
  752.       if (! ('buildID' in Install))
  753.       {
  754.         logComment("Running Pre-Mozilla 0.9.1");
  755.         initInstall("Post-install Cleanup Utility", "Browser/xpicleanup", "1.3.1.2003042512");
  756.         cleanupUtility = getFolder(fProgram, "xpicleanup.exe");
  757.         err = File.execute(cleanupUtility);
  758.         logComment("execute() returned: " + err);
  759.         err = performInstall();
  760.       }
  761.     }
  762.     else
  763.       cancelInstall(err);
  764.   }
  765.   else
  766.     cancelInstall(err);
  767. }
  768. else
  769.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  770.  
  771.  
  772. // end main
  773.