3

C# を使用して、DBF ファイルからプログラムにデータを取り込もうとしています。Visual FoxPro OLE DB プロバイダーを使用しています。ローカル マシンでは問題なく動作しますが、プログラムをクライアントが使用できる dll にパッケージ化したいと考えています。問題は、自分のマシンからプログラムを実行すると、Visual FoxPro OLE DB プロバイダーが自分のマシンに登録されていないと表示されることです。クライアントに Visual FoxPro OLE DB Provider をマシンにインストールさせずにこれを使用する方法はありますか?

4

2 に答える 2

6

短い答えはノーです...長い答えは次のとおりです。

Visual FoxPro OLE DB Provider を各ターゲット マシンにインストールしないと、それができないと思います。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)

[SystemFolder]regsvr32.exe /s のように /s スイッチをコマンド ラインに追加すると、ユーザーの介入なしで dll の登録が行われます。

于 2009-04-16T05:33:08.300 に答える