2010-11-06 7 views
0

dans mon nouveau projet (windows-C# -vs2008) Je veux que l'exécutable puisse se mettre à jour de manière autonome - peut-être à partir d'un serveur réseau Ici Ce que je fais est de télécharger les dlls mises à jour en "stockage isolé" (chacun comme méthodeMise à jour autonome C#

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); 

dll séparées) puis modifier le CurrentDomain_AssemblyResolve() de telle sorte qu'il vérifie tout d'abord la présence de la bibliothèque dans son stockage isolé avant de le charger à partir de l'exécutable. Mais que faire si je veux changer quelque chose dans l'exe principal. [J'ai essayé de créer un projet loader (console ap) à partir duquel il appelle mon programme principal (sortie modifiée en dll), mais cette fois l'assembly resolve event ne se déclenche pas car les dll de référence sont générées sous le dossier bin de new projet de chargeur lors de la compilation] Toute aide serait très apprécié ..

public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) 
     { 
      try 
      { 
       string assemName = new AssemblyName(args.Name).Name; 

       object i_StoreRootDir = i_StorageFile.GetType().GetField 
        ("m_RootDir", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(i_StorageFile); 

       string i_StorePath = CombinePaths(i_StoreRootDir.ToString(), I_STOREDIR, assemName, DLL_EXT); 

       if (File.Exists(i_StorePath)) 
       { 
        return Assembly.LoadFrom(i_StorePath); 
       } 
       else 
       { 
        //load it from resource. 
        return null; 
       } 
      } 
      catch (Exception) 
      { 
       throw; 
      } 

Répondre

1

Vous pouvez jeter un oeil à ClickOnce deployment dans le cadre du cadre. Vous pouvez également commander wyUpdate. Il y a aussi BitsUpdater.

+0

Désolé de mentionner que j'utilise beaucoup de mise à jour de registre et de modification de reg dans mon application et je pense que Clickonce n'est pas une bonne prise. – Anees