Blogroll
Blogfever
AdSense

Wer suched der findet. Bei mir hat es jetzt sehr, sehr lange gedauert.

Ich habe ein Office XP Add-in das auf diversen Systemen mit verschiedenen Konfigurationen installiert werden muss. Ein Add-in für Office XP/2002 muss die Schnittstelle Extensibility.IDTExtensibility2 implementieren. Diese ist in der Extensibilty.dll definiert.

Auf einem XP mit SP2 und Office XP/2002 ohne SP ist die DLL aber nicht registriert, dass heisst nicht im GAC.

Auf dem Entwicklungsclient habe ich die DLL natürlich. Also, ich nehme die dll, kopiere sie auf das Zielsystem und versuche das Teil mit RegAsm.exe zu registrieren. Das führt zu einer Fehlermeldung in dieser form.

RegAsm : error RA0000 : Could not load file or assembly 'Extensibility, Version= 7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of

Das Teil will einfach nicht in den GAC.

Wie bin ich nun vorgegangen um das Add-in auf einem frisch aufgesetzten System an den Start zu bringen.

  1. Man mache ein Setup. Das Setup mache ich NUR weil ich nicht weiss was alles in die Registry muss.
    Die Primäre Ausgabe wird bei Register auf vsdrpCOM gestellt.
    image
  2. Bei den Abhängigkeiten genau das selbe. Wenn ich die Office XP/2002 PIA Abhängigkeiten aus dem Setup ausschliesse, und sie deshalb nicht registriert werden, läuft das Add-in nicht mehr. Aber eigentlich müssten die Office XP/2002 PIA’s ja schon bei der Installation der Office XP/2002 PIA’s registriert worden sein.
    image
  3. Wenn man schon dabei ist, dann kann man auch gleich noch drei Registry Key importieren. Für jedes Office Programm das ein Add-in hat ein Schlüssel.

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins\namespace.namespace]
    "Description"="Bschreibung"
    "FriendlyName"="Angezeigter Name des AddIns im Office"
    "LoadBehavior"=dword:00000003

    Die rot markierten Textteile müssen dann noch passend ersetzt werden.

  4. Das Add-in hat einen sehr einfachen Code.
  5. using System;
    using System.Text;
    using System.Reflection;
    using Extensibility;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    
    namespace LAG.WordPlus.OfficeAddIns.Word2002
    {
    	public class Word2002 : Object, Extensibility.IDTExtensibility2
    	{
    		#region IDTExtensibility2 Member
    
    		public void OnAddInsUpdate(ref Array custom)
    		{
    		}
    
    		public void OnBeginShutdown(ref Array custom)
    		{
    
    		}
    
    		public void OnConnection(object Application, ext_ConnectMode ConnectMode, object AddInInst, ref Array custom)
    		{
    			MessageBox.Show("OnConnection -- Hallo :-)");
    		}
    
    		public void OnDisconnection(ext_DisconnectMode RemoveMode, ref Array custom)
    		{
    			MessageBox.Show("OnDisconnection -- ByBy :-)");
    		}
    
    		public void OnStartupComplete(ref Array custom)
    		{
    			MessageBox.Show("OnStartupComplete -- TippTopp :-)");
    		}
    		#endregion
    	}
    }
  6. Dann besorgt man sich folgenden VS2005-KB908002-ENU-x86.EXE fix. Die Thematik des KB interessiert nicht wirklich. Dort drin gibt es eine ganz bestimmtes MSI Packet.
  7. Man führt die EXE aus. Im Ordner C:\Programme\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\KB908002 findet man nun die Datei extensibilityMSM.msi. Und die ist für dieses Problem Gold wert. Ich habe leider keinen anderen Weg gefunden wie man an das MSI kommt.
  8. Auf dem Zielsystem führt man nun das extensibilityMSM.msi aus und anschliessend noch das eigene Setup. 

Danach müsste ein Dialog erscheinen der etwa so aussieht.

image

Es kann aber noch 1000 andere Gründe geben.

- Sind die nötigen .NET Versionen installiert?
- Sind die Office CP/2002 PIA’s installiert?

Jedenfalls habe ich jetzt endlich einen Weg gefunden wie ich das Add-in lauffähig bringe.

Abgelegt in: CSharp | VSTO | Office
Bookmarks: Mister Wong | Yigg | Wikio | Digg | Linkarena | Webnews | Alltagz | Addthis
Actions: Permalink

VSTO – Probleme mit Zeilenumbrüchen

18 November 2008 @ 13:17 Uhr by Roland Schumacher | Comments [0]

Es kann durchaus sein, dass in einer Anwendung (WordPlus) ein solcher Dialog auftaucht.

image

Dargestellt werden die eingegebenen Daten so:

image

Hier wird also ein Zeilenumbruch eingefügt. Das macht man in der Regel mit Environment.NewLine;.

