2009-04-16 4 views
3

Ich versuche, Daten aus DBF-Dateien mit C# in mein Programm zu ziehen. Ich verwende den Visual FoxPro OLE DB Provider. Es funktioniert gut auf meinem lokalen Computer, aber ich möchte mein Programm in dll, die Clients verwenden können, packen. Das Problem ist, wenn sie das Programm von ihrem Computer aus ausführen, dass der Visual FoxPro OLE DB Provider nicht auf ihrem Computer registriert ist. Gibt es eine Möglichkeit, das zu verwenden, ohne dass der Client den Visual FoxPro OLE DB Provider auf ihrem Computer installiert?Mit dem Visual Fox Pro arbeiten OleDb

Antwort

6

Die kurze Antwort ist nein ... die lange Antwort lautet:

Ich glaube nicht, Sie tun können, dass ohne auf jedem Zielcomputer das Visual FoxPro OLE DB Provider zu installieren. Selbst wenn Sie versuchen, COM-Interop zu verwenden, müssten Sie immer noch installieren und registrieren Sie die ursprüngliche dll - vfpoledb.dll

Mit Abstand der einfachste Weg, um dieses Problem zu lösen ist, um die FoxPro OleDb Driver install package von Microsoft zu erhalten und an Ihre Benutzer zu verteilen .

Wenn Sie ein eigenes .MSI-Paket für Ihre Bibliothek installieren möchten, können Sie die fehlende DLL manuell installieren und registrieren.

Um manuell eine DLL mit regsvr32.exe in einem MSI-Paket registrieren:

Öffnen Sie zunächst Ihr Projekt WSI und zum MSI Script gehen.

Fügen Sie nach InstallFinalize auf der Registerkarte "Sofortige Ausführung" eine benutzerdefinierte Aktion "Programm aus Ziel ausführen" hinzu.

Wenn das ‚Programm ausführen Von Destination‘ Dialog eingeben erscheint:

Custom Action Name: <registerdll> 
Working Directory: SystemFolder 
EXE and Command Line: Enter the full path to regsvr32.exe 
and the full path to .DLL. 

(usually ..\Program Files\Common Files\System\Ole DB\vfpoledb.dll) 

Wenn Sie die Option/s in den die Befehlszeile wie [Systemfolder] regsvr32.exe/s die Registrierung der DLL sollte passieren ohne Benutzereingriff.

3

Ich stieß auf ein ähnliches Problem, als ich auf meinem 64-Bit-Vista-Rechner entwickelt. Ich fand heraus, dass, um den Microsoft Jet OleDB- oder FoxPro OleDB-Provider zu verwenden, ich die Eigenschaften meines .Net-Projekts festlegen musste, um speziell auf 32-Bit-Prozessoren zu zielen, da es keine 64-Bit-Version dieser Anbieter gibt.

Wie auch immer, nicht sicher, ob dies ein Teil des Problems mit den Zielmaschinen mit Ihrer Bibliothek ist, aber ich dachte, ich würde es anbieten.

Brian