ユーザーのマシンに完全なクライアントをインストールするオプションがないため、Oracle Instant Client を使用して DB に接続する Windows Forms ClickOnce アプリケーションを作成しています。残念ながら、ユーザーは 32 ビット マシンと 64 ビット マシンが混在しています。アプリケーション自体は AnyCpu ですが、Oracle ライブラリはそうではありません。
現在、クライアントの 2 つのコピーを配布しています。唯一の違いは、Oracle DLL (32 ビット ユーザー用の 32 ビット DLL、および 64 ビット ユーザー用の 64 ビット DLL) です。
実験として、実行時にホスト OS のビット数を決定し、LoadLibrary を使用して DLL をロードする、別々のディレクトリに DLL の両方のセットを含むクライアントをリリースしてみました。これは機能しますが、ほんの一部です。
64 ビット システムでは、「コンピュータに oranls11.dll がないため、プログラムを開始できません」というエラー ボックスが表示されます。[OK] をクリックしてボックスを閉じると、プログラムが起動して正常に実行されます。ロードする DLL のリストに oranls11.dll を追加すると、メッセージ ボックスの2 つのコピーが次々に表示されます。
では、Oracle Instant Client をロードするより良い方法はありますか? そうでない場合、少なくともそのメッセージボックスを抑制する方法はありますか?