Lavorare con il Visual FoxPro OleDb
-
09-09-2019 - |
Domanda
Sto cercando di estrarre i dati da file DBF nel mio programma utilizzando C #. Sto usando il Visual FoxPro provider OLE DB. Funziona bene sulla mia macchina locale, ma voglio confezionare il mio programma nel dll che i clienti possono utilizzare. Il problema è quando si esegue il programma da loro macchina si dice che il Visual FoxPro provider OLE DB non è registrato sulla loro macchina. C'è un modo per utilizzare questo senza avere il client di installazione di Visual FoxPro provider OLE DB sulla loro macchina?
Soluzione
La risposta breve è no ... la risposta lunga è:
Non credo che si può fare senza installare Visual FoxPro provider OLE DB su ogni macchina di destinazione. Anche se si è tentato di utilizzare l'interoperabilità COM si sarebbe ancora necessario installare e registrare la DLL originale - VfpOleDb.dll
Di gran lunga il modo più semplice per risolvere questo problema è è quello di ottenere il FoxPro OleDb driver pacchetto di installazione da Microsoft e distribuirlo agli utenti.
Se non si desidera rotolare il proprio pacchetto MSI per l'installazione di libreria è possibile installare e registrare il dll mancante manualmente.
Per registrare manualmente una DLL utilizzando regsvr32.exe in un pacchetto MSI:
Per prima cosa aprire il progetto WSI e andare allo script MSI.
Aggiungi un 'Esegui programma dalla destinazione' azione personalizzato dopo InstallFinalize nella scheda immediata esecuzione.
Quando il 'Esegui programma dalla destinazione' finestra di dialogo appare immettere:
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)
Se si aggiunge l'opzione / s alla linea di comando come [SystemFolder] regsvr32.exe / s la registrazione della DLL dovrebbe accadere senza l'intervento dell'utente.
Altri suggerimenti
Mi sono imbattuto in un problema simile quando lo sviluppo di sulla mia macchina a 64-bit di Vista. Ho scoperto che, al fine di utilizzare il provider OLEDB di Microsoft Jet o FoxPro OleDB ho dovuto impostare le proprietà del mio progetto .Net per indirizzare specificamente processori a 32 bit dal momento che non esiste una versione a 64 bit di questi fornitori.
In ogni caso, non so se questo è parte del problema con le macchine di destinazione utilizzando la libary ma pensato che sarebbe offrire in su.
Brian