2009-04-16 72 views
3

我正在嘗試使用C#將DBF文件中的數據導入到我的程序中。我正在使用Visual FoxPro OLE DB提供程序。它在我的本地機器上工作正常,但我想將我的程序打包到客戶端可以使用的dll中。問題是當他們從他們的機器運行程序時,它說Visual FoxPro OLE DB Provider沒有在他們的機器上註冊。沒有任何方法可以在客戶端在其計算機上安裝Visual FoxPro OLE DB提供程序的情況下使用它?使用Visual Fox Pro OleDb

回答

6

簡短的答案是否定的...長的答案是:

我不相信你能做到這一點,而無需安裝每個目標計算機上的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的註冊應該發生無需用戶干預。

3

當我在64位Vista機器上開發時,遇到了類似的問題。我發現爲了使用Microsoft Jet OleDB或FoxPro OleDB提供程序,我不得不將我的.Net項目的屬性設置爲專門針對32位處理器,因爲這些提供程序沒有64位版本。

無論如何,不​​知道這是否是目標機器使用libary的問題的一部分,但認爲我會提供它。

Brian