home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC & Mediji 2002 May
/
PCM_0205.iso
/
media
/
demo
/
netscape
/
talkback.xpi
/
install.js
Wrap
Text File
|
2002-03-14
|
6KB
|
205 lines
// 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 to delete: " + fFileToDelete);
if(File.isFile(fFileToDelete))
{
File.remove(fFileToDelete);
return(true);
}
else
return(false);
}
// this function deletes a folder if it exists
function deleteThisFolder(dirKey, folder, recursiveDelete)
{
var fToDelete;
if(typeof recursiveDelete == "undefined")
recursiveDelete = true;
fToDelete = getFolder(dirKey, folder);
logComment("folder to delete: " + fToDelete);
if(File.isDirectory(fToDelete))
{
File.dirRemove(fToDelete, recursiveDelete);
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);
}
// main
var srDest;
var err;
var communicatorFolder;
// This list contains filenames that are long filenames ( > 8.3) critical during installation time.
// This list is automatically generated during the build process.
// The filenames should include paths relative to the Netscape 6 folder.
// '/' must be used as path delimiters regardless of platform.
var listLongFilePaths = ["components/qfaservices.dll"];
srDest = 801;
err = initInstall("Quality Feedback Agent", "Quality Feedback Agent", "6.2.2.2002031420");
logComment("initInstall: " + err);
communicatorFolder = getFolder("Communicator");
logComment("communicatorFolder: " + communicatorFolder);
if(verifyDiskSpace(communicatorFolder, srDest))
{
setPackageFolder(communicatorFolder);
// Ren8dot3 process needs to be done before any files have been installed
// (this includes the temp files during the prepare phase)
prepareRen8dot3(listLongFilePaths);
err = addDirectory("",
"6.2.2.2002031420",
"bin", // dir name in jar to extract
communicatorFolder, // Where to put this file (Returned from getFolder)
"", // subdir name to create relative to communicatorFolder
true ); // Force Flag
logComment("addDirectory() returned: " + err);
/* Log files that are created after the installer is done, so they can be uninstalled */
logComment("Create Folder: " + communicatorFolder + "components");
logComment("Create Folder: " + communicatorFolder + "components\\Netscape");
logComment("Create Folder: " + communicatorFolder + "components\\Netscape\\Netscape6.50");
logComment("Installing: " + communicatorFolder + "components\\Netscape\\Netscape6.50\\manifest.ini");
logComment("Installing: " + communicatorFolder + "components\\Netscape\\Netscape6.50\\permdata.box");
// check return value
if(!err)
{
err = performInstall();
logComment("performInstall() returned: " + err);
}
else
cancelInstall(err);
}
else
cancelInstall(INSUFFICIENT_DISK_SPACE);
// end main