2009-07-15 11 views
0

J'ai une application de serveur client WCF et crée des projets d'installation msi pour les deux projets. Server est un service Windows qui héberge le service WCF, le client est une application WPF. Maintenant, j'ai besoin d'automatiser le mécanisme de mise à jour du client. C'est à l'ouverture du client il faut vérifier s'il y a des mises à jour dans le serveur, si oui téléchargements et installation puis exécution. Devrais-je utiliser le clic une fois le déploiement? Existe-t-il des mécanismes standard pour le faire ou je devrais le mettre en œuvre manuellement? Quelles autres suggestions?
EDIT
En enquêtant sur les limites de clic une fois, grâce aux chers intervenants, j'ai trouvé que le clic une fois n'est pas sutuble pour notre application, Y at-il un autre mécanisme? Quelles sont les meilleures pratiques pour le faire avec le service web ..?
Merci beaucoupMise à jour de déploiement et d'automatisation

+0

Vous voudrez peut-être consulter WiX (http://wix.sourceforge.net). Il vous aide à créer vos fichiers .msi. J'ai l'impression de me souvenir de quelque chose avec WiX (je pense que ça s'appelait ClickThrough) pour aider à faire face aux mises à jour. Je ne sais pas si ça a été complètement développé. – codeConcussion

+0

Merci whatknott je vais le vérifier –

Répondre

2

ClickOnce est un outil formidable. Cependant, vous devez savoir qu'il a quelques limitations avant de décider. Il ne vous permet pas de choisir l'emplacement d'installation des applications.

  • Il les installe dans un endroit obfusqué sous le profil de l'utilisateur. Oui, cela signifie que les applications ClickOnce sont téléchargées et installées par utilisateur, et non par ordinateur.
  • Il conserve simplement les fichiers sur la machine de l'utilisateur en synchronisation avec les fichiers sur un serveur, rien de plus. Vous ne pouvez pas installer de fichiers msi tiers, enregistrer des DLL, installer des assemblys sur le GAC, etc.

Il existe d'autres mises en garde, mais ces deux sont les plus importantes pour la plupart des gens. Si vous pouvez contourner ces erreurs, alors ClickOnce peut être une option pour vous. En l'essayant, je voudrais simplement publier votre application à partir de Visual Studio et utiliser un auto-certificat.Si vous décidez d'utiliser ClickOnce, vous voudrez probablement utiliser MSBuild ou MageUI pour générer vos déploiements et vous voudrez peut-être envisager d'acheter un certificat de signature de code auprès d'une autorité de certification (comme Verisign).

Modifier
Je voulais juste répondre au commentaire de @Richard Dunlap. Il a raison, vous pouvez spécifier des pré-requis dans Visual Studio et il va créer un bootstrapper pour vous. Le bootstrapper évite à l'utilisateur d'avoir à télécharger vos prereqs individuellement, les exécuter dans l'ordre, etc.

Cependant, cela est en grande partie juste une fonctionnalité qui fournit VS et est, OMI, distincte de ClickOnce. ClickOnce se limite à vérifier qu'un assembly existe dans le GAC et que l'installation échoue si ce n'est pas le cas. Il n'y a vraiment aucun lien entre votre programme d'amorçage et votre installation ClickOnce. Vous devez dire à l'utilisateur: «Si vous n'avez pas de produit x, y ou z, exécutez ce programme d'amorçage avant d'essayer d'installer mon application». Il n'y a rien que ClickOnce peut faire pour vérifier la présence d'un produit COM tiers et forcer l'utilisateur à l'installer avant d'exécuter son application.

+0

Le deuxième commentaire n'est pas strictement vrai - si vous avez des pré-requis pour l'application (par exemple une version particulière de .NET), alors VS va construire un exécutable bootstrapper qui sera télécharger et exécuter avant l'installation de votre application. Maintenant, si ces conditions préalables * changent *, les choses ne sont pas si simples - et contrairement à l'installation ClickOnce elle-même, le bootstrapper nécessite souvent des privilèges administratifs. –

+0

En examinant une fois les limitations que vous et Richard dit, j'ai trouvé que le clic une fois n'est pas sutuble pour notre application, Y at-il un autre mécanisme? Quelles sont les meilleures pratiques pour le faire avec le service web ... –

+0

@Richard Dunlap - merci pour le commentaire. Vous soulevez un bon point et j'ai édité ma réponse pour clarifier. – codeConcussion

1

Cela ressemble à une utilisation directe de ClickOnce. Si vous souhaitez utiliser les mises à jour ClickOnce automatiques ou faire des mises à jour de programmation dépend des facteurs suivants:

  1. Si vous définissez ClickOnce pour vérifier les mises à jour avant de commencer, vous obtenez d'abord obtenir une boîte Microsoft générique informant l'utilisateur que l'application est en train de vérifier les mises à jour. Si vous êtes d'accord avec ça, génial. Si vous souhaitez que l'utilisateur voit votre écran de démarrage en premier, ou si vous avez d'autres activités de démarrage que vous souhaitez exécuter parallèlement à la vérification d'une mise à jour, vous pouvez choisir une autre option. Si vous définissez ClickOnce pour vérifier les mises à jour après le démarrage, vous allez directement dans l'application, mais les mises à jour ne seront pas déployées jusqu'au prochain démarrage de l'application; vous pouvez bien sûr informer l'utilisateur qu'une version mise à jour est maintenant disponible et lui donner une option de redémarrage. Si l'utilisateur peut utiliser l'ancienne version une dernière fois, cela fonctionne bien. Si ces deux options vous causent des problèmes, vous pouvez utiliser l'API pour effectuer des mises à jour programmatiques. C'est ce que nous avons choisi de faire - puisque notre application ClickOnce est un client de couche de présentation communiquant avec les services Web, il est préférable que nos clients exécutent toujours la dernière version du logiciel. Cependant, nous souhaitons utiliser l'heure pendant laquelle l'application vérifie une mise à jour pour effectuer d'autres tâches (comme la vérification de la connectivité aux services Web) et nous souhaitons que les utilisateurs puissent voir notre logo et le nom de l'entreprise pendant qu'ils attendent. :-)

Assez pour commencer?

+0

En enquêtant cliquez fois sur les limitations que vous et Whatknott dire, j'ai trouvé que le clic une fois n'est pas sutuble pour notre application, Y at-il un autre mécanisme? Ce sont les meilleures pratiques pour ce faire avec le service web ... –

1

Ce blog (http://coffeedrivendevelopment.blogspot.com/2008/09/clickonce-deployment-or-not.html) décrit sa décision de ne pas utiliser ClickOnce, et un mécanisme simple pour écrire votre propre auto-mise à jour programme. Il utilise le contrôle de source pour vérifier une nouvelle version, mais vous pouvez théoriquement vérifier l'emplacement auquel vous publiez votre nouvelle version, avec un autre indicateur de version (fichier texte, base de données, appel de service Web, etc.).