使用Visual Fox Pro OleDb

问题描述:

我正在尝试使用C#将DBF文件中的数据导入到我的程序中。我正在使用Visual FoxPro OLE DB提供程序。它在我的本地机器上工作正常,但我想将我的程序打包到客户端可以使用的dll中。问题是当他们从他们的机器运行程序时,它说Visual FoxPro OLE DB Provider没有在他们的机器上注册。没有任何方法可以在客户端在其计算机上安装Visual FoxPro OLE DB提供程序的情况下使用它?使用Visual Fox Pro OleDb

简短的答案是否定的...长的答案是:

我不相信你能做到这一点,而无需安装每个目标计算机上的Visual FoxPro OLE DB提供程序。即使你试图使用COM互操作,你仍然必须安装并注册原始DLL - vfpoledb.dll

到目前为止,解决这个问题最简单的方法是从微软得到FoxPro OleDb Driver install package并分发给你的用户。

如果您要为自己的磁带库安装推出自己的.MSI包,可以手动安装并注册缺少的dll。

要在.MSI包使用regsvr32.exe的手动注册.dll:

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

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

当“执行程序从目标”出现的对话框中输入:

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) 

如果使用/ s开关添加到像[SystemFolder]命令行的regsvr32.exe/s的DLL的注册应该发生无需用户干预。

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

无论如何,不​​知道这是否是目标机器使用libary的问题的一部分,但认为我会提供它。

Brian