Apollo - Mise à jour

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

1. Le mardi, mars 27 2007, 10:20 par Lipki

j'ai une :
This application could not be installed or launched (2038).

je n'arrive pas a comprendre ce qui est mis a jour (j'ai pas regardé les sources).

3. Le vendredi, mars 30 2007, 15:44 par GotNoSpirit

Holla,

Petit message histoire de t'indiquer deux petits soucis
lorsque je quitte l'application Sheep j'obtiens ce genre d'erreur
Error: Error #2153: Cannot perform operation on closed window.
at Error$/throwError()
at flash.display::NativeWindow/get bounds()[C:\Documents and Settings\acrorel\Local Settings\Temp\aslibc-26332\NativeWindow.as:496]
at flash.display::NativeWindow/get x()[C:\Documents and Settings\acrorel\Local Settings\Temp\aslibc-26332\NativeWindow.as:1174]
at states::CrashWall/states:CrashWall::_animationStep()
at flash.utils::Timer/flash.utils:Timer::_timerDispatch()
at flash.utils::Timer/flash.utils:Timer::tick()[C:\Documents and Settings\acrorel\Local Settings\Temp\aslibc-26332\Timer.as:158]
Cette erreur apparaît périodiquement -2/3 secondes- tant que je ne clique pas sur "Tout annuler"
Et le processus continue de tourner -même si l'application n'est plus dans ma barre des tâches-

Sinon le mouton n'est pas entier, il lui manque les pattes :\ (j'avais déjà ce problème sur ta première version)

Voilà c'était juste un petit input sur ton appli
Bonne continuation

^^