Question

Est-il possible d'introduire la fonctionnalité ClickOnce dans une application existante?

Le scénario est le suivant: La version 1.0 est déjà installée chez le client. Je souhaite leur envoyer un nouveau package d'installation, qui passera à la version 1.1 et doté de la fonctionnalité ClickOnce, permettant ainsi de futures mises à niveau & "Sans effort &";

.

À part cela, y a-t-il d'autres solutions à ce genre de problème?

PS: l'application originale a été développée avec Visual & nbsp; Studio & nbsp; ; 2005 (c’est-à-dire .NET 2.0). J'utilise Visual & Nbsp; Studio & Nbsp; 2008 maintenant. .

Était-ce utile?

La solution

Non, cela n'est pas possible avec un scénario de déploiement ClickOnce standard.

ClickOnce est une installation en mode bac à sable côté client. Il ne saura pas à propos de la version 1.0 qui est déjà installée. Il va simplement vérifier si son GUID a déjà été installé via ClickOnce et, le cas échéant, mettez-le à jour, mais uniquement si la version précédente a été déployée via ClickOnce.

Dans votre cas, si l'utilisateur a installé la version 1.1, les deux versions seront installées côte à côte. La version 1.0 ne sera pas mise à jour, car ClickOnce ignore qu'il existe une association car elle a été déployée via une méthode différente. S'ils ne veulent plus de la version 1.0, ils devront la supprimer manuellement. Une fois la version 1.1 déployée via ClickOnce, les mises à jour ultérieures fonctionneront correctement.

Ne considérez pas ClickOnce comme quelque chose dont vous êtes &, y compris & ";, considérez-le comme une méthode de déploiement.

Autre possibilité:

Je dois préciser que ce que vous recherchez n'est pas possible avec un déploiement ClickOnce standard. Cependant, vous avez indiqué que vous allez leur envoyer un fichier d'installation initial. Dans ce cas, vous pouvez avoir une solution de contournement possible:

  1. Scriptez le fichier d'installation pour supprimer automatiquement l'installation de la version 1.0
  2. Scriptez le fichier d'installation pour lancer l'installation ClickOnce.

Pour les mises à jour ultérieures, il suffit de pointer l'utilisateur sur le " pur " Package d'installation ClickOnce, et vos mises à jour devraient fonctionner correctement.

Autres conseils

Assurez-vous de tester votre déploiement ClickOnce de manière approfondie dans l'environnement de votre client. Je omets des détails ici, mais il y a beaucoup de problèmes avec ClickOnce. Je supporte une application ClickOnce depuis maintenant 3,5 ans et j'ai rencontré de nombreux problèmes avec les manifestes. Je devais supprimer manuellement les dossiers de stockage sandbox pour que les mises à jour s'installent correctement, etc. - Si vous recherchez des problèmes ClickOnce en ligne, vous constaterez qu'il Quelques problèmes sur les forums MSDN et ailleurs, dont beaucoup ne semblent pas vouloir être résolus car ils sont ouverts depuis Visual & nbsp; Studio & nbsp; 2005.

De même, soyez conscient de la possibilité que vous soyez pris dans ClickOnce avant .NET 3.5 SP1. Si vous ne possédez pas votre propre certificat de déploiement de logiciel à partir d’une autorité de certification reconnue par les ordinateurs clients, Visual Studio utilise un & Quot; temporaire & Quot; certificat (* .pfx) qui expire un an après sa création. Après cette date, les versions de mise à jour suivantes ne seront probablement pas installées et afficheront aux utilisateurs des messages effrayants sur l'expiration des certificats. Microsoft a résolu ce problème dans .NET 3.5 SP1, mais vous deviez parcourir les notes de publication pour rechercher les commentaires selon lesquels des certificats temporaires ou permanents n'étaient plus nécessaires. Donc, si vous n’avez pas de certificat public d’autorité de certification et que vous prendrez en charge cette application pendant un certain temps, assurez-vous d’être sur .NET 3.5 SP1.

En fonction de la complexité de votre scénario, puisque vous posez des questions sur d'autres solutions, nous avons fini par utiliser un & "Rouler votre propre &"; approche qui va quelque chose comme ça.

Chaque version mise à jour incrémente la version de l'assembly selon les besoins.

Build contient une étape personnalisée pour générer automatiquement un fichier avec la nouvelle version de l'assembly.

Le projet de déploiement copie le fichier de version dans le répertoire de sortie avec MSI.

Chaque fois que l'application installée s'exécute, elle compare sa propre version à la version figurant dans le fichier de version du dossier de déploiement. S'ils diffèrent, quittez l'application et lancez le fichier MSI que nous avons défini pour supprimer automatiquement les anciennes versions de l'application.

Ceci est un "ient du pauvre homme ClickOnce " pour un environnement où il n’existe aucun outil de déploiement d’applications avl (pas même la publicité d’applications AD), nous avons donc décidé de le faire. Encore une fois, cette approche n’est peut-être pas assez sophistiquée pour vous, mais elle fonctionne bien pour nous.

Bonne chance.

Le meilleur moyen que je connaisse serait de leur envoyer un programme d'installation qui:

  1. désinstalle la version actuelle
  2. Lance l'application ClickOnce résidant sur le Web.

Grâce à cela, vous bénéficiez d'une expérience de mise à niveau raisonnable et ClickOnce peut désormais gérer les mises à niveau de manière autonome.

Je pense que dans ce cas, le " plus facile & "; La solution consisterait simplement à utiliser le déploiement ClickOnce pour la version 1.1 et, dans le cadre de cette nouvelle version de votre application, un fichier de configuration par défaut avec un indicateur de première exécution, de la sorte, lors de la première exécution par l'utilisateur. et voit cet indicateur de première utilisation, il recherche la version précédente, copie sur les paramètres de configuration existants, puis désinstalle automatiquement la version précédente.

Cela nécessiterait un peu de programmation de votre part, mais c’est la solution que j’avais choisie lors d’un travail précédent pour effectuer une tâche similaire afin de mettre à niveau un utilitaire qui utiliserait Clickonce là où il n’y en avait pas auparavant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top