Je pense que vous avez deux très problèmes distincts:
- Contrôleur/gestionnaire communication
- en place la mise à jour du logiciel du contrôleur
Il serait Soyez utile si vous pouviez décrire plus en détail à quoi ressemblent ces gestionnaires. S'agit-il d'assemblys .NET qui ont des classes implémentant une interface de gestionnaire? Si c'est comme ça, alors je suggère presque d'utiliser MEF pour localiser et charger les gestionnaires et les exécuter. MEF pourrait rendre l'emplacement et le chargement de ces gestionnaires beaucoup plus facile.
Les applications à mise à jour automatique sont toujours un peu délicates. Une façon que j'ai résolu ce problème est d'avoir une application en deux parties. La première partie est une petite application bootstrapper qui sait juste comment démarrer le contrôleur. Essentiellement, c'est le travail du bootstrappeur de localiser l'application du contrôleur et de le lancer. La façon dont j'ai fait cela est d'avoir un répertoire qui contient un sous-répertoire pour chaque nouvelle version de l'application que j'ai déployée. Le programme d'amorçage choisit simplement la version la plus élevée et lance l'application du contrôleur qu'il trouve dans ce répertoire.
structure de répertoire du contrôleur Exemple:
\Programs
\Controller
bootstrapper.exe
\v1.0
controller.exe
\v1.1 <-- Current version
controller.exe
Lorsqu'une mise à jour est appliquée, tout ce qui arrive est un nouveau répertoire « version » est créé dans le répertoire du contrôleur et la mise à jour renvoie un code au contrôleur spécifiant qu'un le redémarrage est requis. Une fois que le contrôleur a terminé son travail, il quitte. Puisque le processus entier a été démarré par le programme d'amorçage (et les blocs d'amorçage lorsqu'il lance le contrôleur), le programme d'amorçage reprend le contrôle lorsque le contrôleur se lance.Le programme d'amorçage exécute à nouveau son processus de démarrage, trouve la nouvelle version du contrôleur et le lance. Le seul attrape ici est qu'il n'est pas facile de mettre à jour le bootstrapper, mais généralement ce ne sera pas quelque chose que vous mettez à jour très souvent car il contient très peu de code.
L'espoir qui aide ou suscite quelques idées.
Les gestionnaires n'existent pas encore mais il semble très probable que ces applications seront autonomes. Nous ne sommes pas responsables de l'écriture de tous les gestionnaires et donc la décision a été prise pour la simplicité. La suggestion de bootstrap est intéressante, en particulier l'utilisation de dossiers de version, ce qui mérite d'être considéré, merci. – Andrew