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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top