Bonjour/Bonsoir à tous,
Voila je cherches actuellement à récupérer le répertoire d'installation choisit par l'utilisateur pendant l'installation d'un programme, et ce dans la méthode Install d'une classe Installer.
Ceci afin de modifier le fichier app.config lors de l'installation.
Voici le code de la méthode Install :
Comme vous pouvez le voir, j'ai réussi à quand même le récupérer mais je ne trouves cela pas très propre :
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 public override void Install(System.Collections.IDictionary stateSaver) { base.Install(stateSaver); try { string serveur = Context.Parameters["Serveur"]; string bd = Context.Parameters["BD"]; string assemblypath = Context.Parameters["assemblypath"]; string appConfigPath = assemblypath + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(appConfigPath); XmlNode configuration = null; foreach (XmlNode node in doc.ChildNodes) if (node.Name == "configuration") configuration = node; if (configuration != null) { XmlNode settingNode = null; XmlNode ApplicationsettingNode = null; XmlNode connectionStringsNode = null; foreach (XmlNode node in configuration.ChildNodes) { if (node.Name == "userSettings") settingNode = node; else if (node.Name == "applicationSettings") ApplicationsettingNode = node; else if (node.Name == "connectionStrings") connectionStringsNode = node; } if (settingNode != null) { XmlNode CACPropertiesNode = null; CACPropertiesNode = settingNode.ChildNodes.Item(0); if (CACPropertiesNode != null) { foreach (XmlNode node in CACPropertiesNode.ChildNodes) { if (node.Name == "setting") { if (node.Attributes["name"].Value == "ServeurSQL") { XmlNode ServeurSQLNode = node.FirstChild; XmlNode ServeurSQLValue = ServeurSQLNode.FirstChild; ServeurSQLValue.Value = serveur; } if (node.Attributes["name"].Value == "BD") { XmlNode BDNode = node.FirstChild; XmlNode BDValue = BDNode.FirstChild; BDValue.Value = bd; } } } } } if (ApplicationsettingNode != null) { XmlNode CACPropertiesNode = null; CACPropertiesNode = ApplicationsettingNode.ChildNodes.Item(0); if (CACPropertiesNode != null) { foreach (XmlNode node in CACPropertiesNode.ChildNodes) { if (node.Name == "setting") { if (node.Attributes["name"].Value == "RepertoireLicence") { XmlNode RepertoireLicenceNode = node.FirstChild; XmlNode RepertoireLicenceValue = RepertoireLicenceNode.FirstChild; AssemblyInstaller ass = (AssemblyInstaller)this.Parent; RepertoireLicenceValue.Value = assemblypath.Replace(ass.Assembly.ManifestModule.Name, ""); } } } } } if (connectionStringsNode != null) { XmlNode ConnectNode = null; ConnectNode = connectionStringsNode.ChildNodes.Item(0); if (ConnectNode.Name == "add") { ConnectNode.Attributes["connectionString"].Value = "Data Source=" + serveur + ";Initial Catalog=" + bd + ";Integrated Security=True"; } } doc.Save(appConfigPath); } } catch (Exception e) { } finally { }
Connaissez vous un moyen de le récupérer plus proprement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 string assemblypath = Context.Parameters["assemblypath"]; AssemblyInstaller ass = (AssemblyInstaller)this.Parent; RepertoireLicenceValue.Value = assemblypath.Replace(ass.Assembly.ManifestModule.Name, "");
Merci d'avance !
Partager