2011-07-22 31 views
0

我正在考慮客戶端PC。當有人來運行我的應用程序時,他們可能沒有安裝MySql Connector/ODBC。現在如何以編程方式檢測MySql連接器/ ODBC是否已安裝? (並在需要時安裝)

,我可以只是嘗試連接的信息方案(或MySQL)數據庫(這是最好?) - 但是,如果失敗,它可能只意味着數據庫服務器已關閉。我可能會 ping它,但它可能會啓動,並且MySql進程當前沒有運行。

我想我可以只是安裝連接器,即使它聽起來馬虎,但如果這樣做會顯着減慢我的應用程序的啓動時間。

什麼是最好的方法?

當我安裝時,考慮到連接器將在d/b服務器上可用,誰知道IP地址,我該如何從Delphi執行此操作?

或...目前我的應用程序是一個簡單的.EXE,沒有安裝程序。我應該創建一個安裝ODBC連接器的安裝嗎? (如果是的話,任何人都可以推薦一個好免費安裝建設者(無廣告軟件或工具欄安裝)?

我希望這是顯而易見的。如果沒有請提問。

感謝。

+1

一次問題比多個問題要好。對於易於學習的安裝程序,請查看InnoSetup,如果您想要在沒有安裝程序的情況下運行,您可能會看到有關將您的運行時DLL嵌入到主要可執行文件中的資源的問題,如果它們可以解壓並設置,需要。 –

+0

+1 thnaks。同意,這可能應該是我的問題。但是OSBC驅動程序不是DLL ......我仍然不確定如何安裝它。也許我應該問如何在這裏檢測它,因爲我想從Delphi和Ank如何在MySql論壇上安裝它。感謝您的幫助 – Mawg

+0

當然,您可以使用MSI或其他類似形式的MySQL連接器/ ODBC的可再發行形式? –

回答

6

檢查在ODB安裝驅動程序,您必須檢查這個註冊表鍵

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

從那裏你可以很容易地編寫一個Delphi函數來檢測是否安裝MySQL的ODBC驅動程序

{$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(它可以讀取Windows註冊表,以檢查odbc驅動程序),然後安裝包含在安裝文件內的驅動程序。還可以使用簡單的HTTP GET從應用程序直接從應用程序中下載驅動程序,並通過一個下載地址位於:here

+0

+1和答案。謝謝,一如既往,Rudy – Mawg

+0

請注意,在64位窗口中,這隻會爲您提供64位驅動程序。您需要查看HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ ODBC \ ODBCINST.INI以查找32位驅動程序。 –

1

無需安裝MySQL連接器。您只需將正確的dll(取決於服務器版本)放在與您的應用程序可執行文件相同的文件夾中。我會推薦像InnoSetup這樣的安裝程序。這也可以讓你添加開始菜單快捷方式等。

相關問題