COM-Add-Ins und -DLLs installieren oder registrieren

Wenn man eine COM-DLL oder ein COM-Add-In mit VB6 oder twinBASIC erstellt hat, muss dieses registriert werden, damit es in einer der Office-Anwendungen angezeigt wird oder unter VBA zur Verfügung steht. Die Informationen für die Registrierung werden in der Regel direkt in die jeweilige .dll-Datei integriert, sodass man die Registrierung nur noch von außen initialisieren muss. Dafür gibt es verschiedene Wege, die sich je nach Zweck (COM-DLL oder COM-Add-In) unterscheiden. Einer davon ist das Erstellen eines Setups mit Inno Setup. Dieses braucht der Anwender nur auszuführen und muss keine Verrenkungen machen, um die neuen Funktionen auf seinem Rechner nutzen zu können. Es gibt aber auch noch alternative Methoden, die wir ebenfalls in diesem Beitrag vorstellen.

Im Beitrag Abfragen direkt in der SQL-Ansicht erstellen (www.access-im-unternehmen.de/1483) haben wir gezeigt, wie wir mit twinBASIC ein COM-Add-In erstellen können, das sich in die Access-Benutzeroberfläche integriert.

Auf die gleiche Weise können wir mit twinBASIC auch COM-DLLs erstellen, also DLLs, deren Funktionen wir in das VBA-Projekt einer Anwendung integrieren und diese dort aufrufen können.

In beiden Fällen definieren wir im twinBASIC-Projekt Funktionen namens DLLRegisterServer und DLLUnregisterServer, welche die Befehle zum Hinzufügen und Entfernen bestimmter Einträge in der Registry enthält.

Diese Funktionen werden durch verschiedene Aktionen ausgelöst, wobei eine Aktion nur für COM-Add-Ins zur Verfügung steht, nicht jedoch für COM-DLLs. Wir schauen uns diese nun an.

Installieren von COM-Add-Ins

Für die Installation von COM-Add-Ins gibt es die folgenden Möglichkeiten:

  • Registrierung per Eingabeaufforderung mit RegSvr32.exe
  • Registrierung über den COM-Add-Ins-Dialog in Access
  • Registrierung per Setup, beispielsweise mit Inno Setup zu erstellen

Installation von COM-DLLs

Bei COM-DLLs, die ihre Befehle zur Verfügung stellen, wenn man sie als Bibliothek zu einem VBA-Projekt hinzufügt, gibt es nur zwei Möglichkeiten:

  • Registrierung per Eingabeaufforderung mit RegSvr32.exe
  • Registrierung per Setup, das beispielsweise mit Inno Setup erstellt werden kann

Registrierung per Eingabeaufforderung

Für die Registrierung per Eingabeaufforderung braucht man nicht viel zu wissen – allein der Speicherort der zu registrierenden Datei ist wichtig.

Dafür öffnen wir als Erstes die Eingabeaufforderung von Windows. Dies allerdings nicht einfach so, sondern wir benötigen in den meisten Fällen den Administratormodus. Dazu geben wir cmd in das Suche-Fenster von Windows ein und klicken mit der rechten Maustaste auf den Eintrag Eingabeaufforderung. Aus dem nun erscheinenden Kontextmenü wählen wir den Eintrag Als Administrator ausführen… aus (siehe Bild 1).

Öffnen der Eingabeaufforderung als Administrator

Bild 1: Öffnen der Eingabeaufforderung als Administrator

Alternativ kann man auch den direkt eingeblendeten Befehl Als Administrator ausführen im rechten Bereich des Suchen-Bereichs anklicken.

Hier haben wir nun zwei Möglichkeiten: Entweder wir navigieren mit der cd-Anweisung in das Verzeichnis, in dem sich die zu registrierende .dll-Datei befindet, oder wir kopieren den Pfad aus dem Windows Explorer in die Zwischenablage, um ihn anschließend weiterzuverarbeiten.

In jedem Fall müssen wir die regsvr32.exe ausführen und den Namen der .dll-Datei als Parameter übergeben.

Wir sind hier zuerst mit der cd-Anweisung zu dem Verzeichnis navigiert, in dem wir das COM-Add-In gespeichert haben:

C:\Users\User\AppData\Roaming\Microsoft\AddIns

Dann haben wir den Befehl zum Registrieren eingegeben:

RegSvr32 amvSQLView_win32.dll

Das Ergebnis ist die Meldung aus Bild 2.

Registrieren einer DLL über die Eingabeaufforderung

Bild 2: Registrieren einer DLL über die Eingabeaufforderung

Registrierung aufheben per Eingabeaufforderung

Wir können diese Registrierung auch wieder über die Eingabeaufforderung entfernen. Dazu geben wir zusätzlich zu dem soeben angegebenen Befehl noch den Parameter /u an. Die Bestätigung sieht ähnlich aus wie beim Registrieren der DLL (siehe Bild 3).

Aufheben der Registrierung einer DLL über die Eingabeaufforderung

Bild 3: Aufheben der Registrierung einer DLL über die Eingabeaufforderung

Was geschieht beim Registrieren?

Beim Registrieren erfolgen genau die Schritte, die in der Funktion DLLRegisterServer angegeben sind. In diesem Fall legen wir einige Einträge in der Registry an. Diese können wir uns im Registry-Editor anschauen. Den Registry-Editor starten wir mit dem Befehl Regedit, den wir ebenfalls in das Suchen-Feld von Windows eingeben.

Hier suchen wir mit Bearbeiten|Suchen nach der Registrierung nach dem Wert amvSQLView. Wir finden einige Vorkommen, aber die in der Funktion DLLRegisterServer angegebenen landen in dem Bereich aus Bild 4.

Hauptregistry-Einträge für das COM-Add-In

Bild 4: Hauptregistry-Einträge für das COM-Add-In

Die übrigen werden bei der Installation automatisch vorgenommen und sind für die Funktionsweise ebenfalls wichtig. So sehen wir in den hier angelegten Einträgen eigentlich noch keine wirkliche Information, wo sich die aufzurufende DLL befindet.

Genau genommen sagen die Werte folgendes aus:

  • Description: Dieser Text wird in der Übersicht der Add-Ins einer Access-Anwendung angezeigt.
  • FriendlyName: Wert, der im später vorgestellten Dialog COM-Add-Ins angezeigt wird.
  • LoadBehaviour: Gibt an, wann das COM-Add-In geladen wird. 3 bedeutet beispielsweise: Beim Start laden.

[

Wo diese Werte landen, sehen wir in Bild 5. Der Inhalt aus FriendlyName landet in der Liste der Add-Ins und unter Add-In und der Wert aus Description ist unten unter Beschreibung zu finden.

Informationen aus der Registry im Add-Ins-Bereich

Bild 5: Informationen aus der Registry im Add-Ins-Bereich

Welche weiteren Registry-Einträge werden angelegt?

Neben den hier genannten werden noch einige weitere Registry-Einträge bei jeder der hier vorgestellten Methode angelegt. Einer unter Computer\HKEY_CLASSES_ROOT\amvSQLView.amvSQLView weist beispielsweise dem Klassennamen die ClassId zu.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar