2011-07-22 6 views
0

私はここでクライアントPCを考えています。誰かが私のアプリケーションを起動すると、MySql Connector/ODBCがインストールされていない可能性があります。 (?望ましい)MySql Connector/ODBCがインストールされているかどうかをプログラムで検出する方法は? (必要に応じてインストールしてください)

今、私は情報だけスキーム(またはMySQLの)データベースに接続しようとすることができます - しかし、それが失敗した場合、それが唯一のデータベース・サーバがダウンしていることを意味するかもしれません。 I pingすることができますが、起動していてMySqlプロセスが現在実行されていない可能性があります。

とにかく、私はちょっとした音ではあるが、私のアプリの起動時間が著しく遅くなっても、コネクタをインストールできると思う。

最良のアプローチは何ですか?

私がインストールすると、IPアドレスが分かっているd/bサーバーでコネクタを使用できるので、Delphiからどのようにしたらいいですか?

または...現時点では、私のアプリはインストーラなしの簡単な.EXEです。 ODBCコネクタもインストールするインストールを作成する必要がありますか? (もしそうなら、誰でも良いフリーウェアは、アドウェアやツールバーのインストール)と(ビルダーのインストールをお勧めすることができますか?

を私はこれが明確であることを願っています。ないなら、私にお問い合わせください。

感謝。

+1

一度に1つの質問が複数の質問よりも優れています。インストーラーが覚えやすいならば、InnoSetupをチェックしてください。インストーラーなしで実行したいのであれば、ランタイムDLLをメイン実行可能ファイルの中のリソースとして埋め込んでおくことができます。必要です。 –

+0

+1文字。合意した、それはたぶん尋ねられた質問だったはずです。しかし、OSBCドライバはDLLではありません...私はまだそれをインストールする方法がわかりません。多分私はここでそれを検出する方法を尋ねるべきです、なぜなら私はMySqlフォーラムにインストールする方法をDelphi&ankからやりたいからです。あなたの助けをありがとう – Mawg

+0

確かに、MSIまたは他の同様の形式で使用できるMySQL Connector/ODBCの再配布可能な形式がありますか? –

答えて

6

確認するにはODBドライバを使用すると、MySQLのODBCドライバがインストールされている場合は、簡単に検出するために、Delphiの関数を書くことができ、そこから

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers 

キーこのWindowsのレジストリを確認する必要がありますインストール

{$APPTYPE CONSOLE} 

uses 
    Windows, 
    Classes, 
    Registry, 
    SysUtils; 

function ODBC_DriverInstalled(const DriverName:string) : Boolean; 
Var 
    Reg  : TRegistry; 
    Providers: TStrings; 
    i  : Integer; 
begin 
    Reg:=TRegistry.Create; 
    Result:=False; 
    try 
    Reg.RootKey:=HKEY_LOCAL_MACHINE; 
    if Reg.OpenKeyReadOnly('SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers') then 
    begin 
     Providers:=TStringList.Create; 
     try 
      Reg.GetValueNames(Providers); 
      for i := 0 to Providers.Count-1 do 
      begin 
       if CompareText(DriverName,Providers[i])=0 then 
       begin 
       Result:=True; 
       Break; 
       end; 
      end; 
     finally 
      Providers.Free; 
     end; 
    end; 
    finally 
    Reg.Free; 
    end; 
end; 



begin 
    try 
    Writeln(ODBC_DriverInstalled('MySQL ODBC 5.1 Driver')); 
    except 
    on E: Exception do 
     Writeln(E.ClassName, ': ', E.Message); 
    end; 
    Readln; 
end. 

インストールするには、inno setup(odbcドライバを確認するためにWindowsレジストリを読み取ることができます)を使用し、セットアップファイルに含まれているドライバをインストールすることができます。またダウンロードしたアドレスの1つを渡す単純なHTTP GETを使用して、あなたのアプリからドライバを直接ドンロードできます。here

+0

+1とその答え。おかげさまで、とにかく、Rudy – Mawg

+0

64ビットウィンドウでは、これは64ビットドライバのみをネットにすることに注意してください。 32ビットのドライバを見つけるには、HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ ODBC \ ODBCINST.INIを調べる必要があります。 –

1

MySQLコネクタをインストールする必要はありません。アプリケーションの実行可能ファイルと同じフォルダに、適切なdll(サーバーのバージョンによって異なる)を置くだけで済みます。私はInnoSetupのようなインストーラをお勧めします。これにより、スタートメニューのショートカットなどを追加することもできます。

関連する問題