Bonjour tous le monde ;
je cherche une idée pour permettre à une application de mettre à jour ses dlls ;
- décharger une DLL pour la mettre a jour. via la même application que l'utilise
Bonjour tous le monde ;
je cherche une idée pour permettre à une application de mettre à jour ses dlls ;
- décharger une DLL pour la mettre a jour. via la même application que l'utilise
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
On ne peut pas décharger une DLL, tout simplement parce que si elle est chargée, c'est probablement qu'elle est utilisée. Le seul cas où tu peux le faire, c'est quand elle est chargée dans un AppDomain séparé, et dans ce cas tu peux décharger l'AppDomain. C'est d'ailleurs comme ça que fonctionnent (certains) systèmes de plugin.
Si redémarrer l'appli ne pose pas de problème, la façon la plus simple est sans doute de faire une sorte de bootstrapper : tu lances le bootstrapper, tu arrêtes l'appli, le bootstrapper installe les nouvelles DLL et relance l'appli.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Regarde Shadow Copy. D'après ce que j'ai compris il faut quand même redémarrer l'application pour que la mise à jour soit effective
http://msdn.microsoft.com/en-us/library/ms404279.aspx
Ah oui, j'avais oublié ça... cela dit, ça règle pas vraiment le problème, du moins pas facilement : tu ne peux pas (à ma connaissance) configurer l'AppDomain de démarrage pour activer Shadow Copy, tu ne peux le faire que pour un nouvel AppDomain. Donc il faudrait que le programme, au démarrage, crée un nouvel AppDomain dans lequel l'application se lance. Bon, c'est pas hyper complexe, mais c'est pas très évident non plus...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Merci
est ce qu il est faisable pour une application windows mobile!!!????
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
j'ai trouvé un code extraire de codeProjet
mais en Windowns mobile le "AppDomainSetup " n'est pas inclus dans framework compact
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 using System; using System.IO; namespace Loader { static class Program { [LoaderOptimization(LoaderOptimization.MultiDomainHost)] [STAThread] static void Main() { /* Enable shadow copying */ // Get the startup path. Both assemblies (Loader and // MyApplication) reside in the same directory: string startupPath = Path.GetDirectoryName( System.Reflection.Assembly .GetExecutingAssembly().Location); // cache path = directory where the assemblies get // (shadow) copied: string cachePath = Path.Combine( startupPath, "__cache"); string configFile = Path.Combine( startupPath, "MyApplication.exe.config"); string assembly = Path.Combine( startupPath, "MyApplication.exe"); // Create the setup for the new domain: AppDomainSetup setup = new AppDomainSetup(); setup.ApplicationName = "MyApplication"; setup.ShadowCopyFiles = "true"; // note: it isn't a bool setup.CachePath = cachePath; setup.ConfigurationFile = configFile; // Create the application domain. The evidence of this // running assembly is used for the new domain: AppDomain domain = AppDomain.CreateDomain( "MyApplication", AppDomain.CurrentDomain.Evidence, setup); // Start MyApplication by executing the assembly: domain.ExecuteAssembly(assembly); // After the MyApplication has finished clean up: AppDomain.Unload(domain); Directory.Delete(cachePath, true); } } }
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Bonjour, si tu es sur une application windows mobile, je penses que la page suivante peut t’intéresser :
http://msdn.microsoft.com/en-us/library/aa446487.aspx
j'ignore en revanche jusqu'à quelle version c'est valide...
Si c'est une application mobile, tu devrais pouvoir récupérer le dernier numéro de version et si l'utilisateur est une version en dessous, tu dois pouvoir forcer l'appel au market / marketplace / appstore et ainsi bénéficier des possibilités de mise à jour de l'éditeur de l'os mobile non ?
de plus, d'après cet article : http://www.smartphonefrance.info/actu.asp?ID=5316
le marketplace est disponible sous windows mobile 6.x
Rebonjour tous le monde ;
j'ai modifié le code pour que puisse l'utiliser dans mon application Windows service.
pour les applications Windows service comment poutons faire pour avoir un starter
Je me dit que il faut que je que mon application windows soit comme une scolite genr il fait que demarrer un class par une methode Start
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 static class Program { static string DomainName = "UpdateAssembly"; [LoaderOptimization(LoaderOptimization.MultiDomainHost)] [STAThread] static void Main() { //string Appexe=WindowsServiceUpdateCenter.ServiceMAJ. if (AppDomain.CurrentDomain.FriendlyName != DomainName) { /* Enable shadow copying */ // Get the startup path. Both assemblies (Loader and // MyApplication) reside in the same directory: string startupPath = Path.GetDirectoryName( System.Reflection.Assembly .GetExecutingAssembly().Location); string AppExe = Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().Location); // cache path = directory where the assemblies get // (shadow) copied: string cachePath = Path.Combine( startupPath, "__cache"); string configFile = Path.Combine( startupPath, "Debug.exe.config"); string assembly = Path.Combine( startupPath, AppExe); // Create the setup for the new domain: AppDomainSetup setup = new AppDomainSetup(); setup.ApplicationName = "UpdateAssembly"; setup.ShadowCopyFiles = "true"; // note: it isn't a bool setup.CachePath = cachePath; setup.ConfigurationFile = configFile; // Create the application domain. The evidence of this // running assembly is used for the new domain: AppDomain domain = AppDomain.CreateDomain( DomainName, AppDomain.CurrentDomain.Evidence, setup); // Start MyApplication by executing the assembly: domain.ExecuteAssembly(assembly); // After the MyApplication has finished clean up: AppDomain.Unload(domain); Directory.Delete(cachePath, true); } else { string Appdomain = AppDomain.CurrentDomain.FriendlyName; WindowsServiceUpdateCenter.ServiceMAJ ServiceWindows = new WindowsServiceUpdateCenter.ServiceMAJ(); ServiceWindows.start(new string[0]); Console.ReadLine(); } } }
et je limite mes update seulement sur les DLLs ????
est ce que c'est une bonne idée
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager