使用Visual Fox Pro OleDb

我试图使用C#将数据从DBF文件中提取到我的程序中。 我正在使用Visual FoxPro OLE DB提供程序。 它在我的本地机器上工作正常,但我想将我的程序打包成客户端可以使用的DLL。 问题是当他们从他们的机器运行程序时,它说Visual FoxPro OLE DB提供程序没有在他们的机器上注册。 有没有办法使用它没有客户端在他们的机器上安装Visual FoxPro OLE DB提供程序?

简短的回答是否定的……答案很长:

如果不在每台目标计算机上安装Visual FoxPro OLE DB提供程序,我不相信你能做到这一点。 即使您尝试使用COM互操作,您仍然需要安装并注册原始的dll – vfpoledb.dll

到目前为止,解决此问题的最简单方法是从Microsoft获取FoxPro OleDb驱动程序安装包并将其分发给您的用户。

如果您想为库安装滚动自己的.MSI包,可以手动安装并注册丢失的dll。

要在.MSI包中使用regsvr32.exe手动注册.DLL:

首先打开您的WSI项目并转到MSI脚本。

在“执行立即执行”选项卡中的InstallFinalize之后添加“从目标执行程序”自定义操作。

当出现’从目的地执行程序’对话框时,输入:

Custom Action Name:  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) 

如果将/ s开关添加到命令行,如[SystemFolder] regsvr32.exe / s,则无需用户干预即可注册dll。

当我在64位Vista机器上进行开发时遇到了类似的问题。 我发现为了使用Microsoft Jet OleDB或FoxPro OleDB提供程序,我必须将我的.Net项目的属性设置为专门针对32位处理器,因为这些提供程序没有64位版本。

无论如何,不​​确定这是否是目标机器使用你的库存问题的一部分,但我想我会提供它。

布赖恩