我正在尝试使用C#将DBF文件中的数据提取到我的程序中。我正在使用Visual FoxPro OLE DB提供程序。它在我的本地机器上工作正常,但我想将我的程序打包成客户端可以使用的DLL。问题是当他们从他们的机器运行程序时,它说Visual FoxPro OLE DB提供程序没有在他们的机器上注册。有没有办法在没有客户端在他们的机器上安装Visual FoxPro OLE DB提供程序的情况下使用它?
答案 0 :(得分:6)
简短的回答是否定的......答案很长:
如果不在每台目标计算机上安装Visual FoxPro OLE DB提供程序,我不相信你能做到这一点。即使您尝试使用COM互操作,您仍然需要安装并注册原始dll - vfpoledb.dll
到目前为止,解决此问题的最简单方法是从Microsoft获取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。
答案 1 :(得分:3)
当我在64位Vista机器上进行开发时遇到了类似的问题。我发现为了使用Microsoft Jet OleDB或FoxPro OleDB提供程序,我必须将我的.Net项目的属性设置为专门针对32位处理器,因为这些提供程序没有64位版本。
无论如何,不确定这是否是使用你的图书馆的目标机器的问题的一部分,但我想我会提供它。
布赖恩