Follow me
RSS feed
My sources
My Viadeo

CapApbility.run

Greg | 09 Jun 2009

projetsLe projet CapApbility avance doucement. J'ai eu pas mal de ratés au départ. Initialement, je pensais faire du spécifique par plateforme. J'ai donc mis en place, avec succès, des applications sur Mac et Windows. Les premières utilisant une version de CapApbility en Cocoa et la seconde en C#. C'était presque trop facile puisqu'il ne s'agissait que de créer une simple fenêtre avec un composant browser, capable au préalable de lancer une application externe, d'afficher le contenu de la page principale du site une fois cette application externe lancée, et de fermer l'application (externe) lors de la fermeture de la fenêtre. Bref pas de quoi fouetter un chat, du simple NSTask dans un thread en Cocoa, et le génialement énervant couple System.Diagnostics.ProcessStartInfo / System.Diagnostics.Process sous Windows. Bref, vous l'aurez compris nous ne sommes pas dans le la haute voltige. L'exploit était presque plus d'avoir choisi des technologies non portables... En fait, plus qu'un exploit c'était une bêtise. Heureusement, elle est réparée :P et j'ai donc porté mon développement sous XULRunner me permettant ainsi de gérer la partie interface via XUL et la partie code avec XPConnect.

Résultat des courses, j'ai une solution fonctionnelle.

Comme vous pouvez le voir, le lancement est un peu lent. Probablement parce que je trace pas mal de choses. Cela devrait donc se régler facilement.

Pour gérer le lancement du server de l'application, j'utilise nsIProcess avec XULRunner 1.9.1b, seule version gérant nsIProcess.kill(). Le statut de beta ne devrait perturber personne, car XULRunner 1.9.1 est le coeur de Firefox 3.5, dont la sortie est imminente. Mon seul regret vient du comportement d'nsIProcess sous Windows qui, tout comme System.Diagnostics.Process, ne peut pas lancer un process externe sans ouvrir une immonde fenêtre DOS.

Et la suite ?

Tout d'abord, un peu de refactoring du code (c'est fonctionnel, mais qu'est-ce que c'est moche !) avant de placer le code dans le dépôt SVN. Ensuite il faudra tester, tester, tester et encore tester. Tout cela en fabriquant les applications à la main. L'exemple ci dessous fonctionne sur les trois plateformes cibles, mais vu son haut niveau fonctionnel, je ne veux pas le considérer comme sérieux. Je testerai donc, entre autres, avec ceci. La dernière étape consistera à fabriquer un système de création des applications à la Prism.

Copyright © 2009 - 2011 Grégoire Lejeune.
All documents licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License, except ones with specified licence.
Powered by Jekyll.