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 :

Déploiement d'un composant COM


Sujet :

C#

  1. #1
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut Déploiement d'un composant COM
    Bonjour

    Pour pouvoir utiliser du code managé écris en C# ou vb.net à partir du vb6, j'ai créé un composant COM.

    Mon problème provient de l'outil d'enregistrement regsvcs. Celui-ci se trouve plusieurs fois sur les pc (que ce soit ceux de développement qu'un pc ou j'ai juste installé le runtime vb6 et le FrameWork 4). Ne se trouvant pas dans la variable d'environnement PATH, je me demande comment je peux retrouver cet outil sur le pc ou j'installe mon application sachant qu'il se peut qu'il ne soit pas au même endroit sur tout les pc, et comment être sur que ce soit bien la version fournie avec le FrameWork 4 qui est utilisée.

    Pour le moment je procède comme suit pour l'enregistrement :
    1. Trouver l'emplacement de regsvcs correspondant au FrameWork 4
    2. Ouvril l'invite cmd de windows en mode administrateur et me positionner dans le bon répertoire -> cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    3. Exécuter ma commande regsvcs /appname:comTutoriel D:\Dropbox\Developpements\ComTutoriel\ComTutoriel\bin\Debug\ComTutoriel.dll.

    Bien sur le point 2 et 3 pourrait être regroupé mais il me reste le problème de trouvé l'emplacement de la bonne version à utiliser.

    Merci pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 766
    Points
    766
    Par défaut
    Tu trouves ce chemin à partir de la base de registre.

    Par exemple, pour le Framework 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\InstallPath
    Si jamais c'est seulement le Client Profile qui est installé, alors c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client\InstallPath
    Nous utilisons cette méthode pour enregistrer nos objets COM .net et jusqu'à maintenant nous n'avons pas rencontré de problème.

  3. #3
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Merci pour la réponse rapide ....

    Et qu'utiliser vous pour les installer, vous avez un projet installation je suppose ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 766
    Points
    766
    Par défaut
    Nous avons un programme d'installation, mais pas en .Net

    Nous lançons regasm.exe pour enregistrer la dll (l'objet COM) en ligne de commande.

  5. #5
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Merci pour vos précisions. Je vais voir du coté de la création d'un programme d'installation

  6. #6
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour infosam76

    Tu peux faire une appli console pour enregistrer ton composant sans passer par regsvc.exe en utilsant le sealed class RegistrationHelper ....
    .cs code signature:
    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
     
     
    public sealed class System.EnterpriseServices.RegistrationHelper :
        MarshalByRefObject,
        System.EnterpriseServices.IRegistrationHelper,
        System.EnterpriseServices.Thunk.IThunkInstallation
    {public void InstallAssembly(string assembly, ref String application,
            string partition, ref String tlb,
            System.EnterpriseServices.InstallationFlags installFlags);
     
        public virtual void InstallAssembly(string assembly, ref String application,
            ref String tlb, System.EnterpriseServices.InstallationFlags installFlags);
        public virtual void UninstallAssembly(string assembly, string application);
     
        public void UninstallAssembly(string assembly,
            string application, string partition);
    }
    et voici une appli console qui fait le travail si;
    -l'appli client est installe
    -le composant "FooServicedComp.dll" se trouve dans le repertoire de l'appli client..
    -l'appli console se trouve dans le repertoire de l'appli

    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
     
    using System;
    using System.EnterpriseServices;
     
    namespace RegistrationHelperApp
    {
        class MyRegHelper
        {
            [STAThread]
            static void Main(string[] args)
            {
                 // Register a private, strongly named assembly.
                RegistrationHelper rh = new RegistrationHelper();
                try
                {
                    string comPlusAppName = "NewComPlusApp";
                    string typeLibName = "FooServicedComp.tlb";
     
                     rh.InstallAssembly("FooServicedComp.dll",
                        ref comPlusAppName,
                        ref typeLibName,
                        InstallationFlags.FindOrCreateTargetApplication);
                }
                catch(RegistrationException rhex)
                {
                    Console.WriteLine(rhex.Message);
                }
            }
        }
    }
    Apres faut mettre l'assembly du composant dans le GAC...
    Pour verifier qu'il est bien installe aller dans:
    panneau configuration ->Outils d'administration->Services de composants......

    idem pour la desinstallation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    public virtual void UninstallAssembly(string assembly, string application);
    bon code...........

  7. #7
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Bonjour et merci pour vos réponses.

    J'étudie ici la création d'un setup qui reprendrait l'enregistrement de mon objet COM, mais aussi l'installation de mon application en VB6 et donc la vérification de la présence du runtime VB6 ainsi que du framework 4.0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Développement d'un composant COM
    Par inertia dans le forum C++
    Réponses: 18
    Dernier message: 01/06/2006, 15h21
  2. [ATL] Debuguer un composant COM+ 1.0
    Par glKabuto dans le forum MFC
    Réponses: 8
    Dernier message: 16/05/2006, 19h22
  3. [VB] Problème composants COM Word
    Par Vince dans le forum VBA Word
    Réponses: 5
    Dernier message: 08/12/2005, 10h18
  4. [C#] C# et composant COM
    Par beway dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/11/2004, 08h56
  5. Composant COM et style XP
    Par Reisubar dans le forum Composants VCL
    Réponses: 7
    Dernier message: 10/11/2003, 19h23

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