Magazine High tech

AIR beta 3 Update

Publié le 17 décembre 2007 par Stef1

L’update d’une application AIR est une de ces fonctionnalités bien pratique, et elle n’échappe pas à la vague de modifications apporté par la beta 3.

Cette classe est une évolution de la classe updateManager de Rich Tretola, elle intègre les changements apporté par la beta 3

  1.  
  2.                 var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
  3.                 var ns:Namespace = appXml.namespace();
  4.                 var  appId:String = appXml.ns::id[0];
  5.                 appVersion = appXml.ns::version[0];
  6.                 var appName:String = appXml.ns::filename[0];

On voit que maintenant la lecture du fichier application est intégrée dans AIR

  1.  
  2. package com.mykii.utils
  3. {
  4.    import flash.desktop.NativeApplication;
  5.    import flash.desktop.Updater;
  6.    import flash.events.Event;
  7.    import flash.filesystem.File;
  8.    import flash.filesystem.FileMode;
  9.    import flash.filesystem.FileStream;
  10.    import flash.net.URLRequest;
  11.    import flash.net.URLStream;
  12.    import flash.utils.ByteArray;
  13.    import mx.controls.Alert;
  14.    import mx.events.CloseEvent;
  15.    import mx.rpc.events.ResultEvent;
  16.    import mx.rpc.http.HTTPService;
  17.    public class UpdateManager {
  18.  
  19.            private var _constanteApplicationName:String;
  20.        public var versionURL:String;
  21.  
  22.        private var version:XML;
  23.        private var urlStream:URLStream = new URLStream();
  24.        private var fileData:ByteArray = new ByteArray();
  25.  
  26.            [Bindable] private var _currentVersion:String;
  27.        [Bindable] private var appVersion:String;
  28.  
  29.        /*
  30.        constructor
  31.        */
  32.        public function UpdateManager(versionURL:String):void{
  33.           this.versionURL = versionURL;
  34.        }
  35.        /*
  36.        load the application.xml file
  37.        */
  38.        public function loadApplicationFile():void{
  39.                 var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
  40.                         var ns:Namespace = appXml.namespace();
  41.                         var  appId:String = appXml.ns::id[0];
  42.                          appVersion = appXml.ns::version[0];
  43.                          var appName:String = appXml.ns::filename[0];
  44.                         loadRemoteFile();
  45.        }
  46.        /*
  47.        load a remote xml file to check for new version
  48.        */
  49.        private function loadRemoteFile():void{
  50.            var http:HTTPService = new HTTPService();
  51.            http.url = versionURL;
  52.            http.useProxy=false;
  53.            http.method = "GET";
  54.            http.resultFormat="xml";
  55.            http.send();
  56.            http.addEventListener(ResultEvent.RESULT,testVersion2);
  57.        }
  58.        /*
  59.        check to see if an update exists and either
  60.        force the update or give the user the option
  61.        */
  62.        private function testVersion2(event:ResultEvent):void{
  63.           version = XML(event.result);
  64.            if((appVersion != version.@version) && version.@forceUpdate == true){
  65.                getUpdate();
  66.            }else if(appVersion != version.@version){
  67.                Alert.show("Il y a une mise à jour disponible,\nVoulez vous la télécharger maintenant? \n\nDetails:\n" +
  68.                version.@message, "Choissisez Oui ou Non", 3, null, alertClickHandler);
  69.            } else {
  70.             trace("There are no new updates available");
  71.            }
  72.        }
  73.        /*
  74.        if user wants update, call getUpdate()
  75.              */
  76.        private function alertClickHandler(event:CloseEvent):void {
  77.            if (event.detail==Alert.YES){
  78.                getUpdate();
  79.            }
  80.        }
  81.        /*
  82.        download the new AIR installer file
  83.             */
  84.        private function getUpdate():void{
  85.            var urlReq:URLRequest=new URLRequest(version.@downloadLocation);
  86.            urlStream.addEventListener(Event.COMPLETE, loaded);
  87.            urlStream.load(urlReq);
  88.        }
  89.        /*
  90.        read the new AIR file
  91.              */
  92.        private function loaded(event:Event):void {
  93.            urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
  94.            writeAirFile();
  95.        }
  96.        /*
  97.        write the new AIR installer to disk
  98.              */
  99.        private function writeAirFile():void {
  100.            var file:File = File.applicationStorageDirectory.resolvePath(_constanteApplicationName);
  101.            var fileStream:FileStream = new FileStream();
  102.                fileStream.addEventListener(Event.CLOSE, fileClosed);
  103.                fileStream.openAsync(file, FileMode.WRITE);
  104.                fileStream.writeBytes(fileData, 0, fileData.length);
  105.                fileStream.close();
  106.        }
  107.        /* close the FileStream and use the
  108.        Updater class to update the application
  109.        */
  110.        private function fileClosed(event:Event):void {
  111.            var updater:Updater = new Updater();
  112.            var airFile:File = File.applicationStorageDirectory.resolvePath(_constanteApplicationName);
  113.            updater.update(airFile,version.@version);
  114.        }
  115.                 /*
  116.                  Setter for the name of the AIR file
  117.                 */
  118.                 public function set constanteApplicationName(value:String):void{
  119.                         _constanteApplicationName = value;
  120.                 }
  121.    }
  122. }

