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