2011-03-27 1 views
0

So ive a deux addins COM différents, un pour le mot 2k3 et un pour 2k7. Le mot 2k3 fonctionne comme un charme à chaque fois, pas de problèmes etc ... mais maintenant, quand j'ouvre le mot 2k7, les boutons de 2k3 apparaissent dans mon ruban 2k7. Cela arrive encore même après que j'ai désactivé mon addin ou nettoyé mon projet ... j'ai tout essayé, y compris la suppression de toutes les dlls pour mon 2k3 addin mais le problème persiste ...COM Add-in ne disparaît pas dans le mot 2007

des suggestions sur quel est le problème?

acclamations

Répondre

1

Si vous faites un point de la configuration de ces boutons dans un autre modèle que normal.dot, ils automatiquement « aller » lors de l'installation. Il est généralement considéré comme une mauvaise pratique d'apporter des modifications à Normal.dot, mais beaucoup de gens ne se rendent pas compte que si vous définissez la propriété "CustomizationContext" avant de créer vos propres boutons et barres d'outils, c'est précisément ce que vous re faire, en modifiant normal.dot, et ces changements persisteront après que vous avez désinstallé votre addin.

+0

s'applique-t-il également aux compléments COM? – kUr4m4

+0

aussi, comment puis-je résoudre le problème s'il est en effet dans normal.dot? Je l'ai regardé sur les options de mot et je ne montre aucun ajout particulier dedans là ...:/ – kUr4m4

+0

L'addin ne sera pas dans normal.dot, mais si vous ouvrez le fichier dans un éditeur hexadécimal, et parcourez à travers elle, vous devriez voir le menu et les définitions de la barre d'outils, les noms, etc. Le seul moyen de le supprimer est d'utiliser le code de danbystroms ici ou simplement de le normaliser et de le régénérer (ce que je fais habituellement). les clients le font, donc j'ai toujours essayé très fort de ne pas compter sur les mods pour Normal.dot à cause de ça .. – DarinH

0

Vous devez « manuellement » supprimer le bouton dans le cadre de votre processus de désinstallation. Voici le code que j'utilise:

public static void removeWordToolbarButton(
     Microsoft.Office.Interop.Word.Application word) 
    { 
     var commandBar = word.CommandBars["Tools"]; 
     var btn = commandBar.FindControl(
      Microsoft.Office.Core.MsoControlType.msoControlButton, 
      System.Reflection.Missing.Value, 
      "name_of_the_button", 
      System.Reflection.Missing.Value, 
      System.Reflection.Missing.Value) as Microsoft.Office.Core.CommandBarButton; 
     if (btn != null) 
     { 
      btn.Delete(-1); 
      Marshal.ReleaseComObject(btn); 
     } 
     Marshal.ReleaseComObject(commandBar); 
    } 
+0

merci beaucoup danbystrom! Cela aide parce que j'ai réellement des boutons de barre d'outils pour enlever mais j'ai aussi un bouton de barre de menu qui est mis dans mon ruban, ce code devrait fonctionner aussi bien juste? – kUr4m4

+0

Où ce code devrait-il être invoqué? Du ruban? Un cours d'installateur? – Keith

0

Je suppose que le problème repose sur le modèle normal.dot. Essayez d'enregistrer le modèle normal après avoir supprimé les boutons, les barres de commandes, etc. en utilisant:

wordApplication.NormalTemplate.Save(); 
Questions connexes