home *** CD-ROM | disk | FTP | other *** search
- // this function verifies disk space in kilobytes
- function verifyDiskSpace(dirPath, spaceRequired)
- {
- var spaceAvailable;
-
- // Get the available disk space on the given path
- spaceAvailable = fileGetDiskSpaceAvailable(dirPath);
-
- // Convert the available disk space into kilobytes
- spaceAvailable = parseInt(spaceAvailable / 1024);
-
- // do the verification
- if(spaceAvailable < spaceRequired)
- {
- logComment("Insufficient disk space: " + dirPath);
- logComment(" required : " + spaceRequired + " K");
- logComment(" available: " + spaceAvailable + " K");
- return(false);
- }
-
- return(true);
- }
-
- // this function deletes a file if it exists
- function deleteThisFile(dirKey, file)
- {
- var fFileToDelete;
-
- fFileToDelete = getFolder(dirKey, file);
- logComment(file + " file: " + fFileToDelete);
- if(File.exists(fFileToDelete))
- {
- fileDelete(fFileToDelete);
- return(true);
- }
- else
- return(false);
- }
-
- // this function deletes a folder (recursively) if it exists
- function deleteThisFolder(dirKey, folder)
- {
- var fToDelete;
-
- fToDelete = getFolder(dirKey, folder);
- logComment(folder + " folder: " + fToDelete);
- if(File.exists(fToDelete))
- {
- File.dirRemove(fToDelete, true);
- return(true);
- }
- else
- return(false);
- }
-
- // OS type detection
- // which platform?
- function getPlatform()
- {
- var platformStr;
- var platformNode;
-
- if('platform' in Install)
- {
- platformStr = new String(Install.platform);
-
- if (!platformStr.search(/^Macintosh/))
- platformNode = 'mac';
- else if (!platformStr.search(/^Win/))
- platformNode = 'win';
- else
- platformNode = 'unix';
- }
- else
- {
- var fOSMac = getFolder("Mac System");
- var fOSWin = getFolder("Win System");
-
- logComment("fOSMac: " + fOSMac);
- logComment("fOSWin: " + fOSWin);
-
- if(fOSMac != null)
- platformNode = 'mac';
- else if(fOSWin != null)
- platformNode = 'win';
- else
- platformNode = 'unix';
- }
-
- return platformNode;
- }
-
- function updateWinReg4Ren8dot3()
- {
- var fProgram = getFolder("Program");
- var fTemp = getFolder("Temporary");
-
- //Notes:
- // can't use a double backslash before subkey - Windows already puts it in.
- // subkeys have to exist before values can be put in.
- var subkey; // the name of the subkey you are poking around in
- var valname; // the name of the value you want to look at
- var value; // the data in the value you want to look at.
- var winreg = getWinRegistry() ;
-
- if(winreg != null)
- {
- // Here, we get the current version.
- winreg.setRootKey(winreg.HKEY_CURRENT_USER) ; // CURRENT_USER
- subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce" ;
-
- winreg.createKey(subkey,"");
- valname = "ren8dot3";
- value = fProgram + "ren8dot3.exe " + fTemp + "ren8dot3.ini";
- err = winreg.setValueString(subkey, valname, value);
- }
- }
-
- function prepareRen8dot3(listLongFilePaths)
- {
- var fTemp = getFolder("Temporary");
- var fProgram = getFolder("Program");
- var fRen8dot3Ini = getWinProfile(fTemp, "ren8dot3.ini");
- var bIniCreated = false;
- var fLongFilePath;
- var sShortFilePath;
-
- if(fRen8dot3Ini != null)
- {
- for(i = 0; i < listLongFilePaths.length; i++)
- {
- fLongFilePath = getFolder(fProgram, listLongFilePaths[i]);
- sShortFilePath = File.windowsGetShortName(fLongFilePath);
- if(sShortFilePath)
- {
- fRen8dot3Ini.writeString("rename", sShortFilePath, fLongFilePath);
- bIniCreated = true;
- }
- }
-
- if(bIniCreated)
- updateWinReg4Ren8dot3() ;
- }
-
- return(0);
- }
-
- function registerMainKeys(winreg)
- {
- var subkey; //the name of the subkey you are poking around in
- var valname; //the name of the value you want to look at
- var value; //the data in the value you want to look at.
- var err;
-
- subkey = "SOFTWARE\\Netscape";
- winreg.createKey(subkey,"");
-
- subkey = "SOFTWARE\\Netscape\\Netscape 6";
- winreg.createKey(subkey,"");
-
- valname = "CurrentVersion";
- value = "6.1 (en)";
- err = winreg.setValueString(subkey, valname, value);
-
- subkey = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)";
- winreg.createKey(subkey,"");
-
- subkey = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)\\Main";
- winreg.createKey(subkey,"");
-
- valname = "Install Directory";
- value = fCommunicator;
- err = winreg.setValueString(subkey, valname, value);
-
- subkey = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)\\Uninstall";
- winreg.createKey(subkey,"");
-
- valname = "Uninstall Log Folder";
- value = szUninstall;
- err = winreg.setValueString(subkey, valname, value);
-
- valname = "Description";
- value = "Netscape 6 (6.1)";
- err = winreg.setValueString(subkey, valname, value);
- }
-
- function updateWinReg()
- {
- //Notes:
- // can't use a double backslash before subkey - Windows already puts it in.
- // subkeys have to exist before values can be put in.
- var winreg = getWinRegistry();
- var subkey; //the name of the subkey you are poking around in
- var valname; //the name of the value you want to look at
- var value; //the data in the value you want to look at.
- var restrictedAccess;
- var ikwDefined;
-
- if(winreg != null)
- {
- /* This will check to see if the user has restricted access or not.
- * It checks to see if HKEY_LOCALMACHINE\SOFTWARE is writable. If
- * it is, then access is not restricted. This is only used to
- * determine which Desktop, Programs, and Start Menu folders
- * are to used: common or per user
- */
- restrictedAccess = false;
- ikwDefined = typeof(winreg.isKeyWritable);
- logComment("winreg.isKeyWritable(): " + ikwDefined);
- if(ikwDefined == "function")
- {
- winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
- if(!winreg.isKeyWritable("SOFTWARE"))
- restrictedAccess = true;
- }
-
- logComment("restrictedAccess value: " + restrictedAccess);
- if(!restrictedAccess)
- {
- winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
- registerMainKeys(winreg);
- }
-
- winreg.setRootKey(winreg.HKEY_CURRENT_USER);
- registerMainKeys(winreg);
- }
- }
-
- function upgradeCleanup()
- {
- deleteThisFile("Program", "component.reg");
- deleteThisFile("Components", "xpti.dat");
- deleteThisFile("Components", "xptitemp.dat");
- }
-
- // main
- var srDest;
- var err;
- var szUninstall;
- var fCommunicator;
- var fWindowsSystem;
- var fileTemp;
- var fileComponentReg;
- var fileComponentRegStr;
- var fileMsvcrt;
- var fileMsvcirt;
- var fileMsvcp60;
-
-
- srDest = 1473;
- err = initInstall("Netscape XPCom", "XPCom", "6.10.0.2001072700");
- logComment("initInstall: " + err);
-
- fCommunicator = getFolder("Program");
- fWindowsSystem = getFolder("Win System");
- logComment("fCommunicator: " + fCommunicator);
-
- // build the uninstall folder path
- szUninstall = fCommunicator + "Uninstall";
-
- // Log component.reg and xpcom.log files so it can be deleted by
- // the uninstaller.
- // These two files are created after installation is done, thus
- // are normally not logged for uninstall.
- logComment("Installing: " + fCommunicator + "component.reg");
-
- if(verifyDiskSpace(fCommunicator, srDest))
- {
- setPackageFolder(fCommunicator);
-
-
- err = addDirectory("",
- "6.10.0.2001072700",
- "bin", // dir name in jar to extract
- fCommunicator, // Where to put this file (Returned from getFolder)
- "", // subdir name to create relative to fCommunicator
- true); // Force Flag
- logComment("addDirectory() of Program returned: " + err);
-
- if(err == SUCCESS)
- {
- fileTemp = fWindowsSystem + "msvcrt.dll";
- fileMsvcrt = getFolder("file:///", fileTemp);
- rv = File.exists(fileMsvcrt);
- logComment("fileExists() returned: " + rv);
- if(rv == false)
- {
- logComment("File not found: " + fileMsvcrt);
- err = addFile("/Microsoft/Shared",
- "6.10.0.2001072700",
- "msvcrt.dll", // dir name in jar to extract
- fWindowsSystem, // Where to put this file (Returned from getFolder)
- "", // subdir name to create relative to fCommunicator
- WIN_SHARED_FILE);
- logComment("addFile() of msvcrt.dll returned: " + err);
- }
- else
- {
- logComment("File found: " + fileMsvcrt);
- }
-
- fileTemp = fWindowsSystem + "msvcirt.dll";
- fileMsvcirt = getFolder("file:///", fileTemp);
- rv = File.exists(fileMsvcirt);
- logComment("fileExists() returned: " + rv);
- if(rv == false)
- {
- logComment("File not found: " + fileMsvcirt);
- err = addFile("/Microsoft/Shared",
- "6.10.0.2001072700",
- "msvcirt.dll", // dir name in jar to extract
- fWindowsSystem, // Where to put this file (Returned from getFolder)
- "", // subdir name to create relative to fCommunicator
- WIN_SHARED_FILE);
- logComment("addFile() of msvcirt.dll returned: " + err);
- }
- else
- {
- logComment("File found: " + fileMsvcirt);
- }
-
- fileTemp = fWindowsSystem + "msvcp60.dll";
- fileMsvcp60 = getFolder("file:///", fileTemp);
- rv = File.exists(fileMsvcp60);
- logComment("fileExists() returned: " + rv);
- if(rv == false)
- {
- logComment("File not found: " + fileMsvcp60);
- err = addFile("/Microsoft/Shared",
- "6.10.0.2001072700",
- "msvcp60.dll", // dir name in jar to extract
- fWindowsSystem, // Where to put this file (Returned from getFolder)
- "", // subdir name to create relative to fCommunicator
- WIN_SHARED_FILE);
- logComment("addFile() of msvcp60.dll returned: " + err);
- }
- else
- {
- logComment("File found: " + fileMsvcp60);
- }
-
- if(!err)
- {
- updateWinReg();
- upgradeCleanup();
-
- err = performInstall();
- logComment("performInstall() returned: " + err);
- }
- else
- cancelInstall(err);
- }
- else
- cancelInstall(err);
- }
- else
- cancelInstall(INSUFFICIENT_DISK_SPACE);
-
- // end main
-
-