IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problème de chargement DLL pendant deploiement


Sujet :

C#

  1. #1
    Membre du Club Avatar de schnourf
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut Problème de chargement DLL pendant deploiement
    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;
                }
            }

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Les fichiers que tu installes, il sont où ? Dans le même répertoire que ton application ? Car en faisant:

    CreateComInstanceFrom(....)

    Il cherche à charger la DLL depuis le chemin que tu lui indiques donc dans ton cas, le répertoire de ton application

  3. #3
    Membre du Club Avatar de schnourf
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Ben en fait Oracle.DataAccess.Client est dans le repertoire de l'application, mais le client oracle je l'ai installé dans un autre repertoire, comme par exemple c:\Oracle\.

    Autre chose si je redemarre le PC, ça fonctionne

  4. #4
    Membre du Club Avatar de schnourf
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    En fait je viens de trouver (je pense) pourquoi ça ne marche pas.
    A la fin de mon install de lance un fichier bat qui me modifie la variable d'environnement Path et Oracle_Home. Seulement lors du redemarrage de l'appli ces valeurs ne sont pas prises en compte, mais elles sont biens la.
    Lorsque je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environment.SetEnvironmentVariable("Path",path);
    à partir de l'application ça ne fonctionne pas non plus.

    Si je regarde dans les processus qui tourne, il y a un dfsvc.exe et si je l'arrete et que je relance mon appli, là ca fonctionne. C'est quand meme bizarre.

    Maitenant faut que je trouve une solution pour que mon appli me prenne en compte mes variables d'environnement sans devoir redemarrer mon pc ou alors killer le dfsvc.exe.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Et c'est quoi ce process dfsvc.exe ?


    Edit: http://www.google.com/search?hl=fr&q=dfsvc.exe&lr=

    Tu va me faire le plaisir de passer ton PC à l'antivirus

  6. #6
    Membre du Club Avatar de schnourf
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Je cite

    Launching ClickOnce applications

    Dfsvc.exe checks for updates and drops out after 15 minutes
    http://209.85.135.104/search?q=cache...r&ct=clnk&cd=6

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Effectivement, c'est aussi lié à CLickOnce Pas très cool le quiproquo

    Ton appli est déployée via ClickOnce ?

  8. #8
    Membre du Club Avatar de schnourf
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Oui, via clickonce.

    Pour l'instant j'ai mis un message à la fin de moin install disant qu'il faut redemarrer le pc en attendant de trouver une autre solution.

  9. #9
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Oui car là, je ne sais pas trop

  10. #10
    Membre du Club Avatar de schnourf
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Tant pis c'est pas grave, si jamais je trouve comment faire, je mettrais la réponse !!!

Discussions similaires

  1. [Compiler] Problème de chargement DLL
    Par AurelienAA dans le forum MATLAB
    Réponses: 3
    Dernier message: 04/06/2013, 21h24
  2. Problème sécurité chargement DLL
    Par probordelais dans le forum Applets
    Réponses: 1
    Dernier message: 19/10/2011, 17h48
  3. Problème de chargement dll crt
    Par fat52 dans le forum Visual C++
    Réponses: 2
    Dernier message: 20/08/2010, 09h44
  4. Problème de chargement DLL
    Par Balthos dans le forum C++
    Réponses: 7
    Dernier message: 21/11/2006, 16h18
  5. problème de chargement dll
    Par tophque dans le forum MFC
    Réponses: 8
    Dernier message: 18/11/2005, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo