VB.NETを使って作成したシステムをEXEにしようとしたのですが、最後のビルドの時点でこのようなエラーが出てしまいます。
「msadox.dll' は、リソース ファイル 'C:\Program Files\Common Files\System\ado\msadox.dll' が Windows システム ファイルの保護下にあるため、除外されるべきです。」
セットアップファイルはできていたのでインストールしてみてもデータベース接続のところでエラー「Connection Stringを初期化できませんでした」が出てしまします。上のエラーと関係あるのでしょうか? INIファイルを使っていますがそれもなにか関係があるのでしょうか??
>最後のビルドの時点でこのようなエラーが出てしまいます。
エラーは[タスク一覧]のウィンドウに出ていると思いますが、
エラーメッセージを選択状態にして[F1]キーを押すとヘルプに
飛んでもう少し詳しい説明が見れると思います。
このエラー(警告)はサービスパックやOSのバージョンなどに
よって微妙に違うシステムファイルを、インストーラが
上書きしてしまい、インストール先のシステムがサポート
してないファイルになってしまうことを注意するものです。
除外せずにインストールしてしまったようですので、もう
インストール先の端末ではファイルが上書きされてしまって
いると考えられます。
msadox.dll は ADO のオブジェクトライブラリでしょうから
最悪の場合、インストール先の msadox.dll を利用していた
アプリケーションが全て使えなくなっています。
>データベース接続のところでエラー「Connection Stringを初期化できませんでした」が出てしまします。
接続に ADO を使っているでしょうから可能性は高いです。
…もちろん、プログラミングが悪い可能性はありますが、
開発環境でのデバックは通ったんでしょ?
返信有難うございます。
msadox.dll についてはよく分かりました。
幸いなことに1台しかインストールをしていなかったので良かったです。
「Connection Stringを初期化」なのですが、
開発環境でのデバックは何の問題もなく通ります。
このような感じでDBには接続しているのですが・・・
なにかおかしいところはありますか??
Dim oConn As New OleDbConnection()
Dim oCommand As New OleDbCommand()
'DB接続文字列の設定
pass = ini.GetProfileString("info", "ConnectFile", "")
oConn.ConnectionString = pass
'コネクションの設定
oCommand.Connection = oConn
'DB接続
oConn.Open() ←この行でエラーが出てるみたいです。
passにはDB接続のデータリンクのパスをINIファイルから持ってきています。
あれ?OleDb 使ってるんだ?ADO は使う必要なし?
…まあ、いいや(^^;)
>INIファイルから持ってきています。
なんて書かれてもちゃんと接続文字列が取れてるなら
テキストファイルから取って来てもエクセルファイルから
取って来てもデータベースから取って来ても他アプリから
取って来ても何でもよろしい。
接続文字列が、開発環境で有効で、インストール先で無効な
何かを含んでるんじゃないですか?
>OleDb 使ってるんだ?
自分はてっきりADOを使って接続していると思い込んでました^^;
oConn.ConnectionString にUDLまでのパスを直接記述したらうまくいきました^^
たぶんBINフォルダにあったINIファイルもパッケージ化されてプログラムで判別するINIファイルまでのパスが変わったことによりUDLまでのパスを拾ってこれなかったと思います。
いろいろ有難うございました^^これからもなにかあったら宜しくお願いします。
ツイート | ![]() |