Windows Install Example
This example shows the installation of a XPI in which user profile information is contained.
Note the disk space verification, the editing of the Windows registry, the writing to the installation log, and the error checking before either performInstall or cancelInstall is called.
// 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); } 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 fProgram; srDest = 449; err = initInstall(prettyName, regName, "6.0.0.2000110801"); logComment("initInstall: " + err); fProgram = getFolder("Program"); logComment("fProgram: " + fProgram); if(verifyDiskSpace(fProgram, srDest)) { setPackageFolder(fProgram); err = addDirectory("", "6.0.0.2000110801", "bin", // dir name in jar to extract fProgram, // Where to put this file // (Returned from GetFolder) "", // subdir name to create relative to fProgram true); // Force Flag logComment("addDirectory() returned: " + err); // check return value if(err == SUCCESS) { err = performInstall(); logComment("performInstall() returned: " + err); } else cancelInstall(err); } else cancelInstall(INSUFFICIENT_DISK_SPACE); // end main
Document Tags and Contributors
Last updated by:
Sheppy,