{"id":55001392,"date":"2022-10-01T00:00:00","date_gmt":"2022-10-04T21:03:56","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1392"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"AccessApplikation_mit_Runtime_installieren","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/","title":{"rendered":"Access-Applikation mit Runtime installieren"},"content":{"rendered":"<p>Christoph J&uuml;ngling, https:\/\/www.juengling-edv.de<\/p>\n<p><b>Office-Dokumente wie Word- oder Excel-Dateien lassen sich mittlerweile auf fast allen Ger&auml;ten lesen. Wenn das nicht m&ouml;glich ist, kann man diese oft in die jeweils vorhandene Textverarbeitung oder Tabellenkalkulation importieren. Bei Datenbankanwendungen ist das anders: Dass der Entwickler eine Vollversion von Microsoft Access auf dem Rechner hat, ist Voraussetzung. Aber was ist, wenn wir eine Datenbankanwendung in einem Unternehmen an viele Arbeitspl&auml;tze verteilen oder diese online an Kunden verkaufen wollen? Muss in dem Fall f&uuml;r alle User ebenfalls eine Vollversion von Access beschafft werden? Gl&uuml;cklicherweise lautet die Antwort nein. Es gibt eine kostenlose Runtime-Version von Access, die das N&ouml;tigste f&uuml;r den Betrieb von Access-Anwendungen mit sich bringt. Der vorliegende Artikel zeigt, welche Vorbereitungen daf&uuml;r in unserer Applikation erforderlich sind und wie man die Runtime in ein eigenes Setup integriert.<\/b><\/p>\n<p>Microsoft Access ist ein tolles Produkt, aber es hat &#8211; global gesehen &#8211; leider einen entscheidenden Nachteil: Es kostet Geld. Na gut, das kann man verstehen, wir alle m&uuml;ssen ja Miete zahlen, und das geht nicht vom guten Willen (will hei&szlig;en &#8222;Spenden&#8220;) allein. Doch gl&uuml;cklicherweise gibt es f&uuml;r einige von uns eine M&ouml;glichkeit, wenigstens diese Kosten zu vermeiden &#8211; und dabei rede ich nat&uuml;rlich nicht von &#8222;Hacks&#8220;, nein, das geht ganz legal! <\/p>\n<h2>Historisches <\/h2>\n<p>Wegen der anfallenden Lizenzkosten kann man nicht grunds&auml;tzlich davon ausgehen, dass Access beim User schon installiert ist. Je nach aktueller Lizenzpolitik seitens Microsoft gibt es vielleicht eine Sparversion von Office, die Access au&szlig;en vor l&auml;sst und daf&uuml;r g&uuml;nstiger ist. Oder die IT-Administration hat entschieden, dass ohnehin niemand Access braucht, weil Excel ja genauso gut ist und auch &#8222;Datenbank kann&#8220;.<\/p>\n<p>Was auch immer nun der Grund daf&uuml;r ist, Access nicht zu installieren, f&uuml;r uns Entwickler stellt sich die Frage, wie wir damit umgehen. Immerhin stellt Microsoft schon seit l&auml;ngerem eine &#8222;Access-Runtime-Version&#8220; bereit. In der Vergangenheit musste der Entwickler diese gelegentlich bezahlen, damit er sie dann kostenfrei an seine Anwender weitergeben konnte. Seit l&auml;ngerem jedoch ist die Runtime kostenlos herunterladbar. Dies verursacht dem Entwickler also keine Zusatzkosten mehr, und vor allem d&uuml;rfen wir diese Runtime auch &uuml;berall kostenfrei installieren.<\/p>\n<p>Auch in Hinsicht dessen, was man als Entwickler darf, scheinen sich die Ansichten bei Microsoft etwas gelockert zu haben. Ich erinnere mich noch an meine fr&uuml;heren Recherchen dar&uuml;ber, nach denen ich die Runtime meinen Kunden nicht h&auml;tte bereitstellen d&uuml;rfen; sie mussten sie sich damals selbst herunterladen (einschlie&szlig;lich der Registrierung). Dazu habe ich aktuell nichts mehr auf der Microsoft-Website gefunden. Selbstverst&auml;ndlich soll dies keine Rechtsberatung darstellen.<\/p>\n<h2>Das Problem: Die Kosten<\/h2>\n<p>Wie wir alle wissen, ist Microsoft Access eine lizenzpflichtige Software. Das bedeutet, dass jeder, der sie nutzen will, daf&uuml;r einen gewissen Betrag investieren muss. Das schlie&szlig;t auch alle Anwender mit ein, und das kann f&uuml;r ein kleines Unternehmen ganz sch&ouml;n ins Geld gehen! Nat&uuml;rlich gibt es verschiedene M&ouml;glichkeiten, diese Kosten in Grenzen zu halten, zum Beispiel das Action Pack (<b>https:\/\/partner.microsoft.com\/de-de\/membership\/action-pack<\/b>) oder Volumenlizenzen, aber darum soll es hier nicht gehen.<\/p>\n<p>Das mit den Kosten ist &uuml;brigens auch dann der Fall, wenn die Anwender eine individuell entwickelte Access-Applikation benutzen, die ja bereits mit einer lizenzierten Access-Version erstellt wurde! Klingt vielleicht unfair, ist aber so, daran k&ouml;nnen wir nichts &auml;ndern. Oder doch?<\/p>\n<h2>Die L&ouml;sung: Runtime-Version verwenden<\/h2>\n<p>Die Erkl&auml;rung ist einfach: Diese als <b>.accdb<\/b>, <b>.accde <\/b>oder <b>.accdr <\/b>bei den Anwendern installierte (oder einfach aufgespielte) Applikation ist ohne weitere Hilfe leider nicht lauff&auml;hig. Wir k&ouml;nnen mit Access keine eigenst&auml;ndigen Programme schreiben, denn es gibt keinen Compiler\/Linker wie beispielsweise bei den Programmiersprachen C++ oder VB.Net.<\/p>\n<p>Es entsteht also keine <b>.exe<\/b>-Datei. Stattdessen muss Access immer mit im Boot sein, es interpretiert die Datenbankdatei und f&uuml;hrt die darin beschriebenen Aktionen aus.<\/p>\n<p>Wenn wir allerdings die Runtime-Version von Access nutzen, wird kein Access mehr ben&ouml;tigt, um die Applikation laufen zu lassen. Allerdings gibt es dabei noch ein paar Einschr&auml;nkungen, die wir uns genauer anschauen m&uuml;ssen.<\/p>\n<h2>Unterschiede zur Vollversion<\/h2>\n<p>Nat&uuml;rlich gibt es Unterschiede zwischen Runtime und Vollversion, sonst w&uuml;rde ja niemand mehr die Lizenz von Access kaufen, sondern immer gleich zur kostenlosen Runtime-Version greifen. Der wichtigste Unterschied ist der, dass man mit der Runtime eine Datenbank zwar benutzen, aber nicht entwickeln kann. Entwickeln soll hier stellvertretend f&uuml;r alles stehen, was ein Entwickler so macht, unter anderem also Formulare, Berichte und andere Datenbankobjekte bearbeiten und den Navigationsbereich anzeigen und nutzen. Das alles geht in der Runtime nicht mehr, daf&uuml;r braucht man die Vollversion von Access.<\/p>\n<p>Ein echtes Problem ist das sicher nicht, denn genau dies alles wird der reine Anwender in aller Regel sowieso nicht machen. Und mal ehrlich: Als Entwickler w&uuml;rden wir es sogar begr&uuml;&szlig;en, wenn der Anwender das alles auch gar nicht kann.<\/p>\n<p>Nur der Vollst&auml;ndigkeit halber sei noch gesagt, dass die Bearbeitung der Daten auch mit der Runtime nat&uuml;rlich ohne Probleme funktioniert!<\/p>\n<h2>Vor&uuml;berlegungen<\/h2>\n<p>Bevor man eine Access-Applikation f&uuml;r die Runtime-Version freigibt, sollten also einige &Uuml;berlegungen angestellt werden. Wir ben&ouml;tigen sinnvollerweise:<\/p>\n<ul>\n<li>Frontend-\/Backend-Trennung,<\/li>\n<li>ein eigenes Ribbon,<\/li>\n<li>einen Mechanismus zum automatischen Start aller ben&ouml;tigten Formulare etc.,<\/li>\n<li>32-Bit oder 64-Bit,<\/li>\n<li>ein Setup<\/li>\n<li>und wir sollten unser Setup testen.<\/li>\n<\/ul>\n<h2>Frontend-\/Backend-Trennung<\/h2>\n<p>Die Frontend-\/Backend-Trennung und alle damit verbundenen Aktionen (zum Beispiel automatische Tabelleneinbindung) ist generell sinnvoll. Der wichtigste Grund ist, dass damit die Applikation einfach durch einen Austausch der Datei aktualisiert werden kann (mit oder ohne Setup), ohne die bereits eingegebenen Daten zu verlieren.<\/p>\n<p>Eine m&ouml;gliche Vorgehensweise dazu ist denkbar einfach:<\/p>\n<ul>\n<li>Im ersten Schritt duplizieren wir mit Hilfe des Windows-Explorers die Datenbankdatei (Copy\/Paste).<\/li>\n<li>In einer der beiden Dateien l&ouml;schen wir nun alle Tabellen. Diese Datei nennen wir <b>Frontend<\/b>.<\/li>\n<li>In der anderen Datei l&ouml;schen wir alles au&szlig;er den Tabellen. Diese Datei nennen wir <b>Backend<\/b>.<\/li>\n<li>Nun verkn&uuml;pfen wir die Tabellen aus dem Backend in das Frontend (<b>Externe Daten|Neue Datenquelle|Aus Datenbank|Access<\/b>).<\/li>\n<\/ul>\n<p>Weitergehende Informationen finden Sie im Beitrag <b>Setup f&uuml;r Access-Anwendungen <\/b>(<b>www.access-im-unternehmen.de\/1316<\/b>) unter <b>Exkurs: Frontend-\/Backend-Trennung<\/b>.<\/p>\n<h2>Ribbon<\/h2>\n<p>Da das Access-eigene Ribbon in der Runtime-Umgebung nicht angezeigt wird, m&uuml;ssen wir als Entwickler ein eigenes vorbereiten. Hierzu gibt es bereits zahlreiche Artikel zu Ribbons. Die Alternative besteht darin, dass wir gar nicht mit Ribbons arbeiten, sondern alle Funktionen der Anwendung aus einem beim Anwendungsstart ge&ouml;ffneten Formular (nicht datengebunden) heraus starten.<\/p>\n<p>Dieses Ribbon sollte mindestens die Icons beinhalten, die der Anwender w&auml;hrend der &uuml;blichen Arbeiten ben&ouml;tigt, zum Beispiel die Gruppen <b>Zwischenablage<\/b>, <b>Sortieren und Filtern<\/b>, <b>Datens&auml;tze <\/b>und <b>Suchen<\/b>. Der Vorteil bei Verwendung der eingebauten Bestandteile ist, dass sie auch ihre Automatik (aktiv\/inaktiv je nach Kontext) mitbringen.<\/p>\n<p>In Bild 1 sehen Sie ein Beispiel daf&uuml;r. Nat&uuml;rlich sind Sie in Ihrer eigenen Applikation frei in der Gestaltung dieses Ribbons. Wenn Sie jedoch keines vorbereiten, wird in der Runtime auch keines enthalten sein.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_05\/pic_1392_001.png\" alt=\"Wichtige Befehle des Ribbons\" width=\"700\" height=\"64,89583\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Wichtige Befehle des Ribbons<\/span><\/b><\/p>\n<h2>Automatischer Start<\/h2>\n<p>Der automatische Start aller ben&ouml;tigten Objekte (zum Beispiel Ribbon, Formulare et cetera) muss ber&uuml;cksichtigt werden, da der Navigationsbereich nicht zug&auml;nglich ist, wenn die Applikation in der Runtime-Umgebung l&auml;uft. Wir brauchen also entweder ein <b>Autoexec<\/b>-Makro, ein Startformular mit Code f&uuml;r das <b>Form_Open<\/b>-Ereignis, oder wir nutzen den in dem Artikel <b>Code beim &Ouml;ffnen der Anwendung: Ribbon<\/b> (<b>www.access-im-unternehmen.de\/1369<\/b>) beschriebenen Trick.<\/p>\n<p>Der Start des Ribbons erfolgt durch Access automatisch, wenn wir dieses in der Datenbank korrekt eingetragen haben. Dazu muss die Tabelle <b>USysRibbons <\/b>mit der vorgegebenen Struktur angelegt und mit der Beschreibung der Ribbon-Definition gef&uuml;llt sein. Au&szlig;erdem muss im Men&uuml;punkt <b>Datei|Optionen|Aktuelle Datenbank|Men&uuml;band- und Symbolleistenoptionen|Name des Men&uuml;bands <\/b>der Name des initial zu ladenden Ribbons eingetragen sein. Wie das genau geht, ist in den im vorigen Abschnitt verlinkten Artikeln bereits beschrieben.<\/p>\n<p>Wenn Sie ein Programm wie zum Beispiel den <b>Ribbon-Admin 2016 <\/b>(<b>https:\/\/shop.minhorst.com\/access-tools\/309\/ribbon-admin-2016?c=78<\/b>) zur Erstellung eines Ribbons verwenden, wird alles Ben&ouml;tigte bereits von diesem erledigt.<\/p>\n<p>Der Start der weiteren Objekte unterscheidet sich in der Runtime-Version nicht von dem, was Sie wahrscheinlich auch in der <b>.accdb<\/b>\/<b>.accde<\/b>-Datei l&auml;ngst tun.<\/p>\n<h2>Bitbreite<\/h2>\n<p>Mit &#8222;Bitbreite&#8220; ist selbstverst&auml;ndlich nicht im w&ouml;rtlichen Sinne die Breite eines Bits gemeint. N&auml;heres dazu gibt es in der Wikipedia. Es geht konkret um die Frage 32-Bit oder 64-Bit, und zwar im Hinblick auf Access, nicht Windows. Wir m&uuml;ssen im Code einiges vorbereiten, wenn unsere Access-Applikation in beiden Welten lauff&auml;hig sein soll. Dieses Thema ist in dem Artikel <b>VBA unter Access mit 64 Bit <\/b>(<b>www.access-im-unternehmen.de\/961<\/b>) ausf&uuml;hrlich besprochen worden.<\/p>\n<p>Allerdings gibt es im Hinblick auf unsere Installation einen Fallstrick: Die <b>.accdb<\/b>-Datei mag nach sorgf&auml;ltigen Vorbereitungen unter beiden Bitbreiten laufen, jedoch stimmt das f&uuml;r die kompilierte <b>.accde<\/b>-Datei nicht: Diese muss f&uuml;r 32-Bit und 64-Bit in der jeweiligen Access-Variante erzeugt werden, was unseren Buildprozess ein wenig komplizierter macht. Das ist allerdings nicht neu, sondern schon seit einem Vierteljahrhundert so.<\/p>\n<h2>Setup<\/h2>\n<p><!--30percent--><\/p>\n<p>Damit sind wir gedanklich beim Setup angekommen. Es erleichtert dem Anwender, die Applikation zu installieren, andernfalls m&uuml;sste er sich um das Aufspielen an die richtige Stelle, die Verkn&uuml;pfung mit Startmen&uuml; und Desktop-Icon und vielleicht noch einiges mehr selbst k&uuml;mmern. Bei der sp&auml;teren Deinstallation wiederum m&uuml;sste er ebenfalls an all dies denken. Wenn der Benutzer das nicht aus eigener Kraft schafft, m&uuml;sste jedes Mal ein Administrator aktiv werden.<\/p>\n<p>Durch ein Setup bekommen auch unerfahrene Anwender schnell einen lauff&auml;higen Zustand. Sinnvollerweise schlie&szlig;en wir die Installation der Runtime-Version von Access gleich mit ein, sofern diese ben&ouml;tigt wird.<\/p>\n<p>Es gibt noch eine Reihe anderer Vorteile und M&ouml;glichkeiten, die wir in den Beitr&auml;gen <b>Setup f&uuml;r Access-Anwendungen <\/b>(<b>www.access-im-unternehmen.de\/1316<\/b>), <b>Setup f&uuml;r Access: Umsetzung mit InnoSetup <\/b>(<b>www.access-im-unternehmen.de\/1326<\/b>), <b>Setup f&uuml;r Access: Vertrauensw&uuml;rdige Speicherorte <\/b>(<b>www.access-im-unternehmen.de\/1333<\/b>) und <b>Setup f&uuml;r Access-Applikationen, Restarbeiten <\/b>(<b>www.access-im-unternehmen.de\/1355<\/b>) ausf&uuml;hrlich besprochen haben. Im Rahmen dieses Artikels soll nur darauf eingegangen werden, wie man die Runtime-Version in unser Setup integriert.<\/p>\n<h2>Test<\/h2>\n<p>F&uuml;r den Test unseres Setups ist es erforderlich, dass wir einen zweiten Rechner haben, egal ob nun physisch oder als virtuelle Maschine. Denn eine Parallelinstallation von Vollversion und Runtime auf einem einzigen Rechner ist problematisch.<\/p>\n<p>Eine Windows-Installation in einer virtuellen Maschine (zum Beispiel Microsoft Virtual PC, VMWare Workstation oder Oracle VirtualBox) bietet sich hierbei an, da mittels eines Snapshots der Grundzustand sehr einfach gesichert und danach jederzeit wiederhergestellt werden kann.<\/p>\n<p>Wenn wir dann auch noch 32-Bit und 64-Bit unterst&uuml;tzen wollen, brauchen wir mehrere virtuelle Maschinen. Beachten Sie dabei, dass Sie die erforderliche Anzahl Lizenzen besitzen. Ich denke aber, das oben verlinkte Actionpack ist schon eine gute Grundlage daf&uuml;r.<\/p>\n<p>Zu testen w&auml;re in erster Linie, ob<\/p>\n<ul>\n<li>die Runtime immer installiert wird, wenn sie gebraucht wird.<\/li>\n<li>die Runtime nicht installiert wird, wenn diese oder die Vollversion bereits installiert sind.<\/li>\n<li>die Applikation mit der richtigen Bitbreite installiert wird (falls wir diese Unterscheidung machen).<\/li>\n<\/ul>\n<p>Das bedeutet, dass die folgenden VMs vorhanden sein sollten:<\/p>\n<ul>\n<li>Mit Access, 32 Bit<\/li>\n<li>Mit Access-Runtime, 32 Bit<\/li>\n<li>Mit Access, 64 Bit<\/li>\n<li>Mit Access-Runtime, 64 Bit<\/li>\n<li>Ohne Access oder Runtime<\/li>\n<\/ul>\n<h2>Wie installiere ich die Access-Runtime?<\/h2>\n<p>Immer wenn ich die Aufgabe bekomme, einen Prozess zu automatisieren, frage ich mich zun&auml;chst, wie ich die Aufgabe von Hand l&ouml;sen w&uuml;rde. In der Regel ergeben sich daraus bereits die Grundz&uuml;ge f&uuml;r die Automatisierung, die ich dann ber&uuml;cksichtigen kann. Selbst wenn danach keine weiteren Optimierungen mehr stattfinden, ist durch die Automatisierung schon viel gewonnen.<\/p>\n<p>Im Falle der Access-Runtime ist nat&uuml;rlich der erste Schritt, die Installationsdatei zu finden und herunterzuladen. Wie erwartet finden wir diese bei Microsoft. <\/p>\n<p>Schauen wir aber zun&auml;chst auf die dortige Website, um die Installationsvoraussetzungen zu kl&auml;ren. Dort steht:<\/p>\n<p><b>Mit Microsoft 365 Access Runtime k&ouml;nnen Sie Access 365-Anwendungen an Benutzer verteilen, die nicht die Vollversion von Microsoft 365 Access auf ihren Computern installiert haben (wie dies bei Office 365 Enterprise E1 und Microsoft 365 Business Basic der Fall ist). Sie k&ouml;nnen es auch in Office 2019 verwenden.<\/b><\/p>\n<p><b>Wichtig: Die Microsoft 365 Access Runtime ist nicht kompatibel mit Office, die mit Windows Installer installiert wurden.<\/b><\/p>\n<p>Das ist &uuml;brigens der Grund f&uuml;r die zuvor getroffene Aussage, mehrere Rechner oder virtuelle Maschinen f&uuml;r den Test einzuplanen.<\/p>\n<p>Zur&uuml;ck zum Download. Dort m&uuml;ssen wir zwei Entscheidungen treffen: Welche Sprache soll verwendet werden? Und sind es 32-Bit oder 64-Bit? Mit der Bitbreite ist die der Runtime-Version gemeint, nicht die von Windows. Obwohl nat&uuml;rlich klar sein sollte, dass eine 64-Bit-Applikation nur auf einem 64-Bit-Windows installiert werden kann!<\/p>\n<p>Ich gehe der Einfachheit halber zun&auml;chst von &#8222;Deutsch&#8220; und &#8222;32-Bit&#8220; aus. Das im weiteren Verlauf beschriebene Verfahren wird davon nicht beeinflusst, solange Sie nur eine Bitbreite ben&ouml;tigen. Achten Sie jedoch bitte darauf, dass Sie die Version herunterladen, die Sie konkret ben&ouml;tigen.<\/p>\n<p>Die von mir heruntergeladene Datei hei&szlig;t <b>OfficeSetup.exe<\/b> und hat eine Gr&ouml;&szlig;e von circa 8 MB. Es handelt sich dabei aber nur um den Downloader, w&auml;hrend der Installation muss also eine Internetverbindung vorhanden sein.<\/p>\n<p>Um weitere Informationen zu einem solchen Installer zu bekommen, hilft oft ein Aufruf mit dem Parameter <b>\/?<\/b> in der Konsole (Kommandozeile). Manche Programme bieten hier zum Beispiel Parameter f&uuml;r die automatische (also nicht benutzergef&uuml;hrte) Installation an. Dies ist im vorliegenden Setup nicht der Fall, also sollte es reichen, die Datei einfach zu starten.<\/p>\n<p>Aber Vorsicht, wenn eine Access-Vollversion bereits installiert ist! Denn in meinen Versuchen f&uuml;hrte bereits der Startversuch von <b>OfficeSetup.exe<\/b> zur Zerst&ouml;rung der bestehenden Installation! Probieren Sie dies also lieber auf einer virtuellen Maschine aus, von der Sie vorher einen Snapshot erstellt haben.<\/p>\n<p>Wir beobachten bei der Installation der Runtime, dass wir nach Administrator-Privilegien gefragt werden. Das ist zun&auml;chst nicht ungewohnt, sondern im Gegenteil sogar naheliegend. Schlie&szlig;lich wird die Runtime ja nicht nur f&uuml;r den aktuellen User, sondern f&uuml;r alle Benutzer dieses Rechners installiert.<\/p>\n<p>Allerdings wirft dies nun ein kleines Problem auf: In der bereits erw&auml;hnten Artikelserie, in der es zun&auml;chst nur um die Installation der Access-Applikation ging, hatten wir uns entschieden, dass Administratorrechte daf&uuml;r nicht nur unn&ouml;tig, sondern sogar unerw&uuml;nscht sind. Jetzt brauchen wir sie. Wie gehen wir mit diesem Dilemma um?<\/p>\n<h2>Matrjoschka-Setup<\/h2>\n<p>Wir m&uuml;ssen also daf&uuml;r sorgen, dass die Runtime mit, unsere eigene Applikation jedoch ohne Administrator-Privilegien installiert wird. Leider verf&uuml;gt InnoSetup nicht &uuml;ber die F&auml;higkeit, mittendrin zus&auml;tzliche Privilegien anzufordern. Diese k&ouml;nnen grunds&auml;tzlich angefordert werden, aber das gilt dann f&uuml;r das gesamte Setup.<\/p>\n<p>Hinzu kommt der oben bereits erw&auml;hnte Aspekt, dass die Runtime nur dann installiert werden sollte, wenn noch keine Runtime und keine Vollversion installiert ist.<\/p>\n<p>Leider pr&uuml;ft das von Microsoft f&uuml;r die Runtime-Installation bereitgestellte Setup nicht, ob seine Installation &uuml;berhaupt notwendig ist. Daf&uuml;r m&uuml;ssen wir also selbst sorgen. In Verbindung mit dem beschriebenen Dilemma sehe ich nur eine M&ouml;glichkeit: Ich packe das Runtime-Setup von Microsoft in ein eigens daf&uuml;r mit InnoSetup erstelltes Setup ein. Dieses fordert die Admin-Privilegien an.<\/p>\n<p>Nun haben wir es also gleich mit drei Setups zu tun, die im Stil der Matrjoschka (<b>de.wikipedia.org\/wiki\/Matrjoschka<\/b>) ineinander verpackt sind (siehe Bild 2). Zur besseren &Uuml;bersicht will ich folgende Sprachregelung treffen:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_05\/Setup-Konstrukt.png\" alt=\"Struktur der drei Setups\" width=\"324,5589\" height=\"318,0677\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Struktur der drei Setups<\/span><\/b><\/p>\n<ul>\n<li>Das Microsoft-Access-Runtime-Setup ist das, was ich von der Microsoft-Website heruntergeladen habe. Es installiert die Runtime, komme, was da wolle.<\/li>\n<li>Mein Inno-Runtime-Setup ist quasi die Verpackung f&uuml;r Ersteres. Dieses pr&uuml;ft mittels Pascal-Code, ob eine Installation der Runtime notwendig ist, und fordert dazu Admin-Privilegien an. Ist es nicht notwendig, soll hierbei gar nichts geschehen.<\/li>\n<li>Das Applikations-Setup ist das in der vorangegangenen Artikelserie besprochene Setup. Es ist wiederum der Container f&uuml;r die beiden anderen Setups und zugleich auch das einzige Setup, das der Anwender tats&auml;chlich zu Gesicht bekommt.<\/li>\n<\/ul>\n<p>Der Grundgedanke ist einigen Lesern sicher aus dem Bereich &#8222;OOP&#8220; (Objekt-orientierte Programmierung) bekannt: Eine Klasse ist dort von au&szlig;en betrachtet eine Black Box, die lediglich einige wenige &#8222;Fenster&#8220; (Attribute) offen l&auml;sst und &#8222;Bedienelemente&#8220; (Public Subs und Functions) zur Verf&uuml;gung stellt.<\/p>\n<p>Wir packen das &#8222;dumme&#8220; Setup einfach in ein anderes ein, dem wir &#8222;Intelligenz&#8220; beif&uuml;gen. Dabei betrachten wir sowohl das Microsoft-Access-Runtime-Setup als auch das Inno-Runtime-Setup als Black Box.<\/p>\n<p>Der Vorteil dieses Konzeptes ist, dass das Inno-Runtime-Setup als fertig verpacktes Paket bei seiner Ausf&uuml;hrung die Admin-Rechte anfordert, das Applikations-Setup diese jedoch nach wie vor nicht ben&ouml;tigt. Durch die Kapselung k&ouml;nnen wir das eigene Inno-Runtime-Setup, nachdem es einmal erstellt und gebaut wurde, in Zukunft unver&auml;ndert und ohne nennenswerten Aufwand in die Setups beliebig vieler weiterer Projekte einf&uuml;gen. Der alte Traum von der Wiederverwendbarkeit des Codes ist also doch endlich mal Wirklichkeit geworden.<\/p>\n<h2>Das &#8222;intelligente&#8220; Setup<\/h2>\n<p>Nat&uuml;rlich ist &#8222;intelligent&#8220; an dieser Stelle nur eine Metapher. Mit wirklicher Intelligenz hat das Folgende nichts zu tun. Der Auftrag an das Inno-Runtime-Setup lautet nun:<\/p>\n<ul>\n<li>Pr&uuml;fen, ob eine Runtime-Installation notwendig ist<\/li>\n<li>Wenn ja, Installation der Runtime<\/li>\n<li>Wenn nein, einfach nichts tun<\/li>\n<\/ul>\n<p>Ein Setup, das aus nur einer Datei besteht? Das klingt doch einfach. Beginnen wir damit, ein neues Setup anzulegen und das bereits heruntergeladene Microsoft-Access-Runtime-Setup dort hineinzupacken:<\/p>\n<pre>[Files]\r\nSource: \"OfficeSetup.exe\"; DestDir: \"{tmp}\";  Flags: deleteafterinstall<\/pre>\n<p>Hinweis: Aus drucktechnischen Gr&uuml;nden entstehen hier und analog dazu in den folgenden Codeschnipseln m&ouml;glicherweise mehrere Zeilen. In InnoSetup muss jedoch alles von <b>Source<\/b> bis <b>deleteafterinstall<\/b> in einer Zeile stehen.<\/p>\n<p>Der Trick ist also, die Setup-Datei von Microsoft in das tempor&auml;re Verzeichnis auszupacken und nach der Installation wieder zu l&ouml;schen. So bleibt kein Relikt auf der Festplatte, das danach ohnehin niemandem mehr n&uuml;tzen w&uuml;rde. Nun muss diese Datei <b>OfficeSetup.exe<\/b> aber auch ausgef&uuml;hrt werden (auch hier wieder alles ab <b>Filename<\/b> in einer Zeile):<\/p>\n<pre>[Run]\r\nFilename: \"{tmp}\\OfficeSetup.exe\"; WorkingDir: \"{tmp}\"; Flags: waituntilterminated; Description:  \"Access-Runtime-Installation\";  StatusMsg: \"Installiere Access-Runtime ...\"<\/pre>\n<p>Die Ausf&uuml;hrung erfolgt aus dem tempor&auml;ren Verzeichnis, wobei das Inno-Runtime-Setup aber wartet, bis das Microsoft-Access-Runtime-Setup beendet ist (<b>waituntilterminated<\/b>). Mit diesem Zustand allein w&auml;re noch nichts gewonnen, denn das macht das Microsoft-Access-Runtime-Setup ja bereits. Jetzt brauchen wir noch die &#8222;Intelligenz&#8220;.<\/p>\n<p>Wir nutzen daf&uuml;r die in InnoSetup bereits vorhandene Callback-Funktion <b>InitializeSetup<\/b>. Laut InnoSetups eigener Online-Hilfe macht die Funktion folgendes:<\/p>\n<p><b>Called during Setup&#8220;s initialization. Return False to abort Setup, True otherwise.<\/b><\/p>\n<p>Und so sieht der Code aus:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>InitializeSetup: Boolean;\r\nbegin\r\n   if InstallRuntime() then\r\n     Result := <span style=\"color:blue;\">True<\/span> (* Setup darf laufen *)\r\n   else begin\r\n     Result := False; (* Setup abbrechen *)\r\n     if not WizardSilent() then <span style=\"color:blue;\">MsgBox<\/span>( ''MS Access oder die Runtime ist bereits  installiert!'', mbError, MB_OK);\r\n   end;\r\nend;<\/pre>\n<p>Mittels <b>WizardSilent <\/b>pr&uuml;fen wir, ob das aktuelle Setup im Silent-Modus l&auml;uft oder nicht:<\/p>\n<pre>Returns <span style=\"color:blue;\">True<\/span> if Setup is running silently, <span style=\"color:blue;\">False<\/span> otherwise.<\/pre>\n<p>Gemeint ist hiermit das von mir <b>Inno-Runtime-Setup <\/b>genannte. Falls es nicht im Silent-Modus l&auml;uft, geben wir eine Meldung aus, dass Access oder die Runtime bereits installiert sind, ansonsten passiert gar nichts. Nat&uuml;rlich ist diese Meldung nicht notwendig, sie hilft uns nur w&auml;hrend der Testphase. Danach kann sie auskommentiert werden.<\/p>\n<p>Die Funktion <b>InstallRuntime <\/b>hat die Aufgabe zu pr&uuml;fen, ob die Runtime &uuml;berhaupt installiert werden soll. Die Subroutine (Pascal-Jargon: &#8222;Procedure&#8220;) <b>InstallRuntime<\/b> ist als &#8222;soll die Runtime installiert werden?&#8220; zu verstehen.<\/p>\n<p>Sie pr&uuml;ft die Umgebung dahingehend, ob unser Setup &uuml;berhaupt etwas tun soll. Sie ist recht einfach aufgebaut:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>InstallRuntime(): Boolean;\r\nbegin\r\n   Result := (CurAccVer('''') = '''');\r\nend;<\/pre>\n<p>Hier wird also mit <b>CurAccVer<\/b> die aktuelle Access-Version ermittelt. Wenn diese Funktion einen leeren String liefert, ist das Funktionsergebnis <b>True<\/b>, die Runtime darf also installiert werden. <b>CurAccVer <\/b>wiederum liest die Registry aus (siehe Listing 1).<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>CurAccVer(dummy: String): String;\r\nvar\r\n     ok: Boolean;\r\n     version: String;\r\n     position: Integer;\r\nBegin\r\n     version := '''';\r\n     ok := RegQueryStringValue(HKCR, ''Access.Application\\CurVer'', '''', version);\r\n     repeat\r\n         position := Pos(''.'', version);\r\n         if position &gt; 0 then version := Copy(version, position+1, 999);\r\n     until position = 0;\r\n     Result := version\r\nEnd;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Ermitteln der Access-Version<\/span><\/b><\/p>\n<p>Das war der Kern dieses Setups. Es m&uuml;sste nicht zwangsl&auml;ufig in drei Funktionen aufgeteilt werden.<\/p>\n<p>Ich finde jedoch, so ist die Logik leichter erkennbar. Vor allem l&auml;sst sich <b>CurAccVer <\/b>auch noch f&uuml;r weitere Zwecke verwenden, wie wir bereits im Beitrag <b>Setup f&uuml;r Access: Vertrauensw&uuml;rdige Speicherorte <\/b>(<b>www.access-im-unternehmen.de\/1333<\/b>) gesehen haben.<\/p>\n<p>Jetzt fehlen noch die &uuml;blichen Informationen zu Beginn, diesmal auf das erforderliche Minimum zusammengestrichen.<\/p>\n<pre>[Setup]\r\nAppName=Access-Runtime-Setup\r\nAppVerName=365\r\nCreateAppDir=no\r\nOutputDir=.\r\nOutputBaseFilename=Access-Runtime-Setup\r\nCompression=lzma\r\nSolidCompression=yes\r\nDisableWelcomePage=<span style=\"color:blue;\">False<\/span>\r\nRestartIfNeededByRun=<span style=\"color:blue;\">True<\/span>\r\nAllowCancelDuringInstall=<span style=\"color:blue;\">False<\/span>\r\nShowLanguageDialog=auto\r\nUsePreviousGroup=<span style=\"color:blue;\">False<\/span>\r\nDisableProgramGroupPage=yes\r\nCloseApplications=no\r\nUninstallable=no\r\nSignTool=cjsign<\/pre>\n<p>Die letzte Einstellung (<b>SignTool<\/b>) passen Sie bitte ihrer Umgebung an (f&uuml;r Hinweise zum Codesigning siehe die vorgenannte Artikelserie) oder lassen sie ganz weg.<\/p>\n<p>Eine Angabe, dass wir Adminrechte ben&ouml;tigen, ist in diesem Skript nicht erforderlich. Das dazugeh&ouml;rige Setting <b>PrivilegesRequired<\/b> steht per Default auf <b>admin<\/b>.<\/p>\n<p>Damit ist das reine Runtime-Setup abgeschlossen. Es gibt noch ein offenes Problem und ein ToDo. Das Problem ist, dass InnoSetup die Adminrechte gleich zu Beginn anfordert. Die Pr&uuml;fung, ob es &uuml;berhaupt etwas tun soll, erfolgt leider erst danach.<\/p>\n<p>Trotzdem kann man dieses Setup mit der eingepackten Runtime dem Administrator an die Hand geben. Es erleichtert seine Arbeit, denn er muss nicht pr&uuml;fen, ob die Runtime installiert werden muss oder darf. <\/p>\n<p>Das ist auch der Grund, weshalb ich diese Struktur gew&auml;hlt habe: Die Wiederverwendbarkeit sollte auch ohne spezifische Kenntnisse der Access-Installationsumgebung m&ouml;glich sein.<\/p>\n<p>Dem ToDo, der Integration in unser Applikations-Setup und den dort erforderlichen Nacharbeiten, widmet sich das kommende Kapitel.<\/p>\n<h2>Integration in das App-Setup<\/h2>\n<p>In den Beitr&auml;gen <b>Setup f&uuml;r Access-Anwendungen <\/b>(<b>www.access-im-unternehmen.de\/1316<\/b>), <b>Setup f&uuml;r Access: Umsetzung mit InnoSetup <\/b>(<b>www.access-im-unternehmen.de\/1326<\/b>), <b>Setup f&uuml;r Access: Vertrauensw&uuml;rdige Speicherorte <\/b>(<b>www.access-im-unternehmen.de\/1333<\/b>) und <b>Setup f&uuml;r Access-Applikationen, Restarbeiten <\/b>(<b>www.access-im-unternehmen.de\/1355<\/b>) haben wir uns bereits ausf&uuml;hrlich mit einem Setup f&uuml;r die reine Anwendung besch&auml;ftigt. Dieses Setup-Skript soll nun die Grundlage f&uuml;r die weiteren Arbeiten sein.<\/p>\n<p>Im Grunde m&uuml;ssten wir hier nur einen Eintrag f&uuml;r das neue Inno-Runtime-Setup in der Rubrik <b>[Files] <\/b>erg&auml;nzen, und einen Eintrag in der <b>[Run]<\/b>-Sektion, damit es ausgef&uuml;hrt wird. Doch leider ergibt sich dabei das obige Problem mit dem viel zu fr&uuml;hzeitigen Anfordern der Adminrechte. Daher muss leider auch noch etwas Code eingef&uuml;gt werden, der entscheidet, ob das eingepackte Inno-Runtime-Setup &uuml;berhaupt ausgef&uuml;hrt werden soll. Konkret sehen diese Erweiterungen dann wie folgt aus. Ich gebe jeweils die Rubrik und die Erg&auml;nzungen an:<\/p>\n<pre>[Files]\r\nSource: \"Access-Runtime-Setup.exe\"; DestDir: \"{tmp}\"; Flags: deleteafterinstall\r\n[Run]\r\nFilename: \"{tmp}\\Access-Runtime-Setup.exe\"; WorkingDir: \"{tmp}\"; Check: InstallRuntime\r\n[Code]\r\n<span style=\"color:blue;\">Function <\/span>InstallRuntime(): Boolean;\r\nbegin\r\n   Result := (CurAccVer('''') = '''');\r\nend;<\/pre>\n<p>Im Falle von <b>[Files] <\/b>und <b>[Run] <\/b>spielt die Einordnung der neuen Eintr&auml;ge keine Rolle. Bei <b>[Code] <\/b>ist das etwas anders. Der verwendete Pascal-Compiler ist ein One-Pass-Compiler. Das bedeutet, dass er in nur einem einzigen Durchlauf alle Informationen finden muss, die f&uuml;r die Kompilierung erforderlich sind. Funktionen, die in einer anderen Funktion aufgerufen werden sollen, m&uuml;ssen unbedingt vor dieser definiert werden. In unserem Falle muss also <b>CurAccVer <\/b>vor <b>InstallRuntime <\/b>stehen.<\/p>\n<p>Die Position von <b>Now <\/b>ist in diesem Zusammenhang bedeutungslos, da diese Funktion nur im <b>[Registry]<\/b>-Block ben&ouml;tigt wird.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Insgesamt betrachtet wirkt die von mir Matrjoschka-Setup genannte Struktur unn&ouml;tig kompliziert. Ohne das Thema Admin-Privilegien w&auml;re das nicht n&ouml;tig gewesen. Mit von vornherein angeforderten Admin-Rechten h&auml;tte das Microsoft-Access-Runtime-Setup direkt mit den zuletzt beschriebenen Ma&szlig;nahmen in das Applikations-Setup integriert werden k&ouml;nnen. Dann w&auml;ren wir erheblich schneller damit fertig gewesen.<\/p>\n<p>Doch jetzt, nachdem wir unser Inno-Runtime-Setup fertiggestellt haben, k&ouml;nnen wir dieses in Form einer Black Box auch in andere Applikations-Setups integrieren. Erst wenn Microsoft eine &Auml;nderung vornimmt, m&uuml;ssen wir die dann neue Runtime erneut herunterladen und unser Setup neu bauen lassen.<\/p>\n<p>Und falls es sich bei weiteren Setups ebenfalls um solche f&uuml;r Access-Applikationen handelt, k&ouml;nnen Sie das nun kombinierte Setup als Grundlage daf&uuml;r verwenden. Wahrscheinlich betreffen die &Auml;nderungen nur die wenigen Konstanten am Beginn des Skriptes. Damit haben Sie jetzt ein Setup an der Hand, das Ihnen f&uuml;r die Zukunft noch oft gute Dienste leisten wird.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>app-setup.zip<\/p>\n<p>runtime-setup.zip<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/48B02E74-CDC9-4656-9580-4A09B38C208C\/aiu_1392.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Office-Dokumente wie Word- oder Excel-Dateien lassen sich mittlerweile auf fast allen Ger&auml;ten lesen. Wenn das nicht m&ouml;glich ist, kann man diese oft in die jeweils vorhandene Textverarbeitung oder Tabellenkalkulation importieren. Bei Datenbankanwendungen ist das anders: Dass der Entwickler eine Vollversion von Microsoft Access auf dem Rechner hat, ist Voraussetzung. Aber was ist, wenn wir eine Datenbankanwendung in einem Unternehmen an viele Arbeitspl&auml;tze verteilen oder diese online an Kunden verkaufen wollen? Muss in dem Fall f&uuml;r alle User ebenfalls eine Vollversion von Access beschafft werden? Gl&uuml;cklicherweise lautet die Antwort nein. Es gibt eine kostenlose Runtime-Version von Access, die das N&ouml;tigste f&uuml;r den Betrieb von Access-Anwendungen mit sich bringt. Der vorliegende Artikel zeigt, welche Vorbereitungen daf&uuml;r in unserer Applikation erforderlich sind und wie man die Runtime in ein eigenes Setup integriert.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662022,66052022,44000039],"tags":[],"class_list":["post-55001392","post","type-post","status-publish","format-standard","hentry","category-662022","category-66052022","category-Setup_und_Weitergabe"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Access-Applikation mit Runtime installieren - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Access-Applikation mit Runtime installieren\" \/>\n<meta property=\"og:description\" content=\"Office-Dokumente wie Word- oder Excel-Dateien lassen sich mittlerweile auf fast allen Ger&auml;ten lesen. Wenn das nicht m&ouml;glich ist, kann man diese oft in die jeweils vorhandene Textverarbeitung oder Tabellenkalkulation importieren. Bei Datenbankanwendungen ist das anders: Dass der Entwickler eine Vollversion von Microsoft Access auf dem Rechner hat, ist Voraussetzung. Aber was ist, wenn wir eine Datenbankanwendung in einem Unternehmen an viele Arbeitspl&auml;tze verteilen oder diese online an Kunden verkaufen wollen? Muss in dem Fall f&uuml;r alle User ebenfalls eine Vollversion von Access beschafft werden? Gl&uuml;cklicherweise lautet die Antwort nein. Es gibt eine kostenlose Runtime-Version von Access, die das N&ouml;tigste f&uuml;r den Betrieb von Access-Anwendungen mit sich bringt. Der vorliegende Artikel zeigt, welche Vorbereitungen daf&uuml;r in unserer Applikation erforderlich sind und wie man die Runtime in ein eigenes Setup integriert.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-04T21:03:56+00:00\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"21\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Access-Applikation mit Runtime installieren\",\"datePublished\":\"2022-10-04T21:03:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/\"},\"wordCount\":4093,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"articleSection\":[\"2022\",\"5\\\/2022\",\"Setup und Weitergabe\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/\",\"name\":\"Access-Applikation mit Runtime installieren - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"datePublished\":\"2022-10-04T21:03:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/AccessApplikation_mit_Runtime_installieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Access-Applikation mit Runtime installieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Access-Applikation mit Runtime installieren - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/","og_locale":"de_DE","og_type":"article","og_title":"Access-Applikation mit Runtime installieren","og_description":"Office-Dokumente wie Word- oder Excel-Dateien lassen sich mittlerweile auf fast allen Ger&auml;ten lesen. Wenn das nicht m&ouml;glich ist, kann man diese oft in die jeweils vorhandene Textverarbeitung oder Tabellenkalkulation importieren. Bei Datenbankanwendungen ist das anders: Dass der Entwickler eine Vollversion von Microsoft Access auf dem Rechner hat, ist Voraussetzung. Aber was ist, wenn wir eine Datenbankanwendung in einem Unternehmen an viele Arbeitspl&auml;tze verteilen oder diese online an Kunden verkaufen wollen? Muss in dem Fall f&uuml;r alle User ebenfalls eine Vollversion von Access beschafft werden? Gl&uuml;cklicherweise lautet die Antwort nein. Es gibt eine kostenlose Runtime-Version von Access, die das N&ouml;tigste f&uuml;r den Betrieb von Access-Anwendungen mit sich bringt. Der vorliegende Artikel zeigt, welche Vorbereitungen daf&uuml;r in unserer Applikation erforderlich sind und wie man die Runtime in ein eigenes Setup integriert.","og_url":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/","og_site_name":"Access im Unternehmen","article_published_time":"2022-10-04T21:03:56+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"21\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Access-Applikation mit Runtime installieren","datePublished":"2022-10-04T21:03:56+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/"},"wordCount":4093,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"articleSection":["2022","5\/2022","Setup und Weitergabe"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/","url":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/","name":"Access-Applikation mit Runtime installieren - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"datePublished":"2022-10-04T21:03:56+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/AccessApplikation_mit_Runtime_installieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Access-Applikation mit Runtime installieren"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001392","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001392"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001392\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001392"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001392"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}