none
Migrer une application WinForm du Framework 2.0 au 4.0 RRS feed

  • Question

  • Bonjour et bonne année à tous.

    Le problème : L’installation d’une application déployée avec Click Once prend en charge les pré-requis et effectue leur installation préalable. Cependant, et sauf erreur de ma part, Click Once ne prend pas en charge le changement ultérieur des pré-requis.

    Ainsi, une application déployée sous Framework 2.0, qui vient à migrer sous FW 4.0, ne peut pas être mise à jour automatiquement par Click Once, qui ne s'occupe plus alors des nouveaux pré-requis.

    Solution envisagée : Une étape intermédiaire qui consiste à publier une mise à jour de l’application dans sa version FW 2.0 et qui réalise la mutation par programme :

    1. la présentation au client du contexte de migration,
    2. sa propre désinstallation,
    3. l’installation Click Once de la nouvelle version de l’appli sous FW 4.0 à partir du site Internet de déploiement, provoquant l'installation des nouveaux pré-requis si nécessaire.

    Questions : Est-ce la bonne façon de procéder ? Comment la mettre en œuvre ? Comment désinstaller l’application initiale (y compris ses raccourcis)? Comment lancer l’installation Click Once de la nouvelle version localisée sur un serveur ?

    Cette mutation n’est pas un problème nouveau. Elle a déjà très certainement été réalisée. Des solutions existent et des sources sont peut-être disponibles. 

    Merci de vos suggestions

    Tous mes meilleurs voeux pour 2011 sans bug...

     


    Alain
    mardi 4 janvier 2011 10:40

Réponses

  • Bonjour Alain,

    Au vu de tes tests, voilà ce que je ferais.

    Lors de l'update de l'application, en direction de l'ancien site, je ferai en sorte que ton appli se désinstalle d'elle-même, et propose d'installer la nouvelle.

    Voici l'article MSDN qui en parle , saute directement à la section : How to programmatically uninstall a Click Once application and install a new version.

    Cela demandera des actions manuelles de tes utilisateurs malheureusement, mais avec un message explicatif, voire l'ouverture d'une page web d'aide à la manip, cela peut très bien se passer. Et cela t'évitera d'avoir à gérer les différentes version de Windows de tes utilisateurs.

    Cordialement,

    Thomas

     


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse AchLog mercredi 5 janvier 2011 19:58
    mercredi 5 janvier 2011 09:38

