Salem's Euphoria

Sharing Experience


2 Comments

Virtualisation des applications Desktop

Lors du développement d’une application de bureau destinée au grand public, on pense souvent à trois P essentiels:

Performance
Protection
Portabilité

Dans ce post, je voudrai parler de ma propre expérience avec les applications .Net et l’issue de portabilité que je rencontre à chaque fois.

La première restriction est que ces applications ne fonctionnent que sous Windows (sauf si vous développez avec MONO).

La deuxième contrainte concerne le framework DotNet lui même qui doit être installé sur le poste du client (même version que celle de l’application).Une application .Net nécessite son environnement pour pouvoir s’exécuter.

Deux approches communes se présente alors; Soit vous demandez à l’utilisateur final de télécharger le dotNet framework nécessaire, soit vous lui fournirez la version distribuable du framework lors de l’installation. Plusieurs outils sont à votre disposition pour le faire en commençant par l’installateur minimal de Visual Studio, InstallShield ou autres…

Ces deux approches entraînent un travail nécessaire à l’utilisateur final qui peut abandonner l’affaire dès le premier échec d’installation de dotnet framework(à cause des droits d’accès par exemple); Essayer d’installer le dotnet framework 4 sur windows server 2003 et vous verrez le nombre de problème que vous devriez résoudre…

La question suspendu et omniprésente: Comment exécuter une application DotNet sans avoir à installer le DotNet Framework?

La première réponse sera : Tu peux pas!!!

La solution qui reste alors sera la virtualisation de l’application: L’opération consiste à embarquer le dotnet framework (ou uniquement les composantes nécessaires) dans votre application afin que votre application n’ait aucune dépendance logicielle supplémentaire et devient une application réellement “Standalone”.

J’ai essayé de faire mon malin au début, utiliser IlMergeAl(Assembly Linker) et compilation en module,  puis NGEN, mais finalement j’ai abandonné parce que j’ai compris enfin ce que Microsoft veut dire par environnement; Il ne suffit pas de faire la résolution classique des dépendances aux différentes bibliothèques, mais il faut aussi faire l’abstraction du CLR et du JIT.

Le CLR (Common Language Runtime), est le moteur d’exécution qui permet d’obtenir le code en langage  intermédiaire (MSIL), un peu comme la JVM. Ce même code intermédiaire est compilé “à la volé”(~ Just In Time) pour pouvoir s’exécuter finalement.

Voici quelques solutions présentes sur le marché pour répondre à la question existentielle “Comment je peux exécuter une application dotnet sans installer le dotnet framework”.

Spoon Studio

Le produit leader présent sur le marché actuellement s’appelle Spoon Studio (ancien xenocode), Mais son prix est colossal (de 1995$ à 30000$ si votre boite fait plus que 100K$ par an). En plus, pour chaque copie vendu de votre application, vous devez 20$ à Spoon. Bref, ce n’est pas donné.

L’interface de l’application est intuitive. Vous pouvez embarquer les différentes versions du dotNet Framewok, Java, Flash, Acrobat Reader et même SqlServer Xpress. L’exécutable est de l’ordre de 90Mo pour une application minimale dotNet, juste pour vous donner une idée.

ThinApp

La procédure de post et pré scan du système avant et après installation du dotnet framework est expliquée étape par étape ici; Pour virtualiser votre application, il suffit de créer un installateur minimal avec Visual Studio par exemple et l’installer sur le même système après avoir installé le dotnet framework, et avant le pré-scan.

Salamander.Net Linker


Sa documentation dit qu’il peut faire des tas de choses, même l’abstraction du dotnet framework mais… je n’ai pas réussi à le tester car la version demo est à la demande; j’attends depuis un mois et il ne m’ont pas encore répondu.

Molebox

Dans sa présentation du produit, la société prétend qu’il peut embarquer des DLL, ActiveX et des composantes dotNet. J’ai vérifié: ça ne donne rien.

L’option “inherit virtual environment” disponible dans la configuration du projet n’inclue pas l’environnement dotnet dans l’application. Donc, ce produit sert à créer une pack unique pour tous les fichiers mais, pour une application dotNet, vous aurez toujours besoin d’installer le framework;

Cameyo

Une alternative prometteuse, mais qui n’est pas encore assez mure. Dans deux ans, je pense qu’il sera leader de ce marché s’il continue le travail au même rythme. C’est le seul produit gratuit de virtualisation.

La liste s’étend encore, mais, à mon avis ça ne vaut pas le coût. Pour les curieux, il y a aussi:

– Evalazer

– Ceedo

– Gilma

– BoxedApp et InstallAware

– Phoenix

– JauntePe

Pour conclure, je pense que cette question est un faux problème à l’origine. Lorsque vous souhaitez développer une application desktop, vous devez être conscient au départ, que pour bénéficier des facilités de développement offertes par dotNet, vous devriez créer un installateur et fournir les composantes requises avec votre produit. Mais si ça devient une fatalité, essayez de gagner au LOTO avant de commencer ou bien apprenez le C/C++;

PS: Je deteste VB6 😉

Advertisements