使用 Visual Fox Pro OleDb

发布于 2024-07-16 21:27:38 字数 231 浏览 12 评论 0原文

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

I am trying to pull data from DBF files into my program using C#. I am using the Visual FoxPro OLE DB Provider. It works fine on my local machine but I want to package up my program into dll that clients can use. The problem is when they run the program from their machine it says that the Visual FoxPro OLE DB Provider isn't registered on their machine. Is there any way to use this without having the client install the Visual FoxPro OLE DB Provider on their machine?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忆沫 2024-07-23 21:27:38

简短的答案是否定的...详细的答案是:

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

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

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

The short answer is no...the long answer is:

I don't believe you can do that without installing the Visual FoxPro OLE DB Provider on each target machine. Even if you tried to use COM interop you would still have to install and register the original dll - vfpoledb.dll

By far the easiest way to solve this issue is is to get the FoxPro OleDb Driver install package from Microsoft and distribute it to your users.

If you are want to roll your own .MSI package for your library installation you can manually install and register the missing dll.

To manually register a .DLL using regsvr32.exe in a .MSI package:

First open your WSI project and go to the MSI Script.

Add an 'Execute Program from Destination' custom action after InstallFinalize in the Execute Immediate tab.

When the 'Execute Program From Destination' dialog appears enter:

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)

If you add the /s switch to the command line like [SystemFolder]regsvr32.exe /s the registration of the dll should happen without user intervention.

避讳 2024-07-23 21:27:38

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

不管怎样,不确定这是否是使用你的库的目标机器问题的一部分,但我想我会提供它。

布莱恩

I ran into a similar problem when I as developing on my 64-bit Vista machine. I found out that in order to use the Microsoft Jet OleDB or FoxPro OleDB provider I had to set the properties of my .Net project to specifically target 32-bit processors since there is no 64-bit version of these providers.

Anyway, not sure if this is part of the problem with the target machines using your libary but thought I would offer it up.

Brian

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文