9
votes

Existe-t-il une manière standante pour les applications de WinForms .NET à la mise à niveau automatique?

Si vous avez une application WinForms installée sur un grand nombre de machines, il existe une manière standard d'implémenter une fonction de mise à niveau automatique?

E.g. Chaque fois qu'il est démarré, il vérifie un site Web ou un service Web et s'il existe une nouvelle version disponible, il le télécharge et l'installe?

Je pouvais trouver comment rouler ma propre version de cela, mais je me demande s'il y a déjà des cadres en place pour aider à cela.


1 commentaires

Nous avons déjà des questions similaires mais cela est bien expliqué ;-)


5 Réponses :


7
votes

Vous voudrez peut-être essayer ClickOnce, je pense que c'est possible avec ça.


5 commentaires

Oui, vous pouvez le faire avec ClickOnce


Certainement possible avec ClickOnce - nous ne l'avons pas déployé à grande échelle, mais dans une portée assez limitée, cela fonctionnait très bien.


+1 ClickOnce fonctionne bien pour la mise à jour automatique. Nous avons une application qui est installée sur plus de 100 pcs et nous pouvons la mettre à niveau facilement avec ClickOnce. Bien que ClickOnce soit idéal pour la mise à niveau, il dispose d'autres limitations (par exemple, un installateur non personnalisable, n'installe pas pour tous les utilisateurs, exécutable obtient le répertoire de profils de l'utilisateur - non pas dans les fichiers de programme, système de signature de certificat complexe qui peut casser des mises à niveau si pas fait correctement, etc.). Assurez-vous que votre application est bonne ajustée pour le modèle ClickOnce à l'avance.


Merci pour le détail supplémentaire Nysystemsanalyste. Cela aurait pu être une réponse séparée ...


J'ai eu une mauvaise expérience avec ClickOnce, mais nous avons peut-être pu utiliser le problème.



2
votes

Jetez un coup d'œil au Bloc d'application Microsoft Updater . < / p>


2 commentaires

Cela semble intéressant - était-ce remplacé par ClickOnce ou vise-il de quelque chose de différent?


Je ne suis pas à 100%, mais je pense que c'est plus âgé. Au moins, il est répertorié comme "retiré" dans l'arborescence de gauche, ciblé à .NET 1.1 et "vous aide à implémenter un modèle de tirage pour télécharger automatiquement les mises à jour" où je suppose que vous avez vraiment besoin d'un modèle "PUSH".



9
votes

+1 sur la réponse ClickOnce, mais je voulais aussi faire quelques commentaires sur cela également:

Normalement, lorsque quelqu'un commence pour la première fois à regarder ClickOnce, ils découvrent qu'il ajoute un certain nombre de nouvelles restrictions aux choses que leur application est autorisée à faire. Ils violent presque toujours au moins un de ceux-ci et revenir déclarant que ClickOnce ne fonctionne pas pour eux parce que X, Y et Z ne fonctionneront plus.

Anticiper cela sera encore une fois le cas, je souhaite prendre un moment pour expliquer une justification de ces restrictions et pourquoi vous voudrez peut-être examiner de plus près la façon dont votre application fonctionne plutôt que d'écrire votre propre système de mise à jour ou d'aller avec une alternative.

La principale chose ici est de regarder le cas d'utilisation principale des applications ClickOnce. Ce cas d'utilisation est principalement des postes de travail d'entreprise, où vous souhaitez déployer une application d'application de Business réelle qui devrait toujours être à jour, mais que les utilisateurs ne doivent en aucun cas avoir d'accès administrateur à leur propre ordinateur. Puisque vous parlez d'une "application installée sur un grand nombre de machines", je pense que c'est probablement votre catégorie.

En regardant ce cas d'utilisation, le dernier point est particulièrement tueux. En fin de compte, la plupart des petites restrictions sur les applications ClickOnce sont des choses qui nécessiteraient l'une des opérations suivantes:

  1. Accès administrateur au moment de l'exécution, même brièvement
  2. Accès administrateur à l'heure de mise à jour

    Parfois, il n'est pas évident que vous avez besoin de cet accès ou de la raison pour laquelle vous avez besoin d'accès, mais à la fin, c'est généralement ce que cela revient. Vous souhaitez enregistrer une DLL avec le système ou mettre à jour un fichier dans le dossier de fichiers de programme? Qui nécessite un accès administrateur par défaut. Besoin d'installer ou de mettre à jour un service Windows? Accès administrateur. Vous souhaitez exécuter un installateur MSI pour un composant tiers? Vous avez besoin de privilèges d'administration pour exécuter des MSI. Vous voulez écouter sur un port TCP? Vous avez eu l'idée.

    à la fin, votre objectif est de le faire pour que même les utilisateurs avec uniquement des privilèges standard puissent toujours mettre à jour votre application automatiquement ... Même de manière transparente. Sinon, vous avez besoin d'un personnel informatique supplémentaire impliqué dans chaque déploiement. C'est une bonne idée même si votre programme est pour le public en général; Cela vous aidera à éviter une certaine classe de soutien. Aller avec un système de déploiement alternatif ne changera pas cela. Ces systèmes ne sont généralement généralement ciblés que dans les machines de consommation, où la plupart des utilisateurs fonctionnent en tant qu'administrateur de toute façon et sont de même que les problèmes.


3 commentaires

Bonjour Joel, ClickOnce est-il utilisé pour implémenter un modèle de pression pour les mises à niveau. J'ai utilisé ClickOnce pour déployer notre application à travers l'organisation et les clients devaient exécuter l'application pour commencer à obtenir les mises à jour. Existe-t-il une API disponible pour envoyer des mises à jour à partir du serveur sans interaction client (en supposant que tous les clients sont connectés au réseau tout le temps)


@Theraneman: ClickOnce peut vous assurer qu'une application est à jour chaque fois qu'elle est exécutée. Qu'importe si l'application est à quelques jours à compter si l'utilisateur ne l'a pas exécuté?


ClickOnce a un problème avec la protection des fichiers d'application .deployez-vous sur le côté serveur Web. Ceci peut être surmonté avec l'authentification Windows dans un réseau local, mais sur l'Internet public, il ne peut être surmonté que par un proxy côté client. Voir msdn.microsoft.com/en-us/library/aa480721.aspx # adminc_topic1 0 "Administration de déploiements ClickOnce". Il y a également eu des articles plus tard sur l'authentification via un proxy. bronumski.blogspot.com/2009/06/...



1
votes

Mise à jour de AppLife vaut chaque centime coûte.


0 commentaires

1
votes

J'ai finalement utilisé la source Open Source 'Sharp AutoUPDater SharpTater' à

http://csautoupdater.sourceforge.net/

Sharp AutoPDater est un composant C # qui mettra automatiquement à jour votre application .NET. Utilisation des fichiers de configuration XML, le composant AutoPDater détecte s'il existe une nouvelle version du logiciel, des téléchargements, des décompresses et de l'installe les nouveaux fichiers.

Son équitable SimPe - il télécharge un zip et décompressez-le sur l'application installée - mais cela fonctionne bien et était plus facile que d'écrire le mien. Je ne pense pas que cela gère très bien les choses si les utilisateurs n'ont pas d'accès à leur dossier de fichiers de programme.


0 commentaires