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

VSTO .NET Discussion :

[VSTO] Add-ins / Complément Intégration dans Word 2003


Sujet :

VSTO .NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut [VSTO] Add-ins / Complément Intégration dans Word 2003
    Bonjour à tous,

    Je travail en .Net 2.0 et visual studio 2005 sur un projet d'add-in Word en C#.

    J'ai suivi l'excelent tuto de Louis-Guillaume
    http://lgmorand.developpez.com/dotnet/officeaddin/

    En bref, j'ai donc créé un projet Complément partagé en C# pour Word, j'ai referencé Microsoft.Office.Interop.Word v11 (2003 donc)

    j'ai mis ce bou de 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    		public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
    		{
    			applicationObject = application;
    			addInInstance = addInInst;
     
     
                CommandBars oCommandBars;
                CommandBar oStandardBar;
     
     
                // récupère toutes les barres d'outils de l'application
                oCommandBars = (CommandBars)applicationObject.GetType().InvokeMember("CommandBars",
                                 BindingFlags.GetProperty,
                                 null,
                                 applicationObject,
                                 null);
                // récupère la barre d'outils standard
                oStandardBar = oCommandBars["Standard"];
                // Attention, pour Microsoft Access la barre d'outils standard se nomme "Database"
     
     
     
                // Si le bouton n'a pas été supprimé
                try
                {
                    // texte correspondant au "caption" du bouton précédement ajouté
                    MonBouton = (CommandBarButton)oStandardBar.Controls["TestBtn"];
                }
                catch (Exception)
                {
                    object omissing = Missing.Value;
                    MonBouton = (CommandBarButton)oStandardBar.Controls.Add(1, omissing, omissing, omissing, omissing);
                    // Texte du bouton
                    MonBouton.Caption = "TestBtn";
                    // Style du bouton. Ce sont des constantes prédéfinies
                    // msoButtonAutomatic, msoButtonIcon, msoButtonCaption, msoButtonIconAndCaption, 
                    // msoButtonIconAndCaptionBelow, msoButtonIconAndWrapCaption, 
                    // msoButtonIconAndWrapCaptionBelow, ou msoButtonWrapCaption. 
                    MonBouton.Style = MsoButtonStyle.msoButtonCaption;
                    // Les éléments suivants sont facultatifs, mais recommandés.
                    // La propriété Tag vous permet de prendre le contrôle rapidement
                    // et d'aider la société à réseaux multiples à en garder une trace lorsque plusieurs
                    // fenêtres d'application sont visibles. Cette propriété est requise
                    // par certaines applications Office et doit être fournie.
                    MonBouton.Tag = "SPOTag";
                    // La propriété OnAction est facultative, mais recommandée.
                    // Elle doit être définie sur le ProgID du complément pour que,
                    // si le complément n'est pas chargé lorsqu'un utilisateur appuie sur le bouton,
                    // la société à réseaux multiples le charge automatiquement, puis déclenche
                    // l'évènement Click pour le complément à gérer.
                    MonBouton.OnAction = "!<MyCOMAddin.Connect>";
                    MonBouton.Visible = true;
                    // on ajoute une méthode à l'évènement Click de notre bouton
                    MonBouton.Click += new _CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);
                }
     
    		}
    je génere le setup, celui ci s'install bien sur Word 2010 dans l'onglet "Complément"

    Seulement j'ai voulu voir son intégration dans Word 2003 (depuis une machine virtuelle), j'install le setup, tout se passe bien. J'ouvre Word 2003 et là.... je ne sais pas comment faire pour afficher mon Add-in ?

    Je suis trop jeune pour connaitre Word 2003, je ne sais pas ou aller ? Est ce qu'il faut faire quelque chose sur ma solution pour le rendre compatible 2003 ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    bon pour info:
    sur mon poste de Dev je n'ai pas d'office 2003 / ni de PIA 2003...
    Hum...
    Comment faire un add-in compatible 2003/2007/2010 ?

  3. #3
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Salut,
    Office XP et 2003 ne supportent pas les AddIn écris en .Net 2.0 (et supérieur).
    Il faut les patcher pour ajouter ce support.
    Tu peux inclure le patch dans ton setup.
    Plus d'infos ici : http://stackoverflow.com/questions/5.../553886#553886

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Hum... sur mon poste de dev j'ai installé office 2003 et j'ai bien mon add in

    Sur la machine virtuel j'ai installé office 2003 et après l'install MSI de l'addin... je ne vois rien dans Word

    Je soupçonnais un probleme d'enregistrement COM:
    - à la génération VS 2005 enregistre peut etre les composant COM
    - alors que sur la machine virtuelle j'install le MSI (qui ne fait peut etre pas l'enregistrement COM)...

    Mais bon jvais voir ta piste, je te remercie

    je reviens...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    ctxnop
    euhh attend il est ou ce patch ?

    dans ton lien que j'ai lu rapidement ca concerne VS2005 et non office 2003 ??

    Mon VS est à jours...


    jvais manger je reviens

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    j'ai installé vs2005-kb908002-enu-x86 sur ma machine virtuelle et je n'ai toujours pas accès à mon add in

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Bon j'ai essayé d'installé mon MSI/Add in sur une machine virtuelle windows 7 avec office 2007:
    je vois que mon add in est chargé (option/complément/atteindre: il est coché et "chargé au démarage" !)
    Mais je n'ai pas d'onglet "complément" qui s'affiche dans Word 2007 !!!

    C'est vraiment une histoire de fou...
    sur ma machine de dev, ca marche sur 2010 et 2003...
    Ya des COM à enregistrer pour un simple add in ??
    J'ai utiliser le setup project du wizard "complément" de VS....

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Bon pour résumer le problème dans tout ce bazar:
    - J'ai un add in (un bouton dans une barre d'outils personnalisé, voir http://lgmorand.developpez.com/dotnet/officeaddin/ 4. Implémentation avancée)
    - Je génère et j'install le MSI sur mon poste de dev: ca marche directe dans "compléments" dans word 2010, et dans word 2003 je peux y acceder depuis la barre d'outils contextuel
    - sur mes machines virtuelles, j'install simplement le MSI, et je m'attend à avoir une intégration parfaite mais il n'en est rien:
    * sur XP / word office 2003 : je cherche un add in mais y en a pas
    * sur Win7 / word 2007: il dit que c'est chargé au démarage et coché, mais l'onglet "Complément" n'apparait pas !

    Merci

  9. #9
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Citation Envoyé par alavoler Voir le message
    ctxnop
    euhh attend il est ou ce patch ?

    dans ton lien que j'ai lu rapidement ca concerne VS2005 et non office 2003 ??

    Mon VS est à jours...


    jvais manger je reviens
    Moi aussi j'étais partis entre temps ^^'
    En lisant un peu et en suivant les différents liens on tombe sur le correrctif :
    http://www.microsoft.com/downloads/d...a-6a64d6ac4670

    Dont la description est :
    Microsoft a publié une mise à jour pour Microsoft Office Excel 2003 et Microsoft Office Word 2003. Celle-ci résout un problème potentiel risquant d'empêcher le chargement d'une macro complémentaire, d'une balise active ou d'un document dynamique en cas d'utilisation de Microsoft .NET Framework 2.0.
    Et dans la base de connaissance à propos de ce corrrectif (http://support.microsoft.com/kb/907417) on note :
    Remarque Ce correctif n'est pas inclus dans Office 2003 Service Pack 2 ni dans Office 2003 Service Pack 3.
    Sorti de ca, je ne peux pas trop t'aider, les seuls AddIn que j'ai créés son pour Visual Studio 2005, 2008 et 2010. C'est la même base (à savoir VSTO) mais ca ne s'installe pas pareil a priori. Et je n'ai jamais eu à les déployer.

    EDIT : Ah oui, je précise qu'il faut faire gaffe a ton setup, il doit embarquer ou proposer un moyen d'appliquer les patchs correctement.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    ctxnop
    C'est cool déjà de m'avoir répondu

    Bon donc j'ai réinitialisé ma VM / WinXP /Office 2003
    j'ai installé ton patch office2003-KB907417-FullFile-FRA.exe
    j'ai lancé mon install MSI de mon add in
    J'ai démarré word 2003 et j'ai clické droit sur le contextuel ou y a toute les barre d'outils: la mienne n'apparait toujours pas !

    Quelqu'un peut il me dire si il faut enregistrer du COM à un moment donné ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Dans la VM Windows 7 / office 2007:
    Dans Option / Compléments:
    "Compléments d'applications actifs" -> il y a bien mon Add in !!!
    il a un statut "chargé au démarrage" donc pas d'erreur !!

    et pourtant l'onglet "Complément" n'apparait pas, donc je ne peux pas m'en servir malgré le fait qu'il soit actif ! (j'ai aussi vérifié les restrictions / sécu je ne vois rien d'anormal, c'est une install par defaut)


    grrrr....

    EDIT:
    Plus d'info sur la partie 2007 sur ce post:
    http://www.developpez.net/forums/d97...t-complements/

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Bon peut etre que le souci vient du fait que la VM office 2007 ne reference pas les DLL Office 2003 (alors que sur mon post de dev j'ai 2003 et 2007)...

    voila 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
            public Connect()
            {
                MessageBox.Show("Connect");
            }
     
            public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
            {
                try
                {
                MessageBox.Show("OnConnection");
                applicationObject = application;
                addInInstance = addInInst;
                    MessageBox.Show("Start");
                    CommandBarButton MonBouton;
                    CommandBarComboBox Macombo;
                    CommandBars oCommandBars; // Collection des commandbars de l'application hôte
                    CommandBar oStandardBar;  // Notre barre d'outils
                    object omissing = Missing.Value;
     
                    oCommandBars = (CommandBars)applicationObject.GetType().InvokeMember("CommandBars",
                                                                              BindingFlags.GetProperty,
                                                                              null,
                                                                              applicationObject,
                                                                              null);
                    oStandardBar = oCommandBars.Add("Ma barre d'outils", Microsoft.Office.Core.MsoBarPosition.msoBarTop, omissing, true);
                    oStandardBar.Visible = true; // rend la barre d'outils visible
                    MonBouton = (CommandBarButton)oStandardBar.Controls.Add(1, omissing, omissing, omissing, omissing);
                    MonBouton.Caption = "Texte affiché";
                    MonBouton.Style = MsoButtonStyle.msoButtonCaption;
                    MonBouton.Tag = "Coloration syntaxique du code";
                    MonBouton.OnAction = "!<MyCOMAddin.Connect>";
                    MonBouton.Visible = true;
                    MonBouton.Click += new _CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);
                    MessageBox.Show("Finish");
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                }
     
            }
     
    		private void MyButton_Click(CommandBarButton cmdBarbutton, ref bool cancel)
            {
                MessageBox.Show("Click Coucou2");
            }
    Je remarque que j'ai bien un msgBox "Connect" donc il passe bien dans le constructeur, mais étrangement la msgBox OnConnection ne s'affiche jamais ! (à partir du moment ou je met le reste du code)...

    Donc peut etre un problème de chargement de DLL ???

    Comment faire pour rendre mon add in compatible 2003 / 2007 / 2010 ?
    Moi j'ai simplement référencé les DLL v11 (office 2003)...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Bon je pense que c'est un problème de dépendance !

    Si quelqu'un peut dire comment procéder pour faire une install compatible office 2003 / 2007 je suis preneur !

    Moi je reference :
    Extensibility 7.0.3300.0
    Microsoft.Office.Core 2.3.0.0
    Microsoft.Office.Interop.Word 11.0.0.0

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Bon ok avec reflector mon add in reference 2 office.dll avec meme publicToken:
    // Assembly Reference office


    Version: 14.0.0.0
    Name: office, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c

    // Assembly Reference office


    Version: 11.0.0.0
    Name: office, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c
    Non présent sur le poste .... vu que c est 2007

  15. #15
    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 441
    Points
    4 441
    Par défaut DEPLOYER L'ADD-IN WORD 2003
    bonjour à lavoler,tu as un probleme d'autorisation execution d'un assembly.
    pour qu'un un assembly de type add-in office soit autorise a s'executer sur une application office deskop microsoft a prevu un niveau de confiance total(full trust) pour une application desktop pour proteger l'utilsateur.
    pour cela l'assembly doit inclure ceci:
    - signature
    - assemblyName(nom d'assembly)
    - solutionCodeGroupName(un codeGroupenName de solution)
    - solutionCodeGroupDescription(code descriptionde solution)
    - autorisation : allUsers=[ALLUSERS]
    donc :
    1/signe ton assembly pour generer une signature chiffre

    2/procure toi les 2 projets source SetSecurity et UpdateManifeste en
    c sharp de microsoft et ajoute une reference a ces projet dans ton addin .

    3/dans le projet setup cree automatiquement tu dois dans faire:
    pre-requis->cocher
    netframework 2.0
    windows msi 3.1
    pia office 2003
    pia office 2007

    3/projet setup->conditions de lancemement

    pave Confi.Ordinateur Cible->ajoute condition lancement de registre
    - renomme "Recherche de RegistryEntry1" en
    "Search for VSTO 2005 SE Runtime"
    dans sa fenetre proprietes tu mets
    proprietes :VSTORTVERSION
    regkey:Software\Microsoft\vsto runtime Setup\v2.0.50727
    root:vsdrrHKLM
    value:Update
    ->ajout condition condition lancement win installer
    - renomme "Recherche du composant1" en
    "Search for VSTO Language Pack"
    fenetre proprietes tu changes
    compenentID:{2E3A394E-C9BD-40C3-9990-BA7AF7C8B4AF}proprerty:COMPONENTEXISTS_VSTOLP
    ( le progID du langage pack English par defaut).

    pave Conditions de Lancement
    ----------------------------
    .NET Framework (attention vs 2008 met par defaut 3.5.21022)
    fenetre proprietes tu mets:
    version: 2.0.50727

    Rajoute 2 autres conditions de lancement a cause des 2 rajouts dans
    config.ordinateur cible.

    - renomme "Condition1" en "Display message if the Visual Studio 2005 Tools for Office Language Pack is not installed"
    fenetre proprietes tu mets:
    condtion:COMPONENTEXISTS_VSTOLP
    url :vide
    message:The Visual Studio 2005 Tools for Office Language Pack is not
    installed. Please run Setup.exe(sans guillement)
    - renomme "Condition2" en "Display message if the Visual Studio 2005 Tools for Office SE Runtime is not installed"
    fenetre proprietes tu mets:
    condtion:VSTORTVERSION >= "#3"
    url :vide
    message:The Visual Studio 2005 Tools for Office SE Runtime is not installed. Please run Setup.exe(sans guillement)

    pave Actions Personnalisees
    ----------------------
    ->ajouter une action personalise->dossier application -> Sortie principale de SetSecurity (Actif) ->ok
    INSTALLER
    fenetre proprietes de SetSecurity tu mets:
    CustumAction :/assemblyName="NomdeTonAssembly.dll" /targetDir="[TARGETDIR]\" /solutionCodeGroupName="ALAVOLER.nomTonAssembly" /solutionCodeGroupDescription="Code group for NomdeTonAssembly " /assemblyCodeGroupName="NomdeTonAssembly" /assemblyCodeGroupDescription="Code group for NomdeTonAssembly" /allUsers=[ALLUSERS]

    VALIDER
    fenetre proprietes de SetSecurity tu mets:
    il n 'a rien à mettre.

    RESTAURER
    fenetre proprietes de SetSecurity tu mets:
    CustumAction : /solutionCodeGroupName="ALAVOLER.nomTonAssembly"

    DESINSTALLER
    fenetre proprietes de SetSecurity tu mets:
    CustumAction : /solutionCodeGroupName="ALAVOLER.nomTonAssembly"

    Exemple:
    Ton addin par exemple c'est "Rubrique.dll",et le groupe utilisateus c'est ALAVOLER alors on obtient ce qui suit:
    INSTALLER
    CustumAction :/assemblyName="Rubrique.dll" /targetDir="[TARGETDIR]\" /solutionCodeGroupName="ALAVOLER.Rubrique" /solutionCodeGroupDescription="Code group for Rubrique " /assemblyCodeGroupName="Rubrique" /assemblyCodeGroupDescription="Code group for Rubrique" /allUsers=[ALLUSERS]

    je dis ceci pour CustumAction dans le pave INSTALLER
    Car pour les paves :
    VALIDER il n' y a rien mettre.
    RESTAURER
    CustumAction :/solutionCodeGroupName="ALAVOLER.Rubrique"
    DESINSTALLER
    CustumAction :/solutionCodeGroupName="ALAVOLER.Rubrique"

    piece jointe les 2 projet source SetSecurity et UpdateManifeste.

    Lit cet article d'Andrew Whitechapel d'ou j'ai pris les informations ci-dessus:

    Deploying Visual Studio 2005 Tools for the Office System SE Solutions Using Windows Installer (Part 1 of 2)http://msdn.microsoft.com/en-us/libr...ffice.12).aspx

Discussions similaires

  1. repères de marges dans Word 2003
    Par hukom1 dans le forum Word
    Réponses: 4
    Dernier message: 25/08/2009, 15h42
  2. [WD-2003] animation dans word 2003 ?
    Par sebpro dans le forum Word
    Réponses: 2
    Dernier message: 16/08/2009, 20h28
  3. [VSTO] Comment insérer du texte dans Word ?
    Par le_sonic dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/04/2008, 20h07
  4. Réponses: 2
    Dernier message: 05/03/2008, 06h40
  5. rechercher remplacer dans word 2003
    Par MALREGG dans le forum Word
    Réponses: 8
    Dernier message: 27/06/2007, 13h26

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