2008-09-15 9 views
4

J'ai une application à trois niveaux qui est installée dans les environnements d'entreprise. Avec chaque mise à jour de la version du serveur, tous les clients doivent également être mis à jour. À l'heure actuelle, je donne un package MSI qui est automatiquement déployé via Active Directory, cependant mes clients (la plupart du temps avec 20-300 utilisateurs chacun) semblent détester la solution MSI car il estMise à jour automatique dans les environnements d'entreprise (C#)

  • Compliqué pour le faire fonctionner (peu actif Connaissance d'annuaire);
  • Le processus de mise à jour ne peut pas être déclenché par le serveur lorsqu'une nouvelle version est détectée.
  • Les clients ne peuvent pas installer plusieurs versions du client (par exemple 2.3 et 2.4) en même temps pour parler à différents serveurs;
  • Le processus de mise à jour lui-même ne fonctionne pas toujours comme prévu (parfois très étrange comportement lui-même la guérison après quelques heures)

J'ai maintenant fait quelques expériences avec ClickOnce, mais cette façon de unflexible pour moi et trop difficile à intégrer dans mon processus de construction automatisé. En outre, il produit des messages d'erreur cryptiques qui pourraient sûrement dérouter mes clients.

Je n'aurais aucun problème pour écrire la logique de mise à jour moi-même, mais le problème est que les utilisateurs qui exécutent des applications à mise à jour automatique ont des droits trop restreints pour effectuer une mise à jour. J'ai trouvé qu'ils sont capables d'écrire dans leur répertoire Local Application Data, mais je ne pense pas que ce soit l'endroit où installer les fichiers d'application.

Connaissez-vous un moyen pour une mise à jour qui "fonctionne"?

+0

Veuillez clarifier les erreurs que vous obtenez avec ClickOnce et à quelle étape (car c'est une bonne solution à votre problème et peut-être nous pouvons le réparer). –

+0

ClickOnce a travaillé pour nous. En ce qui concerne les messages d'erreur «cryptiques». Je n'ai vu ceux-là que lorsque mon application a été mal configurée en utilisant mage. – Bloodhound

Répondre

4

Vous pouvez répliquer quelque peu ce que ClickOnce fait, il suffit de l'ajuster à vos besoins.

  1. Créez un fichier exécutable léger qui vérifie un emplacement réseau/Web pour les mises à jour.
  2. S'il y a des mises à jour, il les copie localement et remplace les fichiers "réels" de l'application.
  3. Il exécute l'application "réelle".

L'emplacement des fichiers d'application doit être déterminé par les autorisations et le système d'exploitation. Si les utilisateurs n'ont que l'autorisation d'écriture sur un ensemble limité de dossiers, vous n'avez pas le choix d'utiliser l'un de ces dossiers. Une autre option consiste à fournir un package d'installation initial qui installe l'exécutable léger et accorde l'autorisation r/w sur un dossier spécifique tel que "C: \ Program Files \ MyApp". Cette approche nécessite généralement une adhésion de l'informatique.

J'espère que cela aide.

2

Il est vraiment difficile de vous fournir des réponses exactes car les informations critiques sur le programme d'installation côté client ne sont pas explicites. Avez-vous installer les fichiers côté client dans Program Files? Ensuite, vous pouvez rencontrer des problèmes lorsque les utilisateurs sont limités.

Vous ne pensez pas que Local Application Data est un dossier pour déployer l'application, mais Google le fait. Son navigateur Chrome s'installe de cette façon sur Windows, et son processus de mise à jour automatique est même imperceptible (ce qui peut sembler horrible). Alors pourquoi ne pas déployer votre application dans ce dossier pour les utilisateurs restreints?Vous trouverez peut-être plus sur installation de Google Chrome ici,

http://robmensching.com/blog/archive/2008/09/04/Dissecting-the-Google-Chrome-setup.aspx

0

Si vous ne voulez pas donner vos utilisateurs trop de droits, il est possible d'écrire un service Windows, qui se déroulera sur chaque ordinateur sous un compte avec les privilèges appropriés, et qui peut mettre à jour votre application, lorsqu'une nouvelle version est disponible.

2

Voici une solution Open Source que j'ai écrite pour répondre aux besoins spécifiques que nous avions pour les applications WinForms et WPF. L'idée générale est d'avoir la plus grande flexibilité, au plus bas frais généraux possible. Cela devrait vous donner toute la flexibilité dont vous avez besoin pour tout ce que vous avez décrit.

Donc, l'intégration est super facile, et la bibliothèque fait à peu près tout pour vous, y compris les opérations de synchronisation. Il est également hautement flexible, et vous permet de déterminer quelles tâches exécuter et à quelles conditions - vous créez les règles (ou utilisez celles qui existent déjà). Last but not least est le support pour toute source de mises à jour (web, BitTorrent, etc) et tout format de format - tout ce qui n'est pas mis en œuvre, vous pouvez simplement écrire pour vous-même.

Les mises à jour à froid (nécessitant un redémarrage de l'application) sont également prises en charge et effectuées automatiquement, sauf si le remplacement à chaud est spécifié pour la tâche.

Ce boild jusqu'à une DLL, taille de moins de 70kb.

Plus de détails sur http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

code

est à http://github.com/synhershko/NAppUpdate (sous licence sous la licence Apache 2.0)

Je prévois sur l'extension de plus quand je vais un peu plus de temps, mais honnêtement, vous devriez être en mesure de l'améliorer rapidement pour ce qu'il ne supporte pas actuellement.

Questions connexes