ClickOnce sucks!

Cela part pourtant d'un bon sentiments, améliorer et sécuriser l'installation d'application sous Windows pour l'utilisateur, et simplifier les mises à jours pour le développeur.

Actuellement pour installer une application le plus courant est de télécharger un setup, souvent sous forme de .exe ou de .msi, de le lancer (le fameux double click sur l'exe), et suivre les étapes de l'installation. Si vous ne faites rien de spécial, en général celle-ci s'installe dans:

C:\Program Files\[My Company]\[My Application]\

Et ajoute au passage un raccourcis sur le bureau, et dans le menu démarrer. Au final quelque chose que tous les utilisateurs de windows connaissent maintenant.

Il faut l'avouer ce n'est pas ce qu'il y a de plus simple surtout lorsque l'on compare à la méthode MacOS (que beaucoup ne comprennent pas, alors qu'il s'agit d'un simple drag and drop), et je comprend la volonté de vouloir simplifier le processus. C'est donc là que ClickOnce entre en jeu.

Le principe est très simple, vous vous baladez sur Internet et vous voyez une application intéressante, vous cliquez sur le lien pour télécharger l'application, à ce moment au lieu de télécharger un setup, une installation Web démarre. Vous vous retrouvez devant cette fenêtre :

ClickOnce

Appuyé sur Install et l'application va s'installer depuis Internet. Miracle

On est d'accord, c'est plus simple pour l'utilisateur. Pas de Suivant, Suivant, Suivant, Terminé. Pour le développeur aussi, pas besoin de mettre en place un système de mise à jour, une simple pression sur le bouton Publish dans Visual Studio (l'environnement de développement) et tout cela est poussé vers l'utilisateur comme lors de la mise en production d'un site web.

Seulement voila, au lieu d'essayer de corriger ou d'améliorer le système actuel, Microsoft à préféré en inventer un nouveau. Qui casse les règles, non pas qu'elles soit toutes bonnes mais elles avaient le mérite d'exister, même si parfois elles ne sont pas respecter par les développeurs, Microsoft aurait pu forcer leurs utilisations.

D'abord un application ClickOnce est dites isolée c'est à dire qu'elle ne peut pas interférer avec d'autres applications, pour cela elle est installée dans un répertoire spécial, en général :

C:\Users\[UserName]\AppData\Local\Apps\…\[AppName..exe_Id]\

et

C:\Users\[UserName]\AppData\Local\Apps\…\[AppName..tion_Id]\

Dommage, vous cherchez cette application dans le dossier habituel, oups, elle n'y est pas. Vous avez maintenant des applications installées dans plusieurs endroits de votre ordinateur, pour l'organisation on à vu mieux.

Ensuite on ne peut installer une application ClickOnce que pour un utilisateur, pas possible de faire une installation pour tous les utilisateurs de la machine, impossible aussi de créer les différents raccourcis nécessaires (autre que les standards), impossible aussi de mettre en place des actions spécifiques pendant l'installation, comme ajouter des entrées dans la base de registre.

Vous me direz que ce n'est pas si terrible que l'on peut faire ça au lancement de l'application, et je vous répondrez que oui, il y a pire. Seulement voila, je pense qu'il vaut mieux une expérience unique bien pensé plutôt qu'une expérience de plus, certes plus simple, mais encore une fois différente.

J'aurai préféré une amélioration du système standard, les applications toujours installées dans le même répertoire, avec des droits leurs empêchant d'interagir avec le reste du système, la possibilité dans le setup de régler certains paramètres tout en limitant les choix, afin d'avoir des installations homogène d'une application à une autre.
Concernant les mises à jour une, le principe de ClickOnce est simple, il ne modifie que les fichiers qui on changer, et quand il y à trop de changement, cela repasse par un téléchargement complet… c'est une bonne solution, et elle pourrait être intégrer au setup.

Pour conclure, ClickOnce seul, ça sucks, intégré au système d'installation standard, cela aurait pu être quelque chose de vraiment intéressant, améliorant, unifiant et simplifiant une fois pour toutes les installations d'application sous windows.