2010-10-29 5 views
0

Je souhaite déployer une application sans problème, l'autoupdate étant activé. Cependant, je suis obligé d'utiliser un programme d'installation MSI à diverses fins. Nous allons déployer une application Windows Forms et un ensemble de services Windows.Mise à jour automatique de Semi ClickOnce

J'ai vraiment aimé comment vous pouvez cliquer sur quelques boutons dans l'onglet Publier et tout avoir déployé sur un serveur Web avec .application et fichiers. Donc, je peux maintenant publier les modifications, mais je ne peux pas les récupérer automatiquement. J'essaye d'écrire un autodownloader moi-même.

  1. Comparer les fichiers .application (locaux et distants), < nom assemblyIdentity = version "de ClickOnceAppTest.application" = "1.0.0.5" ... pour une valeur de version si la version locale est pas moins une télécommande puis sur STOP.
  2. Lecture < dependentAssembly dependencyType = "install" codebase = "Fichiers d'application \ ClickOnceAppTest_1_0_0_5 \ ClickOnceAppTest.exe.manifest" ... pour obtenir le chemin d'accès au fichier manifeste.
  3. Pour chaque balise, comme < dépendance> < dependentAssembly dependencyType = "install" allowDelayedBinding = "true" codebase = taille "ClickOnceAppTest.exe" = "26112"> < nom assemblyIdentity = "ClickOnceAppTest" version = "1.0.0.1" ... dans le fichier manifeste, comparer les codes de hachage sous la balise de hachage (< dsig: DigestValue> V1FBG6P353V5CT4JofOCwe0opeA = </dsig: DigestValue>)
  4. Si hash sont différents, télécharger le fichier correspondant dépouillent l'extension .deploy à un chemin temporaire

Maintenant, pour Windows Forms je pourrais écrire quelques AppSt Arter qui va démarrer l'application principale et arrêter l'application principale sur les mises à jour détectées, remplacer tous les fichiers EXE et les fichiers DLL qui sont téléchargés et redémarrer l'application.

Pour le service Windows, je souhaite attendre que le cycle principal soit terminé (cycle déclenché par un temporisateur), puis arrêter le temporisateur et appliquer les mises à jour. Comment?

Cet algorithme très général doit avoir des pièges (mon intuition me dit) dont je ne suis pas conscient et pour cette raison, je publie cette question. Qu'est-ce qui pourrait mal tourner et quand? Pensez-vous que la structure XML restera invariante avec le temps (au moins pour la presicion des tags existants)?

J'ai également downloadeded the .NET Application Updater. C'est juste que je dois former des fichiers XML moi-même et je ne suis pas sûr si cela va permettre de travailler avec les services Windows.

Répondre

0

Je pense, j'ai eu un problème similaire. J'ai déployé un service Windows avec deux écrans Windows. Un écran pour contrôler le démarrage/arrêt du service Windows et l'installer/désinstaller. Un de plus pour le déploiement en utilisant ClickOnce.

J'ai ajouté un service Windows ainsi qu'un écran de configuration dans le projet de déploiement en tant que fichiers de contenu. Lorsque le client déploie un projet ClickOnce, tous ces fichiers seront déployés sur la machine. Étant donné que ClickOnce ne peut pas déployer un service Windows, l'utilisateur doit appeler un écran de configuration et installer/démarrer le service Windows en copiant le service Windows dans un dossier par défaut.

La copie d'un service Windows vers un autre dossier est nécessaire car Clickonce modifie les dossiers de chaque version. L'application déployée sera programmée ultérieurement pour vérifier les mises à jour. Lorsque la dernière version est disponible, il invite le service Windows à s'arrêter et à se mettre à jour et redémarre le service Windows.

Questions connexes