Bonjour,
j'ai une problème assez compliqué.
J'ai une application qui necessite le client Oracle, j'installe ce client (s'il n'extiste pas encore) à partir de code c# dans Pogram.cs, fonction Main avant de faire Application.Run.
Je fais cela car le client ne veut pas devoir installer sur chaque PC lui-même le client Oracle.
Mon installation est simple elle copie les dlls necessaires et met des entrées dans la base de registre (ils ont toujours fait comme ça avec des anciennes versions et ils veulent que ça continu de cette manière).
Bref, je deploie mon application et lors de l'installation, j'ai les etapes suivantes
"Installation Client oracle" (1)
"Arret de l'application" (2) avec Environment.Exit
Puis je relance l'appli et la rebellote il me reinstalle de nouveau le client oracle.
J'ai identifé le problème, en fait il n'arrive pas a charger la DLL.
Si je kill le processus dfsvc.exe dans Gestionnaire de taches ou alors que je redemarre ça marche.
Ma question est comment je peux le forcer a arreter le deploiement. Car ça ne marche pas juste pour l'application en cours de deploiement, si je demarre une autre appli neccessitant le client oracle, elle se connecte correctement.
Ou si quelqu'un à une autre solution ???
voici mon code
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 if (!AdOracleClient.IsClientInstalled()) { if (!AdOracleClient.InstallClient()) { MessageBox.Show("Oracle client könnte nicht installiert werden"); } else { MessageBox.Show("Stop veuillez redemarrer"); } Environment.Exit(1); //Process.GetCurrentProcess().Kill(); } #endregion int vor_id = getVorIdFromArguments(arguments); GlobalContext.Properties["adminMode"] = getAdminModeFromArguments(arguments); try { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmApart(vor_id)); } catch (ApplicationException) { //log.Debug(ae.ToString()); Application.Exit(); }
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 public static bool IsClientInstalled() { try { object obj; obj = AppDomain.CurrentDomain.CreateComInstanceFrom("Oracle.DataAccess.dll", "Oracle.DataAccess.Client.OracleConnection"); obj = null; return true; } catch (Exception) { return false; } }
Partager