Benutzer mit den meisten Antworten
Wie baue ich in Click Once Setup Access Treiber ein?

Frage
-
Hi, ich benutze in meinem Programm eine Access 2010 Datenbank. Diese spreche ich mit
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
an.
AccessDatabaseEngine.exe. Wie bekomme ich diese in mein Click Once Setup mit rein, damit diese ausgeführt und installiert wird?
Das Programm läuft allerdings nicht auf Rechnern wo die Access Treiber fehlen.
Diese kann ich nachinstallieren durch
Antworten
-
Hallo Michael,
prinzipiell wäre das Erstellen eines Bootstrappers notwendig, siehe auch
http://stackoverflow.com/questions/9376195/add-microsoft-access-database-engine-2010-redistributable-as-a-prerequisite-fo
Alternativ kannst Du sie als Silent Install einbinden, siehe
Can VB.NET Installation include 2007 MS Access Database EngineGrundsätzliches Problem dabei:
Die Access Database Engine muss mit der Office Version kompatibel sein - d. h. entweder x86 (32-Bit) bzw. x64 (64 Bit). Was auch Dein Programm betrifft und Du eine Version für beide vorhalten müsstest. Vorher erkennen kann man das vorher so ohne weiteres via Click Once nicht, siehe
http://stackoverflow.com/questions/2203980/detect-whether-office-2010-is-32bit-or-64bit-via-the-registryGruß Elmar
P. S.: Eine Rückmeldung bei den vorherigen Threads wäre nett.
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 10. Oktober 2012 14:27
-
Hallo Michael,
Pragmatisch: Lege den Access Treiber dabei und lasse den Kunden ihn installieren.
Man beachte den "Disclaimer" auf der Download-Seite:
Der 2007 Office System Driver ist nicht für folgende Zwecke vorgesehen: 1. Als allgemeiner Ersatz für Jet (Wenn Sie einen allgemeinen Ersatz für Jet benötigen, sollten Sie SQL Server Express Edition verwenden). 2. Als Ersatz für den Jet OLEDB-Anbieter in serverseitigen Anwendungen. (Falls Sie Daten aus Office-Dateien in einem serverseitigen Szenario lesen/beschreiben müssen wie z. B. eine Webanwendung, sollten Sie Open XML verwenden.) 3. Als allgemeines Textverarbeitungs-, Tabellenkalkulations- oder Datenbankverwaltungssystem -Als Möglichkeit zum Erstellen von Dateien. (Sie können Microsoft Office oder Office Automation zum Erstellen der Dateien verwenden, die Microsoft Office unterstützt.) 4. Zur Verwendung in einem Dienstprogramm oder einer Webanwendung, die auf einem Windows-Dienst beruht.
Auch wenn viele das gerne ignorieren möchten: Mit dem "Einvernehmen" der Jet-Engine in die Office Linie ist es nur noch als ein "Hilfstreiber" für Office. Und der Status als Systemkomponente, den die "alte" Microsoft Jet 4.0 hatte, ist damit passé.
Alternativen mit Click Once siehe z. B.:
http://erikej.blogspot.de/2011/01/comparison-of-sql-server-compact-4-and.htmlGruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 10. Oktober 2012 14:27
-
Hallo Michael,
da verwechselst Du Ross und Reiter.
Das Problem ist wie oben bereits geschrieben, dass die Access-/Jet-Engine in die Hände des Access (Office) Teams übergegangen ist.
Etwas was ich (ehedem mal Access MVP) damals als Rückzug gewertet habe und mich meinerseits von Access verabschiedet habe:Click Once kann dafür nichts und ist prinzipiell in der Lage über Bootstrap-Pakete notwendige Software zu installieren. Andere (Microsoft-)Software ist für Click-Once tauglich gemacht worden. Das kein Interesse seitens des Office-Teams (siehe Zitat) besteht, ist der Technologie nicht anzulasten.
Im übrigen bekommst Du beim Windows-Installer (dem großen Bruder) ähnliche Probleme. Auch dort kannst Du nur die Runtime nach dem gezeigten Muster installieren (und das Beste hoffen).
Im Einsatz unproblematisch wäre die ACE nur, wenn sie sowohl als 32-Bit wie 64-Bit Software installiert werden könnte - was technisch durchaus machbar wäre (im weiteren für Office auch). Nur dürften Faktoren wie Supportkosten usw. hier den Ausschlag gegeben haben.
Fazit:
Ich würde heute keine Software mehr mit ACE (oder Jet) entwickeln und Alternativen verwenden - siehe den Vergleich von ErikEJ -& und als SQL Server MVP habe ich da Präferenzen - aber auch andere haben hübsche Töchter, wenn man näher hinschaut ;-)Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 10. Oktober 2012 14:26
-
Hallo Michael,
irgendwie ist es traurig. Scheinbar benutzt irgendwie keiner Click Once mit einer Access 2010 und der AccessDataEngine.
das hat auch seinen Grund. Jet war eben in der Regel auf jedem Windowssystem von Haus aus vorhanden, ACE muss man erst mühsam (x86/x64, passend zur installierten Officeversion, usw.) installieren. Das tun sich die meisten nicht an.
Selbst wenn Du die Installation zum laufen bringen würdest: Deine Anwendung müsste dann bspw. für Windows 7 x64 mit installiertem Office 2010 32 Bit explizit als 32 Bit Anwendung laufen. AnyCPU geht in dem Fall gar nicht. Und aus solchen Gründen bleibe ich meist bei .mdb Dateien, da kann ich die Jet Engine nutzen, die Anwendung läuft dann eben immer als 32 Bit Applikation und gut ist.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 10. Oktober 2012 14:26
Alle Antworten
-
Hallo Michael,
prinzipiell wäre das Erstellen eines Bootstrappers notwendig, siehe auch
http://stackoverflow.com/questions/9376195/add-microsoft-access-database-engine-2010-redistributable-as-a-prerequisite-fo
Alternativ kannst Du sie als Silent Install einbinden, siehe
Can VB.NET Installation include 2007 MS Access Database EngineGrundsätzliches Problem dabei:
Die Access Database Engine muss mit der Office Version kompatibel sein - d. h. entweder x86 (32-Bit) bzw. x64 (64 Bit). Was auch Dein Programm betrifft und Du eine Version für beide vorhalten müsstest. Vorher erkennen kann man das vorher so ohne weiteres via Click Once nicht, siehe
http://stackoverflow.com/questions/2203980/detect-whether-office-2010-is-32bit-or-64bit-via-the-registryGruß Elmar
P. S.: Eine Rückmeldung bei den vorherigen Threads wäre nett.
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 10. Oktober 2012 14:27
-
Hi Elmar, ist ja auch wieder alles Mist. Jetzt benutze ich eine Access DB und bekomme durch ein aktuelles Click Once Setup die Access Treiber nicht installiert. Habe mittlerweile so den Eindruck, das das ganze nicht Konsequent durchdacht ist.
Die Lösung die du da geschrieben hast, ist ja auch nicht für Click Once geeignet.
Gruss -
Hallo Michael,
Pragmatisch: Lege den Access Treiber dabei und lasse den Kunden ihn installieren.
Man beachte den "Disclaimer" auf der Download-Seite:
Der 2007 Office System Driver ist nicht für folgende Zwecke vorgesehen: 1. Als allgemeiner Ersatz für Jet (Wenn Sie einen allgemeinen Ersatz für Jet benötigen, sollten Sie SQL Server Express Edition verwenden). 2. Als Ersatz für den Jet OLEDB-Anbieter in serverseitigen Anwendungen. (Falls Sie Daten aus Office-Dateien in einem serverseitigen Szenario lesen/beschreiben müssen wie z. B. eine Webanwendung, sollten Sie Open XML verwenden.) 3. Als allgemeines Textverarbeitungs-, Tabellenkalkulations- oder Datenbankverwaltungssystem -Als Möglichkeit zum Erstellen von Dateien. (Sie können Microsoft Office oder Office Automation zum Erstellen der Dateien verwenden, die Microsoft Office unterstützt.) 4. Zur Verwendung in einem Dienstprogramm oder einer Webanwendung, die auf einem Windows-Dienst beruht.
Auch wenn viele das gerne ignorieren möchten: Mit dem "Einvernehmen" der Jet-Engine in die Office Linie ist es nur noch als ein "Hilfstreiber" für Office. Und der Status als Systemkomponente, den die "alte" Microsoft Jet 4.0 hatte, ist damit passé.
Alternativen mit Click Once siehe z. B.:
http://erikej.blogspot.de/2011/01/comparison-of-sql-server-compact-4-and.htmlGruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 10. Oktober 2012 14:27
-
Hi Elmar, ich habe jetzt noch mal ein bisschen gesucht. Das einzige sinnvolle ist wohl die Access Database Engine mit runterzuladen (mit meinem Setup)
und denn per Code schauen ob die Treiber schon installiert sind (hättest du da was parat für)Ansonsten die AccessDatabaseEngine.exe ausführen.
-
Hallo Michael,
dazu findet sich etwas im bereits geposteten Link, wo nach der ACECORE.DLL geschaut wird - funktional ist das die umfirmierte MSJET32.DLL. Die Registry ginge zwar auch, aber die Pfade sind durch Office quasi festgelegt und einfacher getestet.
Wobei ich die "Program Files" / "Common Files" robuster via Environment.GetFolderPath ermitteln würde, siehe http://stackoverflow.com/questions/194157/c-sharp-how-to-get-program-files-x86-on-windows-vista-64-bit
(ab .NET 4.0 gibt es in der SpecialFolder Enumeration Werte dafür).Und da nur eine Variante installiert sein kann - entweder für x86 oder für x64 - ergibt sich daraus auch, welche Version Du installieren musst.
(Ist es ein 32-Bit Windows entfällt diese Entscheidung ;-)Gruß Elmar
-
Hi Elmar, habe jetzt noch mal seit gestern gegoogelt und irgendwie ist es traurig. Scheinbar benutzt irgendwie keiner Click Once mit einer Access 2010 und der AccessDataEngine.
Wie du schon in deinem Link geschrieben hast, gibt es irgendwie nur irgendwelche Behelfskrücken als Lösung aber nichts reales.
Mag ja alles schön und gut sein mit diesem Click Once Gelumpe. Aber da könnt ich besser wieder SetupFactory oder ähnliches nehmen.
Selbst in einem normalen VB.Net Setup Projekt bekomme ich die Engine nicht mit rein.
Kann ja nicht sein, das man noch selber händisch frickeln muss um zu schauen ob die Engine schon installiert ist, wenn nein selber das Setup ausführen irgendwie alles Suspekt. -
Hallo Michael,
da verwechselst Du Ross und Reiter.
Das Problem ist wie oben bereits geschrieben, dass die Access-/Jet-Engine in die Hände des Access (Office) Teams übergegangen ist.
Etwas was ich (ehedem mal Access MVP) damals als Rückzug gewertet habe und mich meinerseits von Access verabschiedet habe:Click Once kann dafür nichts und ist prinzipiell in der Lage über Bootstrap-Pakete notwendige Software zu installieren. Andere (Microsoft-)Software ist für Click-Once tauglich gemacht worden. Das kein Interesse seitens des Office-Teams (siehe Zitat) besteht, ist der Technologie nicht anzulasten.
Im übrigen bekommst Du beim Windows-Installer (dem großen Bruder) ähnliche Probleme. Auch dort kannst Du nur die Runtime nach dem gezeigten Muster installieren (und das Beste hoffen).
Im Einsatz unproblematisch wäre die ACE nur, wenn sie sowohl als 32-Bit wie 64-Bit Software installiert werden könnte - was technisch durchaus machbar wäre (im weiteren für Office auch). Nur dürften Faktoren wie Supportkosten usw. hier den Ausschlag gegeben haben.
Fazit:
Ich würde heute keine Software mehr mit ACE (oder Jet) entwickeln und Alternativen verwenden - siehe den Vergleich von ErikEJ -& und als SQL Server MVP habe ich da Präferenzen - aber auch andere haben hübsche Töchter, wenn man näher hinschaut ;-)Gruß Elmar
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 10. Oktober 2012 14:26
-
Hallo Michael,
irgendwie ist es traurig. Scheinbar benutzt irgendwie keiner Click Once mit einer Access 2010 und der AccessDataEngine.
das hat auch seinen Grund. Jet war eben in der Regel auf jedem Windowssystem von Haus aus vorhanden, ACE muss man erst mühsam (x86/x64, passend zur installierten Officeversion, usw.) installieren. Das tun sich die meisten nicht an.
Selbst wenn Du die Installation zum laufen bringen würdest: Deine Anwendung müsste dann bspw. für Windows 7 x64 mit installiertem Office 2010 32 Bit explizit als 32 Bit Anwendung laufen. AnyCPU geht in dem Fall gar nicht. Und aus solchen Gründen bleibe ich meist bei .mdb Dateien, da kann ich die Jet Engine nutzen, die Anwendung läuft dann eben immer als 32 Bit Applikation und gut ist.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 10. Oktober 2012 14:26
-
Hallo michael floeter,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.