Apollo - Mise à jour

sheep2 Je continue mon mouton sur Apollo. J’y ai ajouté quelques animations et comportements, mais on s’en fout un peu. J’ai surtout regardé comment marchait la mise à jour d’une application.

Récupérer la version actuelle

Quand on veut mettre à jour une application, il faut pouvoir vérifier si la version actuelle est la plus récente, on est d’accord. Il faut donc récupérer la version de l’application qui est indiquée dans le fichier de configuration. Sauf que je n’ai pas trouvé où était disponible l’information de la version actuelle dans les Class.

Mais en regardant le dossier des ressources, on retrouve le fichier de configuration. J’arrive à récupérer la version comme ça :

var file:File = File.appResourceDirectory.resolve("META-INF/AIR/application.xml");
var fileStream:FileStream = new FileStream();
fileStream.addEventListener(IOErrorEvent.IO_ERROR, _onError);  
fileStream.open(file, FileMode.READ);
var fileString:String = fileStream.readUTFBytes(fileStream.bytesAvailable);
fileStream.close();

var appConfig:XML = XML(fileString);
trace(appConfig.@version);

Récupérer la dernière version

Aucun problème, j’héberge un fichier texte qui contient la dernière version et je récupère l’information avec un URLLoader.

Télécharger puis mettre à jour

Comme dans la documentation :

var urlString:String = "http://download.neolao.com/flash/sheep.air";
var urlReq:URLRequest = new URLRequest(urlString);
var urlStream:URLStream = new URLStream();
urlStream.addEventListener(Event.COMPLETE, _airLoaded);
urlStream.load(urlReq);

private function _airLoaded(pEvent:Event):void
{
	var fileData:ByteArray = new ByteArray();
	pEvent.target.readBytes(fileData, 0, pEvent.target.bytesAvailable);
	
	var temp:File = File.createTempFile();
	var fileStream:FileStream = new FileStream();
	fileStream.openAsync(temp, FileMode.WRITE);
	fileStream.writeBytes(fileData, 0, fileData.length);
	fileStream.close();
	
	var updater:Updater = new Updater();
	updater.update(temp);
}

Conclusion

Plutôt facile de mettre à jour une application Apollo, sauf que j’aurai bien aimé récupérer la version actuelle autrement que par l’analyse d’un fichier.

Sinon, je m’attendais aussi à une fenêtre de dialogue pour confirmer la mise à jour, mais je n’ai rien eu. Si la machine est un peu lente, on peut voir une fenêtre indiquant la progression de l’installation, c’est tout.

Commentaires