Pregunta

Estoy tratando de extraer datos de archivos DBF en mi programa con C #. Estoy utilizando el proveedor Visual FoxPro OLE DB. Funciona bien en mi máquina local pero quiero empaquetar mi programa en dll que los clientes pueden utilizar. El problema es cuando se les acaba el programa de su máquina se dice que el proveedor Visual FoxPro OLE DB no se ha registrado en su máquina. ¿Hay alguna manera de utilizar esto sin tener el cliente instale el proveedor Visual FoxPro OLE DB en su máquina?

¿Fue útil?

Solución

La respuesta corta es no ... La respuesta larga es:

No creo que se puede hacer eso sin necesidad de instalar el proveedor Visual FoxPro OLE DB en cada equipo de destino. Incluso si se trató de utilizar interoperabilidad COM todavía tendría que instalar y registrar DLL originales - vfpoledb.dll

Con mucho, la forma más fácil de resolver este problema es es conseguir la FoxPro OleDb paquete de instalación del controlador de Microsoft y distribuirlo a sus usuarios.

Si usted es quiere rodar su propio paquete de MSI para la instalación de la biblioteca se puede instalar y registrar la DLL que falta manualmente.

Para registrar manualmente un DLL utilizando Regsvr32.exe en un paquete MSI:

Una vez abierto el proyecto de WSI e ir a la secuencia de comandos de MSI.

Agregar una acción personalizada 'Ejecutar Programa de Destino' después InstallFinalize en la pestaña Ejecutar inmediata.

Cuando el 'Ejecutar Programa De Destino' aparece de diálogo escriba:

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)

Si se agrega el modificador / s de la línea de comandos como [SystemFolder] regsvr32.exe / s el registro de la DLL debe suceder sin la intervención del usuario.

Otros consejos

Me encontré con un problema similar cuando me como el desarrollo en mi máquina de Vista de 64 bits. Descubrí que con el fin de utilizar el proveedor OLEDB de Microsoft Jet o FoxPro OleDB tuviera que establecer las propiedades de mi proyecto .Net para dirigirse específicamente a los procesadores de 32 bits ya que no hay una versión de 64 bits de estos proveedores.

De todos modos, no estoy seguro si esto es parte del problema con los equipos de destino utilizando su libary pero pensaba que iba a ofrecer para arriba.

Brian

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top