2011-07-22 30 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这样的安装程序。这也可以让你添加开始菜单快捷方式等。

相关问题