Ergänzend zu der kleinen Serie Wo installiert man eine Access-Applikation? will ich hier mal auf eine etwas andere Frage eingehen. Im Zusammenhang mit der Entwicklung eines Com-Addins, um die Access-Entwicklungsumgebung etwas aufzupeppen, hatte mich Andrè Minhorst um Unterstützung bei InnoSetup gebeten.
Ein solches Com-Addin ist technisch ja auch “nur” eine DLL, und die muss unter Windows halt in einer bestimmten Weise installiert werden. Das ist nicht schwer, wenn man weiß, wie. Und wie so oft gibt es grundsätzlich zwei Möglichkeiten: Manuell oder automatisiert. Ihr könnt euch vorstellen, was ein Softwareentwickler aufgrund seiner sprichwörtlichen Faulheit am liebsten hat :-)
In diesem Artikel
Grundsätzliches
Eine DLL ist eine “Dynamic-Link-Library”. Das ist die Bezeichnung für eine Bibliothek, die Funktionen oder Klassen bereitstellt, die aber nicht eigenständig ausgeführt werden kann. Der Vorteil ist dabei, dass man zentrale Funktionen nur einmal hat. Jedes Programm, dass diese nutzen will, muss das dann nicht alles selbst mitbringen. Allerdings hat das auch Nachteile, denn falls eine Installation so eine DLL gegen eine fehlerhafte Version austauscht, funktionieren gleich mehrere Programme nicht mehr.
Um also von einer solchen DLL zu profitieren, muss das betreffende Programm diese auch finden. Der übliche Weg dazu ist, sie einfach in’s Windows-Verzeichnis zu legen. Zusätzlich wird normalerweise noch eine Registrierung durchgeführt, wodurch die DLL in der Registry eingetragen wird. Dann kann sie über ihre CLSID gefunden werden und es ist nicht mehr so wichtig, wo genau die Datei letztlich liegt. In diesem Fall sind allerdings Administrator-Berechtigungen erforderlich.
Nur für den Benutzer
Manchmal hat man aber auch als Entwickler keine Admin-Rechte auf dem PC. So möchte zum Beispiel nicht jeder Kunde einem “Fremden” alle diese Möglichkeiten geben. Das muss nicht unbedingt ein Problem sein.
Denn es gibt die Möglichkeit, eine DLL nur für einen Benutzer verfügbar zu machen. Dazu muss diese im Bereich des Benutzerkontos installiert werden. Dies entspricht dem Grundgedanken, den ich in Wo installiert man eine Access-Applikation? (3/3) beschrieben habe.
Ein dafür sehr passend erscheinendes Verzeichnis ist der “user common folder”. Dieser liegt in C:\Users\USERNAME\AppData\Local\Programs\Common\
. Es empfiehlt sich, darunter noch eine Verzeichnisebene mit dem Namen des Tools oder des Anbieters anzulegen, dadurch wird das etwas übersichtlicher.
Die Registrierung der DLL erfolgt dann, wenn wir InnoSetup verwenden, wieder sehr einfach. Dazu wird in der [Files]-Sektion bei dem Eintrag für die DLL einfach das Flag “regserver” ergänzt. Wenn zusätzlich noch als DefaultDirName “{usercf}” und für PrivilegesRequired “lowest” eingetragen wird, sollte das eigentlich schon erledigt sein.
Für das Com-Addin muss dann “nur noch” etwas in die Registry eingetragen werden, damit Access das Toolset auch findet. Auch dies landet dann in HKEY_CURRENT_USER.
Hilfreiches Tool
Das oben angesprochene Toolset findet ihr übrigens hier. Es bietet die Möglichkeit, aus einem Access-Formular heraus direkt zu den Ereignisprozeduren zu manövrieren, also ohne zunächst den VB-Editor zu öffnen, das Formular aus der Liste herauszusuchen, dessen Code zu öffnen und die passende Prozedur herauszusuchen. Gerade bei der Übernahme von fremden Programmen kann das schon eine ordentliche Erleichterung sein.
(Der Link ist übrigens kein Affiliate-Link. Das Toolset muss zwar bezahlt werden, aber ich verdiene nichts mit dieser Verlinkung.)
Neueste Kommentare