Diese Adresse wird jetzt dem Word oder Excel übergeben. Das kann dann so aussehen.

image

Was mich jetzt aber am meisten erstaunt ist die Tatsache, dass es bei einem DOCPROPERTY richtig aussieht und bei einer DOCVARIABLE nicht. Dort gibt es für den Zeilenumbruch ganz spezielle Sonderzeichen.

image

Das selbe kenne ich noch von gewissen Feldern im Excel. Wenn das auftritt, dann macht man einfach ein Replace("\r\n", "\r"); auf den String den man nutzen will. Und schon sieht es wieder normal aus.

image

Was Microsoft hier wohl überlegt hat?

Abgelegt in: CSharp | VSTO
Bookmarks: Mister Wong | Yigg | Wikio | Digg | Linkarena | Webnews | Alltagz | Addthis
Actions: Permalink

Wo bleibt heute der SPAM

12 November 2008 @ 19:58 Uhr by Roland Schumacher | Comments [4]

Das Erste was ich am Abend an meinem PC macht ist natürlich die Mails runterladen. Ich drücke F9 und gehe dann in den FF um die üblichen Seiten durch zu arbeiten.

Als ich dann zurück ins Outlook kam sah etwa einfach nicht wie gewohnt aus. Ich hatte irgend wie zu wenig Mails. Es war schnell klar wo sie fehlten. Ich hatte nur 1 (eins) SPAM Mails. Ein einziges. Das gab es schon seit Jahren nicht mehr.

Das war dann ein doch sehr schönes Erlebnis, wenn man das so sagen / schreiben darf. :-)

Beim lesen heise online war dann klar an was das liegen könnte.

US-Provider ziehen Spam-Schleuder den Stecker

Hoffentlich bleibt das so.

Tags:
Abgelegt in: News
Bookmarks: Mister Wong | Yigg | Wikio | Digg | Linkarena | Webnews | Alltagz | Addthis
Actions: Permalink

Cooler Einsatz von Silverlight

10 November 2008 @ 19:47 Uhr by Roland Schumacher | Comments [0]

Ich bin gerade über ein Poster von .NET 4 gestolpert. Eigentlich ist das ja noch nichts spezielles. Das Poster kann man als PDF haben oder, was ich ganz cool finde, es gibt ein DeepZoom version.

Das wurde mit Silverlight umgesetzt. Und das ist etwas vom coolsten was mit bislang mit dieser Technik unter gekommen ist.

Cool ist vielleicht nicht ganz richtig. Sinnvoller Einsatz von Silverlight trifft es wohl besser. :-)

PS: Einfach mal einwenig drauf rumklicken und mit dem Mausrad spielen.

Genial. :-)

Abgelegt in: News
Bookmarks: Mister Wong | Yigg | Wikio | Digg | Linkarena | Webnews | Alltagz | Addthis
Actions: Permalink

Visual Studio 6.0 – Kein Mausrad zum scrollen

10 November 2008 @ 15:49 Uhr by Roland Schumacher | Comments [2]

Ich darf wieder einmal mit Visual Studio 6.0 arbeiten. Da öffnet man eine Codedatei und ärgert sich schon das erste mal gewaltig. :-)

Wieso? Weil beim scrollen mit dem Mausrad einfach nichts passiert. Das ist doch nicht mehr Zeitgemäss, so wie die IDE auch. :-)

OK. Die Abhilfe. Man such bei Google nach “Visual Studio 6 Mausrad”. Der erste Eintrag bei mir geht zu Peter Bucher. Dort gibt es dann einen weiteren Link zu Microsoft (Mausrad nicht aktiviert in der Visual Basic 6.0-Entwicklungsumgebung).

3 Minuten später tut das Mausrad auch im Visual Studio 6 und ich freue mich über das bisschen mehr an Komfort.

Abgelegt in: Tipps&Tricks | Visual Studio
Bookmarks: Mister Wong | Yigg | Wikio | Digg | Linkarena | Webnews | Alltagz | Addthis
Actions: Permalink

Tunnelblick auf dem Desktop

5 November 2008 @ 08:07 Uhr by Roland Schumacher | Comments [0]

Mein Kollege wollte ein Test mit TeamViewer machen. Das klappte auch gut. Ich habe dann mal gefragt ob man damit noch mehr machen kann als nur den Desktop steuern und Chatten. Ich hatte das Kundenmodul gestartet.

Er hat dann mal umgeschaltet, dass ich die Adminseite bekam. Er schaltete dann wieder zurück und es passierte folgendes.

image

Sieht doch speziell aus. :-)

Aber am Schluss kam dann aber noch das hier.

image

Na ja. Sah zumindest Witzig aus. Auch noch ein Nachteil. Der Desktop hat es mir verhauen. :-(

Abgelegt in: Support
Bookmarks: Mister Wong | Yigg | Wikio | Digg | Linkarena | Webnews | Alltagz | Addthis
Actions: Permalink