COM-Add-Ins registrieren

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Aus verschiedenen Gründen kann die Installation eines COM-Add-Ins für eine Office-Anwendung fehlschlagen – oder zumindest erreicht man damit nicht das gewünschte Ergebnis. Zum Beispiel könnte ein Benutzer das Setup mit dem COM-Add-In, das normalerweise für den aktuellen Benutzer installiert wird, im Kontext eines anderen Benutzers installieren – zum Beispiel als Administrator. Dann erscheint das COM-Add-In für den Benutzer jedoch nicht. In diesem Artikel zeigen wir zwei schnelle Wege, wie die Installation dennoch gelingt, sofern die DLL-Datei mit dem COM-Add-In vorliegt. Außerdem schauen wir uns an, wo in der Registry der Eintrag für ein COM-Add-In landet und was die verschiedenen Einträge bedeuten.

Setups haben meist den Zweck, die Installation einer Software für den Benutzer so angenehm wie möglich zu machen. Manchmal klappt es allerdings einfach nicht wie gewünscht. Das hängt zum Beispiel damit zusammen, dass die Registry des Benutzers anders aufgebaut ist, als es das Setup erwartet. Dann werden die für den reibungslosen Betrieb erforderlichen Einträge in der Registry aus Sicht des Setups zwar an der richtigen Stelle vorgenommen, aber sie werden vom System nicht berücksichtigt.

Es gibt nämlich bestimmte Registry-Bereiche, die Office-Anwendungen beim Start untersuchen, um zu erfahren, ob COM-Add-Ins oder andere Anwendungen vorliegen, die mit der Office-Anwendung gestartet werden sollen.

In diesem Magazin haben wir bereits einige COM-Add-Ins vorgestellt, die selbst festlegen, an welche Stellen der Registry die notwendigen Einträge geschrieben werden sollen. In dem COM-Add-In aus dem Artikel COM-Add-In für Word: PDF-Export (www.vbentwickler.de/383) legen wir das beispielsweise wie in Bild 1 fest. Die Konstante RootRegistryFolder_WORD nimmt den Basispfad auf, die Funktion DllRegisterServer legt die Einträge beim Registrieren der Anwendung in der Registry an.

Anweisungen zum Anlegen der Registry-Einträge

Bild 1: Anweisungen zum Anlegen der Registry-Einträge

Wie landen die Einträge in der Registry?

Wenn wir wie in dem Artikel gezeigt mit twinBASIC entwickeln und die Anwendung kompilieren, startet twinBASIC automatisch die Prozedur DllRegisterServer und trägt so die Einträge in die Registry ein.

Wenn wir ein Setup mit InnoSetup erstellen, wie wir es in Installation mit Inno Setup: Die Basics (www.vbentwickler.de/382) beschreiben, fügen wir dem Eintrag für die DLL-Datei noch den Zusatz regserver unter Flags hinzu.

Dadurch wird die Funktion DllRegisterServer automatisch aufgerufen:

[Files]
Source: "Build\amWordPDFExport_win32.dll"; DestDir: "{app}"; Flags: regserver ignoreversion; Check:Is32Bit 

Hier kann das in der Einleitung beschriebene Szenario auftreten. Wenn die Funktion DllRegisterServer in einen Bereich der Registry schreibt, der dem ausführenden Benutzer gehört, landen die Einträge auch in dem Bereich der Registry für diesen Benutzer.

Andere Benutzer auf dem gleichen Rechner können das COM-Add-In somit nicht nutzen.

Das Ergebnis sieht übrigens wie in Bild 2 aus.

Die resultierenden Registry-Einträge

 

Schreibe einen Kommentar