Le fichier distant se présente sous cette forme

  1.  
  2. <?xml version="1.0"  encoding="ISO-8859-1"?>
  3. <currentVersion version="0.220"
  4. downloadLocation="http://www.mykii.eu/AIR/KIISB/KIISB.air"
  5. forceUpdate="false"
  6. message="Passage en beta 3"/>
  7.  

Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

  • Macbook air

    Macbook

    L’ultra portable d’apple dont toute la blogosphère parle s’appellerait Macbook Air et devrait être présenté aujourd’hui… Conçu en verre et en aluminium, il... Lire la suite

    Par  Mathieu
    HIGH TECH, INFORMATIQUE, LOGICIELS, MOBILES, A CLASSER
  • MacBook Air en vidéo

    Le nouveau MacBook Air d'Apple présenté hier soir au salon Macworld de San Francisco.Comme j'en parlais il y a quelques semaine le nouveaux Mac gère le... Lire la suite

    Par  Teddy
    HIGH TECH, INFORMATIQUE
  • MacBook Air

    MacBook

    Apple vient de présenter son MacBook Air, ultraportable version Mac. Il est léger (comme l'air ?), fin, a priori relativement puissant, mais cher - ce qui fait... Lire la suite

    Par  Xavierc
    CONSO, HIGH TECH, INFORMATIQUE, ORDINATEURS
  • MacBook Air : premières critiques

    Les premières critiques pour la pile de MacBook Air. Les commentaires étaient nombreux et variés hier soir sur les différents sites Web traitant des produits... Lire la suite

    Par  André C
    CONSO, HIGH TECH, INFORMATIQUE, ORDINATEURS
  • Macbook air

    Macbook

    Ultramince, ultraléger et ultrachic, le nouveau Mac tranche avec les modèles actuels. Mais son achat ne se justifie que comme deuxième machine. Nous l'avons... Lire la suite

    Par  Googleman
    CONSO, HIGH TECH, INFORMATIQUE, ORDINATEURS
  • Adobe AIR disponible

    Adobe disponible

    Je viens de recevoir à l'instant un mail d'Adobe m'informant que leur plateforme de développement d'applications AIR était maintenant disponible (v1.0).... Lire la suite

    Par  Christophe Michau
    HIGH TECH, INFORMATIQUE, LOGICIELS
  • Service après Update pour Sp1

    Microsoft offre un service après vente pour Windows Vista si vous rencontrez des problèmes avec la mise à jour “Service Pack 1″. Vous pouvez contactez le... Lire la suite

    Par  Jb Kechi
    CONSO, HIGH TECH, INFORMATIQUE, LOGICIELS

A propos de l’auteur


Stef1 Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossier Paperblog