2009-07-08 14 views
2

Ich habe eine Reihe von Windows-Programmen, die meist mit VB6 und VC++ 6 erstellt wird. Ihr Installationsprogramm wird mit InstallShield erstellt.Woher weiß ich, ob mein Programm MDAC benötigt?

Einige Benutzer haben kürzlich ein Problem bei der Installation auf Vista gemeldet. Es beschwert sich, dass "MDAC 2.6 SP2 nicht auf diesem Computer installiert werden kann. MDAC 2.6 SP2 erfordert eine der folgenden Konfigurationen" und listet dann mehrere Betriebssysteme auf, Vista nicht unter ihnen.

Ein wenig googeln shows, dass es einen Fehler in InstallShields Handhabung von MDAC gibt - es sollte nicht auf Vista überprüft werden, weil es so etwas wie MDAC unter Vista nicht gibt (es gibt eine neue Sache - "Windows DAC") .

Ich könnte die Änderung meines InstallShield-Projekts auf dieser Seite vorschlagen, aber ich mache mir Sorgen, weil ich keine Möglichkeit habe, es zu testen (dieses Problem tritt nicht auf allen Vista-Rechnern auf und ich nicht war in der Lage, es auf jedem Vista-Rechner geschehen zu lassen, auf den ich Zugriff habe).

Allerdings, nach dem Blick auf Wikipedia-Seite auf MDAC, kann ich mir nicht vorstellen, warum wir es für unsere Programme überhaupt benötigen würden. Wir verwenden keine Datenbanken, zumindest nicht explizit (vielleicht verwendet eine Microsoft-Komponente, die wir verwenden, es jedoch?).

Ich war nicht der ursprüngliche Autor des InstallShield-Projekts. Ich fange an zu vermuten, dass MDAC versehentlich hinzugefügt wurde, oder vielleicht, aber genauso wie "ähh, vielleicht brauchen wir das".

Wie kann ich explizit feststellen, ob meine Programme MDAC benötigen oder nicht? Ich kann die Referenzen und solche in den VB6 und VC++ - Projekten betrachten; Gibt es eine Möglichkeit, von denen zu unterscheiden, ob ich MDAC sicher aus dem InstallShield-Projekt entfernen kann? Zum Beispiel gibt es vielleicht eine einzelne MDAC-Referenz, die, wenn sie nicht in meinen VB/VC++ - Projekten vorhanden ist, bedeutet, dass meine Programme definitiv kein MDAC benötigen?

Vielen Dank im Voraus für jede Hilfe.

Antwort

4

Ich erwarte, dass Sie Recht haben, MDAC war wahrscheinlich in der ursprünglichen InstallShield-Projektkonfiguration enthalten, und niemand hat sich darum gekümmert, es zu entfernen.

Auf der VB6-Seite sollten Sie in der Lage sein zu sagen, ob MDAC verwendet wird, indem Sie in den "References" -Dialog (ich denke, es ist im Dropdown-Menü Projekte der IDE) und überprüfen, ob dort etwas ist mit MDAC oder MSAccess zu tun. Ich habe eine Weile nicht mit VB6 gearbeitet, aber der Text sollte so aussehen wie "Microsoft ActiveX Data Objects 2.x-Bibliothek".

ich es erraten habe, ist weniger wahrscheinlich, dass es auf der Seite C++ verwendet wird, aber man könnte für Schlüsselwörter wie msdado, mdac und msaccess versuchen suchen, wenn Theres zu sehen Anzeichen einer #import auf einem der mdac dlls.

0

Anfang Ich denke, mit Windows XP begann Microsoft mit MDAC. In MDAC-Version 2.6 und höher enthielten sie jedoch nicht mehr die Jet 4.0-Komponenten. (Jet 4.0 SP8 can be found here)

Wenn Sie Visual Fox Pro verwenden, müssen Sie entweder die ODBC- oder die OLEDB-Treiber installieren, abhängig von Ihrem Code dafür. ODBC OLEDB

Alle diese Downloads sind abhängig von mindestens MDAC 2.6 installiert ist.

3

Bei der Bereitstellung unter Windows XP und höher gibt es keinen Grund, MDAC oder Jet 4.0 einzuschließen, da sogar XP RTM (Gold) mit MDAC 2.7 sowie Jet 4.0 ausgeliefert wurde.

Microsoft Data Access Components (MDAC) release history

How to obtain the latest service pack for the Microsoft Jet 4.0 Database Engine geht in neuere Jet Geschichte.

MDAC-Versionen enthalten Kompatibilitäts-Typelibs für ADO. Selbst wenn Ihr Programm mit MDAC 2.6 kompiliert wurde, verwendet es tatsächlich die neueste ADO auf einem Zielcomputer. Der eigentliche Kummer kann kommen, wenn das Programm frühzeitig an ADOX bindet.

ADOX wurde nie mit entsprechenden Kompatibilitätsschnittstellen ausgeliefert, daher sollten die Programme fast immer späte Bindung mit ADOX verwenden.

DAO ist ein anderes Problem, aber (a.) Niemand sollte es wirklich ohne eine gute Entschuldigung verwenden und (b.) Es starb bei DAO 3.6, so sollte es kein Kompatibilitätsproblem geben, solange Ihre Programme aktualisiert wurden 3.6 und Jet5x (Jet 4.0, Access 2000-Format).


Die Geschichte wird komplizierter bei der Bereitstellung von Downlevel von XP natürlich.