home *** CD-ROM | disk | FTP | other *** search
/ Enter 2003: The Beautiful Scenery / enter-parhaat-2003.iso / files / Netscape / mail.xpi / install.js
Encoding:
JavaScript  |  2002-08-23  |  21.9 KB  |  619 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 DeleteObsoleteShortcutsOnUpgrade()
  97. {
  98.   var subkey;
  99.   var valname;
  100.   var szStartMenuPrograms;
  101.   var szFolderDesktop;
  102.   var winreg;
  103.   var is_winnt;
  104.   var versionThreshold;
  105.   var rv;
  106.   var keyVersion;
  107.   var fFileToCheck;
  108.   var fileFound;
  109.  
  110.   winreg = getWinRegistry();
  111.   if(winreg != null) 
  112.   {
  113.     /* determine if the script is running under NT or not */
  114.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  115.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  116.     valname             = "CurrentVersion";
  117.     szCurrentVersion    = winreg.getValueString(subkey, valname);
  118.     logComment("szCurrentVersion: " + szCurrentVersion);
  119.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  120.     {
  121.       is_winnt = false;
  122.     }
  123.     else
  124.     {
  125.       is_winnt = true;
  126.     }
  127.  
  128.     logComment("is_winnt value: " + is_winnt);
  129.     if(!is_winnt || restrictedAccess)
  130.     {
  131.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  132.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  133.       valname             = "Programs";
  134.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  135.       valname             = "Desktop";
  136.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  137.     }
  138.     else
  139.     {
  140.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  141.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  142.       valname             = "Common Programs";
  143.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  144.       valname             = "Common Desktop";
  145.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  146.     }
  147.  
  148.     versionThreshold = "6.20.0.2001100100";
  149.     rv = InstallTrigger.compareVersion("Mail", versionThreshold);
  150.     keyVersion = InstallTrigger.getVersion("Mail");
  151.     fFileToCheck = getFolder("Program", "msgbsutl.dll");
  152.     fileFound = File.isFile(fFileToCheck);
  153.  
  154.     logComment("Folder Desktop          : " + szFolderDesktop);
  155.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  156.     logComment("versionThreshold        : " + versionThreshold);
  157.     logComment("keyVersion              : " + keyVersion);
  158.     logComment("compare result          : " + rv);
  159.     logComment("file to check           : " + fFileToCheck);
  160.     logComment("file to check found     : " + fileFound);
  161.   }
  162.  
  163.   if(fileFound && (rv < 0) && (keyVersion != null))
  164.   {
  165.     deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape 6\\Mail.lnk");
  166.     deleteThisFile("file:///",   szStartMenuPrograms + "\\Netscape 6\\Free Aol & Unlimited Internet.url");
  167.     deleteThisFolder("file:///", szStartMenuPrograms + "\\Netscape 6", false);
  168.   }
  169. }
  170.  
  171. function IsWinnt()
  172. {
  173.   /* Determines if the script is running under NT or not.
  174.    *
  175.    */
  176.   var winreg = getWinRegistry();
  177.   var subkey;
  178.   var valname;
  179.   var szCurrentVersion;
  180.  
  181.   winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  182.   subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  183.   valname             = "CurrentVersion";
  184.   szCurrentVersion    = winreg.getValueString(subkey, valname);
  185.   logComment("szCurrentVersion: " + szCurrentVersion);
  186.   if((szCurrentVersion == "") || (szCurrentVersion == null))
  187.   {
  188.     return false;
  189.   }
  190.   else
  191.   {
  192.     return true;
  193.   }
  194. }
  195.  
  196.  
  197. function registerProgramFolderKey(winreg, fFolderPath)
  198. {
  199.   var subkey;
  200.   var valname;
  201.   var value;
  202.   var err;
  203.  
  204.   /* set the Program Folder Path in the Mozilla key in the Windows Registry */
  205.   subkey  = "SOFTWARE\\Netscape";
  206.   winreg.createKey(subkey,"");
  207.  
  208.   valname = "CurrentVersion";
  209.   subkey  = "SOFTWARE\\Netscape\\Netscape";
  210.   winreg.createKey(subkey,"");
  211.  
  212.   valname = "CurrentVersion";
  213.   value   = "7.0 (en)";
  214.   err     = winreg.setValueString(subkey, valname, value);
  215.  
  216.   subkey  = "SOFTWARE\\Netscape\\Netscape\\7.0 (en)";
  217.   winreg.createKey(subkey,"");
  218.  
  219.   subkey  = "SOFTWARE\\Netscape\\Netscape\\7.0 (en)\\Main";
  220.   winreg.createKey(subkey,"");
  221.  
  222.   valname = "Program Folder Path";
  223.   value   = fFolderPath;
  224.   err     = winreg.setValueString(subkey, valname, value);
  225. }
  226.  
  227. function createShortcuts() 
  228. {
  229.   var subkey;
  230.   var valname;
  231.   var szStartMenuPrograms;
  232.   var szFolderDesktop;
  233.   var szFolderQuickLaunch;
  234.   var szFolderSendTo;
  235.   var szFolderAppData;
  236.   var winreg;
  237.   var fWindows;
  238.   var fTemp;
  239.   var fProgram;
  240.   var fDefShortcuts;
  241.   var fileExe;
  242.   var fileMailIcon;
  243.   var scMailDesc;
  244.   var scMailParam;
  245.   var scFolderName;
  246.   var fFolderDesktop;
  247.   var fFolderPath;
  248.   var fFolderPathStr;
  249.   var fFolderQuickLaunch;
  250.   var is_winnt;
  251.   var szCurrentVersion;
  252.   var restrictedAccess;
  253.   var ikwDefined;
  254.   var folderQuickLaunchExists;
  255.  
  256.   winreg       = getWinRegistry();
  257.   fWindows     = getFolder("Windows");
  258.   fProgram     = getFolder("Program");
  259.   fDefShortcuts = getFolder("Program","defaults/shortcuts");
  260.   fileExe      = getFolder("Program", "Netscp.exe");
  261.   fileMailIcon = getFolder("Chrome", "icons/default/msngrWindow.ico");
  262.   scMailDesc   = "Mail & Newsgroups";
  263.   scMailParam  = "-mail";
  264.   scFolderName = "Netscape 7.0";
  265.   if(winreg != null) 
  266.   {
  267.     /* This will check to see if the user has restricted access or not.
  268.      * It checks to see if HKEY_LOCALMACHINE\SOFTWARE is writable.  If
  269.      * it is, then access is not restricted.  This is only used to
  270.      * determine which Desktop, Programs, and Start Menu folders
  271.      * are to used: common or per user
  272.      */
  273.     restrictedAccess = false;
  274.     ikwDefined = typeof(winreg.isKeyWritable);
  275.     logComment("winreg.isKeyWritable(): " + ikwDefined);
  276.     if(ikwDefined == "function")
  277.     {
  278.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  279.       if(!winreg.isKeyWritable("SOFTWARE"))
  280.         restrictedAccess = true;
  281.     }
  282.  
  283.     /* determine if the script is running under NT or not */
  284.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  285.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  286.     valname             = "CurrentVersion";
  287.     szCurrentVersion    = winreg.getValueString(subkey, valname);
  288.     logComment("szCurrentVersion: " + szCurrentVersion);
  289.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  290.     {
  291.       is_winnt = false;
  292.     }
  293.     else
  294.     {
  295.       is_winnt = true;
  296.     }
  297.  
  298.     logComment("is_winnt value: " + is_winnt);
  299.     logComment("restrictedAccess value: " + restrictedAccess);
  300.     if(!is_winnt || restrictedAccess)
  301.     {
  302.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  303.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  304.       valname             = "Programs";
  305.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  306.       valname             = "Desktop";
  307.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  308.     }
  309.     else
  310.     {
  311.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  312.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  313.       valname             = "Common Programs";
  314.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  315.       valname             = "Common Desktop";
  316.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  317.     }
  318.  
  319.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  320.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  321.     valname             = "SendTo";
  322.     szFolderSendTo      = winreg.getValueString(subkey, valname);
  323.  
  324.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  325.     valname             = "AppData";
  326.     szFolderAppData     = winreg.getValueString(subkey, valname);
  327.  
  328.     // locate the Quick Launch folder
  329.     szFolderQuickLaunch     = szFolderAppData + "\\Microsoft\\Internet Explorer\\Quick Launch";
  330.     fFolderQuickLaunch      = getFolder("file:///", szFolderQuickLaunch);
  331.     folderQuickLaunchExists = File.isDirectory(fFolderQuickLaunch);
  332.     if(!folderQuickLaunchExists)
  333.     {
  334.       subkey                  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\GrpConv\\MapGroups";
  335.       valname                 = "Quick Launch";
  336.       szFolderQuickLaunch     = winreg.getValueString(subkey, valname);
  337.       folderQuickLaunchExists = File.isDirectory(fFolderPath);
  338.       if(folderQuickLaunchExists)
  339.         fFolderQuickLaunch = getFolder("file:///", szFolderQuickLaunch);
  340.     }
  341.     logComment("folderQuickLaunchExists: " + folderQuickLaunchExists);
  342.  
  343.     subkey              = "SOFTWARE\\Netscape\\Netscape\\7.0 (en)\\Main";
  344.     valname             = "Program Folder Path";
  345.     fFolderPathStr      = winreg.getValueString(subkey, valname);
  346.     if((fFolderPathStr == "") || (fFolderPathStr == null))
  347.     {
  348.       fTemp       = szStartMenuPrograms + "\\" + scFolderName;
  349.       fFolderPath = getFolder("file:///", fTemp);
  350.     }
  351.     else
  352.     {
  353.       /* convert the path string to a path folder object */
  354.       fFolderPath = getFolder("file:///", fFolderPathStr);
  355.     }
  356.  
  357.     /*Convert path strings to path folder objects */
  358.     fFolderDesktop   = getFolder("file:///", szFolderDesktop);
  359.  
  360.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  361.     logComment("Folder FolderDesktop    : " + szFolderDesktop);
  362.     logComment("Folder FolderSendTo     : " + szFolderSendTo);
  363.     logComment("Folder FolderQuickLaunch: " + szFolderQuickLaunch);
  364.     logComment("fileExe                 : " + fileExe);
  365.     logComment("fFolderPath             : " + fFolderPath);
  366.     logComment("fProgram                : " + fProgram);
  367.  
  368.     /* explicitly create the fFolderPath even though the windowsShortcut function creates the folder.
  369.      * This is so that the folder creation gets logged for uninstall to remove it. */
  370.     if(!File.exists(fFolderPath))
  371.       File.dirCreate(fFolderPath);
  372.  
  373.     if(!File.exists(fDefShortcuts))
  374.       File.dirCreate(fDefShortcuts);
  375.  
  376.     /* create the shortcuts */
  377.     File.windowsShortcut(fileExe, fFolderDesktop,   "Netscape " + scMailDesc, fProgram, scMailParam, fileMailIcon, 0);
  378.     File.windowsShortcut(fileExe, fDefShortcuts,    "Netscape " + scMailDesc, fProgram, scMailParam, fileMailIcon, 0);
  379.     File.windowsShortcut(fileExe, fFolderPath,      scMailDesc,               fProgram, scMailParam, fileMailIcon, 0);
  380.  
  381.     // create shortcut in the Quick Launch folder
  382.     if(folderQuickLaunchExists)
  383.       File.windowsShortcut(fileExe, fFolderQuickLaunch, "Netscape " + scMailDesc, fProgram,  scMailParam, fileMailIcon, 0);
  384.  
  385.     if(!restrictedAccess)
  386.     {
  387.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  388.       registerProgramFolderKey(winreg, fFolderPath);
  389.     }
  390.  
  391.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  392.     registerProgramFolderKey(winreg, fFolderPath);
  393.  
  394.     // Register as a windows XP mail handler
  395.     if( IsWinnt() )
  396.     {
  397.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  398.  
  399.       winreg.createKey("Software\\Clients\\Mail\\Netscape","");
  400.       winreg.createKey("Software\\Clients\\Mail\\Netscape\\InstallInfo","");
  401.  
  402.       subkey = "Software\\Clients\\Mail\\Netscape\\InstallInfo";
  403.       valname = "HideIconsCommand";
  404.       data = "\"" + fProgram + "uninstall\\NSUninst.exe\" /ms /ua \"7.0 (en)\" /hs mail";
  405.       winreg.setValueString(subkey, valname, data);
  406.  
  407.       subkey = "Software\\Clients\\Mail\\Netscape\\InstallInfo";
  408.       valname = "IconsVisible";
  409.       winreg.setValueNumber(subkey, valname, 1);
  410.  
  411.       subkey = "Software\\Clients\\Mail\\Netscape\\InstallInfo";
  412.       valname = "ReinstallCommand";
  413.       data = "\"" + fProgram + "Netscp.exe\" -silent -nosplash -setDefaultMail";
  414.       winreg.setValueString(subkey, valname, data);
  415.  
  416.       subkey = "Software\\Clients\\Mail\\Netscape\\InstallInfo";
  417.       valname = "ShowIconsCommand";
  418.       data = "\"" + fProgram + "uninstall\\NSUninst.exe\" /ms /ua \"7.0 (en)\" /ss mail";
  419.       winreg.setValueString(subkey, valname, data);
  420.     }
  421.  
  422.   }
  423.   else
  424.   {
  425.     logComment("winreg is null");
  426.   }
  427. }
  428.  
  429. function updateMapi()
  430. {
  431.   var winreg;
  432.   var szValue;
  433.   var szMapiBackupDll;
  434.   var szDefaultMailClient;
  435.   var programMozMapi32File;
  436.   var mainExePath;
  437.   var sfpProgramMozMapi32File;
  438.   var sfpMainExePath;
  439.   var winsysMapi32File;
  440.   var mapiProxyFile;
  441.   var subkey;
  442.   var mailDefaultDescription = "Netscape 7.0 Mail";
  443.  
  444.   winreg = getWinRegistry();
  445.   if(winreg != null) 
  446.   {
  447.     mainExePath = getFolder("Program", "Netscp.exe");
  448.     programMozMapi32File = getFolder("Program", "mozMapi32.dll");
  449.     winsysMapi32File = getFolder("Win System", "Mapi32.dll");
  450.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  451.  
  452.     // If Mapi_backup_dll *and* the default var of
  453.     // HKEY_LOCAL_MACHINE\Software\Clients\Mail is set, then install
  454.     // mozMapi32.dll to the windows system dir as Mapi32.dll.
  455.     szMapiBackupDll = winreg.getValueString("SOFTWARE\\Mozilla\\Desktop", "Mapi_backup_dll");
  456.     szDefaultMailClient = winreg.getValueString("SOFTWARE\\Clients\\Mail", "");
  457.     logComment("szMapiBackupDll: " + szMapiBackupDll);
  458.     logComment("szDefaultMailClient: " + szDefaultMailClient);
  459.     if((szMapiBackupDll != null) && (szMapiBackupDll != "") &&
  460.        (szDefaultMailClient != null) && (szDefaultMailClient == "Netscape 7.0"))
  461.     {
  462.       // We do not want to log this file to be uninstalled because the
  463.       // uninstaller already has a special way to deal with restoring the
  464.       // appropriate previous Mapi32.dll.
  465.       addFile("",
  466.               "7.0.0.2002082310",
  467.               "bin/mozMapi32.dll",           // file name in jar to extract 
  468.               getFolder("Win System"),       // Where to put this file (Returned from getFolder) 
  469.               "Mapi32.dll",                  // new name when installed
  470.               DO_NOT_UNINSTALL);
  471.     }
  472.  
  473.     sfpProgramMozMapi32File = File.windowsGetShortName(programMozMapi32File);
  474.     sfpMainExePath = File.windowsGetShortName(mainExePath);
  475.  
  476.     subkey  = "SOFTWARE\\Clients\\Mail\\Netscape";
  477.     winreg.createKey(subkey, "");
  478.     winreg.setValueString(subkey, "", mailDefaultDescription);
  479.     winreg.setValueString(subkey, "DLLPath", sfpProgramMozMapi32File);
  480.  
  481.     winreg.createKey(subkey      + "\\DefaultIcon", "");
  482.     winreg.setValueString(subkey + "\\DefaultIcon", "", sfpMainExePath + ",0");
  483.  
  484.     winreg.createKey(subkey      + "\\protocols", "");
  485.     winreg.createKey(subkey      + "\\protocols\\mailto", "");
  486.     winreg.setValueString(subkey + "\\protocols\\mailto", "", "URL:MailTo Protocol");
  487.  
  488.     winreg.createKey(subkey      + "\\protocols\\mailto\\shell", "");
  489.     winreg.createKey(subkey      + "\\protocols\\mailto\\shell\\open", "");
  490.     winreg.createKey(subkey      + "\\protocols\\mailto\\shell\\open\\command", "");
  491.     winreg.setValueString(subkey + "\\protocols\\mailto\\shell\\open\\command", "", sfpMainExePath + " \"%1\"");
  492.  
  493.     winreg.createKey(subkey      + "\\shell", "");
  494.     winreg.createKey(subkey      + "\\shell\\open", "");
  495.     winreg.createKey(subkey      + "\\shell\\open\\command", "");
  496.     winreg.setValueString(subkey + "\\shell\\open\\command", "", sfpMainExePath + " -mail");
  497.  
  498.     // Register MapiProxy.dll
  499.     mapiProxyFile = getFolder("Program", "MapiProxy.dll");
  500.     err = File.windowsRegisterServer(mapiProxyFile);
  501.     logComment("File.windowsRegisterServer(" + mapiProxyFile + ") returned: " + err);
  502.   }
  503. }
  504.  
  505. function upgradeCleanup()
  506. {
  507.   // Obsolete files from previous Netscape installations which
  508.   // need to be cleaned up.
  509.   deleteThisFile("Program",    "msgMapi.dll");
  510.   deleteThisFile("Components", "signed.dll");
  511.   deleteThisFile("Components", "smimestb.dll");
  512.   deleteThisFile("Components", "nsMapiRegistry.dll");
  513. }
  514.  
  515. function updateWinIni()
  516. {
  517.   var fWinIni  = getWinProfile(getFolder("Windows"), "win.ini");
  518.  
  519.   if(fWinIni != null)
  520.   {
  521.     fWinIni.writeString("Mail", "MAPI", "1");
  522.     fWinIni.writeString("Mail", "MAPIX", "1");
  523.   }
  524. }
  525.  
  526. // main
  527. var srDest;
  528. var err;
  529. var communicatorFolder;
  530. var restrictedAccess;
  531.  
  532. srDest = 3905;
  533. err    = initInstall("Netscape Mail", "Mail", "7.0.0.2002082310"); 
  534. logComment("initInstall: " + err);
  535.  
  536. communicatorFolder = getFolder("Program");
  537. logComment("communicatorFolder: " + communicatorFolder);
  538.  
  539. if(verifyDiskSpace(communicatorFolder, srDest))
  540. {
  541.   setPackageFolder(communicatorFolder);
  542.  
  543.   /* delete the obsolete shortcuts on upgrade */
  544.   DeleteObsoleteShortcutsOnUpgrade();
  545.  
  546.   upgradeCleanup();
  547.   err = addDirectory("",
  548.                      "7.0.0.2002082310",
  549.                      "bin",              // dir name in jar to extract 
  550.                      communicatorFolder, // Where to put this file (Returned from getFolder) 
  551.                      "",                 // subdir name to create relative to communicatorFolder
  552.                      true );             // Force Flag 
  553.   logComment("addDirectory() returned: " + err);
  554.  
  555.   // check return value
  556.   if( err == SUCCESS )
  557.   {
  558.     createShortcuts();
  559.     updateWinIni();
  560.     updateMapi();
  561.  
  562.     // we don't want to fail on errors for the above
  563.     resetError();
  564.  
  565.     // register chrome
  566.     registerChrome(CONTENT | DELAYED_CHROME,
  567.                    getFolder("Chrome","messenger.jar"),
  568.                    "content/messenger/");
  569.     registerChrome(CONTENT | DELAYED_CHROME,
  570.                    getFolder("Chrome","messenger.jar"),
  571.                    "content/messenger-region/");
  572.  
  573.     registerChrome(CONTENT | DELAYED_CHROME,
  574.                    getFolder("Chrome","messenger.jar"),
  575.                    "content/messenger-smime/");
  576.     registerChrome(CONTENT | DELAYED_CHROME,
  577.                    getFolder("Chrome","messenger.jar"),
  578.                    "content/messenger-mapi/");
  579.     registerChrome(CONTENT | DELAYED_CHROME,
  580.                    getFolder("Chrome","messenger.jar"),
  581.                    "content/messenger-ns/");
  582.  
  583.     // log comments for uninstalling the registry keys created by mail for setting
  584.     // itself up in WinXP's Start menu
  585.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape []");
  586.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape []");
  587.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape [DLLPath]");
  588.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\DefaultIcon []");
  589.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\DefaultIcon []");
  590.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\protocols []");
  591.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\protocols\\mailto []");
  592.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\protocols\\mailto []");
  593.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\protocols\\mailto\\shell []");
  594.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\protocols\\mailto\\shell\\open []");
  595.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\protocols\\mailto\\shell\\open\\command []");
  596.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\protocols\\mailto\\shell\\open\\command []");
  597.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\shell []");
  598.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\shell\\open []");
  599.     logComment("Create Registry Key: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\shell\\open\\command []");
  600.     logComment("Store Registry Value: HKEY_LOCAL_MACHINE\\Software\\Clients\\Mail\\Netscape\\shell\\open\\command []");
  601.  
  602.     // check return value
  603.     err = getLastError();
  604.     if(err == SUCCESS)
  605.     {
  606.       err = performInstall(); 
  607.       logComment("performInstall() returned: " + err);
  608.     }
  609.     else
  610.       cancelInstall(err);
  611.   }
  612.   else
  613.     cancelInstall(err);
  614. }
  615. else
  616.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  617.  
  618. // end main
  619.