Toutes les réponses

  • Bonjour AchLog,

    Si tu peux faire en sorte que tes clients aillent sur la page Web de publication de ton appli ClickOnce et cliquent d'eux-mêmes pour installer l'application, le Setup.exe sera relancé, et si tes pré-requis incluent le frameork 3.5, alors il sera téléchargé.

    La seule chose, donc, que tu as à faire si tes utilisateurs peuvent avoir accès à ta page HTML de déploiement, est de faire en sorte que tes clients s'y rendent.

    Sinon, si tu ne peux pas les faire aller sur ta page de publication, tu vas devoir mettre en place sûrement une version intermédiaire en effet.

    Cordialement,

    Thomas


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    mardi 4 janvier 2011 13:06
  • Bonjour Thomas,

    Merci pour ta réponse.

    La nouvelle appli sera publiée avec le même GUID que la précédente mais sur un site Web différent.

    Les clients qui iront sur sa page Web pourront, en effet, l'installer avec ses pré-requis. Mais, sans avoir désinstallé l'ancienne, qu'adviendra t'il de ses raccourcis (bureau, barre de lancement des tâches, etc.) ? Avec le même GUID, seront-ils conservés et évitera-t-on les doublons ?

    Cordialement

     


    Alain
    mardi 4 janvier 2011 14:34
  • Bonjour Alain,

    Pour les raccourcis, une fois que tes clients auront cliqué sur la nouvelle installation, ils devraient se mettre à jour automatiquement, de la même manière que les updates automatiques seront automatiquement remis à jour avec la nouvelle URL.

    Néanmoins, c'est la théorie, je te conseille tout de même de vérifier ce point précisément lorsque tu feras tes tests sur un poste à migrer.

    Si jamais tu as des doublons, je peux te donner un bout de code à intégrer au démarrage de ton application pour résoudre le problème.

    Cordialement,

    Thomas


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    mardi 4 janvier 2011 15:21
  • Ok Thomas, merci bien pour ce bout de code.

    J'ai déjà eu l'occasion de vérifier qu'une appli pouvait, parfois, avoir des comportements un peu différents en fonction des machines sur lesquelles elles s’exécutent...

    Je pense qu'il serait bon de résoudre ce problème systématiquement, même si les résultats sont bons sur ma machine de test.

    Par ailleurs, la "faiblesse" de cette façon de déployer réside dans le fait que les utilisateurs qui n'iront pas sur la page de déploiement n'auront pas accès à la nouvelle version.

    Le déploiement intermédiaire "manuel" dont il a été question ci-dessus est-il délicat à mettre en oeuvre ?

    Merci

    Cordialement

     


    Alain
    mardi 4 janvier 2011 16:22
  • C'est bien ce que je pensais :

    1. Sous XP, la mise à jour se fait presque bien (il faut télécharger l'appli deux fois) mais ses raccourcis sont bien remplacés par ceux de la nouvelle version.
    2. Sous W7, l'ancienne version reste, avec ses raccourcis. La nouvelle s'installe et son raccourci bureau est nommé avec " - 1" à la fin. Cela fait maintenant que les deux applis peuvent être lancées sur le poste...
    Pas simple de faire un travail propre avec ClickOnce...

    Une suggestion ?


    Alain
    mardi 4 janvier 2011 19:24
  • Bonjour Alain,

    Au vu de tes tests, voilà ce que je ferais.

    Lors de l'update de l'application, en direction de l'ancien site, je ferai en sorte que ton appli se désinstalle d'elle-même, et propose d'installer la nouvelle.

    Voici l'article MSDN qui en parle , saute directement à la section : How to programmatically uninstall a Click Once application and install a new version.

    Cela demandera des actions manuelles de tes utilisateurs malheureusement, mais avec un message explicatif, voire l'ouverture d'une page web d'aide à la manip, cela peut très bien se passer. Et cela t'évitera d'avoir à gérer les différentes version de Windows de tes utilisateurs.

    Cordialement,

    Thomas

     


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse AchLog mercredi 5 janvier 2011 19:58
    mercredi 5 janvier 2011 09:38
  • Merci Thomas pour cette suggestion et l'article qui va avec.

    Je vais regarder cela et l'essayer sur une appli de test.

    As-tu déjà (ou quelqu'un d'autre sur le forum) programmé ce processus de désinstallation, c'est à dire en as-tu une expérience concrète ?

    Je reste très surpris (quoi que...) de la difficulté que représente le simple changement de Framework pour une application.

    Merci de ton aide.


    Alain
    mercredi 5 janvier 2011 11:32
  • De rien !

    Non, pas d'expérience concrète sur le sujet, à l'époque où j'ai eu un problème similaire, obligation pour mes utilisateurs de désintaller/installer une nouvelle version, j'ai publié une version qui ouvrait une page web qui expliquait ce qu'il fallait désintaller, avec le lien vers le site de publication pour qu'ils réinstallent la nouvelle version à la main. Je ne savais pas qu'une application ClickOnce pouvait se désintaller elle-même et je n'avais pas eu le temps de faire des recherches sur ce sujet.

    En fait, concernant le fait que le changement de framework pose problème, c'est uniquement dû à l'optique dans laquelle a été développé ClickOnce. En effet, ClickOnce est prévu pour fonctionner dans un environnement utilisateur sans droits d'administration qui ne peut se mettre à jour qu'elle-même. Les pré-requis ne sont donc pas pensés pour se mettre à jour tout seuls, ce qui quand on y pense est plutôt rassurant. En effet imagine l'installation d'une version malveillante qui aurait la possibilité de faire des installations silencieuses sans que l'utilisateur en soit informé, il pourrait arriver n'importe quoi.

    En termes de sécurité, il est donc normal que ClickOnce n'ait pas de mécanisme de mise à jour de ses pré-requis.

    Mais en effet la mise à jour impossible de framework sans action manuelle des utilisateurs peut paraitre très surprenante à première vue.

    Je continue à garder un œil sur ce sujet au cas où tu rencontrerais des difficultés à mettre en place la solution de réinstallation, mais pour avoir parcouru l'article à titre de curiosité personnelle, cela avait l'air plutôt clair :)

    Cordialement,

    Thomas


    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    mercredi 5 janvier 2011 13:06
  • Merci Thomas pour ta réponse.

    Cependant l'argumentaire ne me parait pas bien convainquant. A partir du moment où ClickOnce réalise, au moins une fois, la mise à jour des pré-requis pourquoi ne pas le permettre plusieurs fois ? mais bon...

    En tout cas l'article que tu as ciblé ci-dessus propose une méthode qui semble fonctionner d'après les tests que j'ai fais. Je vais la mettre en oeuvre sur mon application.

    Merci encore.

    Bien cordialement


    Alain
    mercredi 5 janvier 2011 19:58