3

我正在尝试使用 C# 将 DBF 文件中的数据提取到我的程序中。我正在使用 Visual FoxPro OLE DB 提供程序。它在我的本地机器上运行良好,但我想将我的程序打包成客户端可以使用的 dll。问题是当他们从他们的机器上运行程序时,它说 Visual FoxPro OLE DB Provider 没有在他们的机器上注册。有没有什么方法可以在不让客户端在他们的机器上安装 Visual FoxPro OLE DB Provider 的情况下使用它?

4

2 回答 2

6

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

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

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

如果您想为您的库安装滚动您自己的 .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。

于 2009-04-16T05:33:08.300 回答
3

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

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

布赖恩

于 2009-04-16T06:28:15.077 回答