我在想这里的客户端PC。当有人来运行我的应用程序时,他们可能没有安装MySql Connector / ODBC。
现在,我可以只是尝试连接信息方案(或mysql)数据库(这是更好的?) - 但是,如果失败,它可能只意味着数据库服务器已关闭。我可以 ping它,但它可能已经启动,MySql进程当前没有运行。
我想我无论如何都可以安装连接器,即使它听起来很草率,但如果这样做会显着减慢我应用程序的启动时间,那就不行了。
最好的方法是什么?
当我安装时,我如何从Delphi中做到这一点,因为d / b服务器上的连接器是可用的,谁知道IP地址?
或者......目前我的应用程序是一个简单的.EXE,没有安装程序。我应该创建一个也安装ODBC连接器的安装吗? (如果是这样,任何人都可以推荐一个好的免费软件安装构建器(没有广告软件或工具栏安装)?
我希望这很清楚。如果没有,请问我。
感谢。
答案 0 :(得分:7)
要检查已安装的ODB驱动程序,您必须检查此Windows注册表项
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
答案 1 :(得分:1)
无需安装MySQL连接器。您只需将正确的dll(取决于服务器版本)放在与应用程序可执行文件相同的文件夹中。我会推荐像InnoSetup这样的安装程序。这也可以让你添加开始菜单快捷方式等。