Windows Install

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

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : teoli, ethertank, Kyodev, Fredchat
 Dernière mise à jour par : teoli,