Exemple d'installation Windows
Cet exemple décrit l'installation d'un fichier xpi
dans lequel sont contenues les informations sur le profil de l'utilisateur.
La vérification de l'espace disque, l'édition du registre Windows, l'écriture du journal d'installation et la vérification des erreurs se font avant l'appel des méthodes performInstall ou cancelInstall.
// Cette fonction vérifie l'espace disque en kio function verifyDiskSpace(dirPath, spaceRequired) { var spaceAvailable; // Récupère l'espace disque pour le chemin donné spaceAvailable = fileGetDiskSpaceAvailable(dirPath); // Convertit l'espace disque disponible en kio spaceAvailable = parseInt(spaceAvailable / 1024); // Fait la vérification if(spaceAvailable < spaceRequired) { logComment("Espace disque insuffisant : " + dirPath); logComment(" requis : " + spaceRequired + " kio"); logComment(" disponible : " + spaceAvailable + " kio"); return(false); } return(true); } function updateWinReg4Ren8dot3() { var fProgram = getFolder("Program"); var fTemp = getFolder("Temporary"); // Notes : // On ne peut pas utiliser un double backslash avant une sous-clef // car Windows les met déjà. // Les sous-clefs doivent exister avant d'y mettre une valeur. var subkey; // Le nom de la sous-clef dans laquelle vous voulez intervenir var valname; // Le nom de la paire nom_de_valeur/valeur à modifier var value; // La nouvelle valeur chaîne var winreg = getWinRegistry() ; if(winreg != null) { // Ici, nous récupérons la version courante. 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", // Dans le jar, nom du répertoire à extraire fProgram, // Où mettre le fichier (valeur retournée depuis GetFolder) "", // Noms des sous-répertoires à créer, relativement à fProgram true); // Force Flag logComment("addDirectory() returned: " + err); // Vérifie la valeur retournée if(err == SUCCESS) { err = performInstall(); logComment("performInstall() returned: " + err); } else cancelInstall(err); } else cancelInstall(INSUFFICIENT_DISK_SPACE); // Fin de main