Permalink
Browse files

Suppress errors in LoadLibrary(libmariadb.dll) on Windows XP. Instead…

…, try loading the XP-compatible libmysql.dll v5.6.6. Closes #79.
  • Loading branch information...
ansgarbecker committed Jan 9, 2018
1 parent f5d9603 commit f2da91be65b4514c45935c25e7cb9046b378759e
Showing with 8 additions and 1 deletion.
  1. +2 −1 out/heidisql.iss
  2. BIN out/libmysql32.dll
  3. BIN out/libmysql64.dll
  4. +6 −0 source/dbconnection.pas
View
@@ -77,7 +77,6 @@ Name: "activate_statistics"; Description: "Automatically report client and serve
[InstallDelete]
Type: files; Name: "{app}\libmysql40.dll"
Type: files; Name: "{app}\libmysql41.dll"
Type: files; Name: "{app}\libmysql.dll"
Type: files; Name: "{app}\{#ProgExeName}.manifest"
Type: files; Name: "{app}\{#ProgNameLower}.url"
Type: files; Name: "{app}\{#ProgNameLower}_forum.url"
@@ -91,6 +90,8 @@ Source: "license.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "gpl.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "libmariadb64.dll"; DestDir: "{app}"; DestName: "libmariadb.dll"; Check: Is64BitInstallMode; Flags: ignoreversion
Source: "libmariadb32.dll"; DestDir: "{app}"; DestName: "libmariadb.dll"; Check: not Is64BitInstallMode; Flags: ignoreversion
Source: "libmysql64.dll"; DestDir: "{app}"; DestName: "libmysql.dll"; Check: Is64BitInstallMode; Flags: ignoreversion
Source: "libmysql32.dll"; DestDir: "{app}"; DestName: "libmysql.dll"; Check: not Is64BitInstallMode; Flags: ignoreversion
Source: "libpq64.dll"; DestDir: "{app}"; DestName: "libpq.dll"; Check: Is64BitInstallMode; Flags: ignoreversion
Source: "libpq32.dll"; DestDir: "{app}"; DestName: "libpq.dll"; Check: not Is64BitInstallMode; Flags: ignoreversion
Source: "libintl-864.dll"; DestDir: "{app}"; DestName: "libintl-8.dll"; Check: Is64BitInstallMode; Flags: ignoreversion
View
BIN +4.26 MB out/libmysql32.dll
Binary file not shown.
View
BIN +4.53 MB out/libmysql64.dll
Binary file not shown.
View
@@ -2083,14 +2083,20 @@ procedure TDBConnection.DoBeforeConnect;
procedure TMySQLConnection.DoBeforeConnect;
var
msg: String;
OldErrorMode: Cardinal;
begin
// Init libmysql before actually connecting.
// Try newer libmariadb version at first, and fall back to libmysql
if LibMysqlHandle = 0 then begin
LibMysqlPath := 'libmariadb.dll';
Log(lcDebug, f_('Loading library file %s ...', [LibMysqlPath]));
// Temporarily suppress error popups while loading new library on Windows XP, see #79
OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
SetErrorMode(OldErrorMode or SEM_FAILCRITICALERRORS);
LibMysqlHandle := LoadLibrary(PWideChar(LibMysqlPath));
SetErrorMode(OldErrorMode);
if LibMysqlHandle = 0 then begin
// Win XP goes here, or users without the above library. Load an XP-compatible one here.
Log(lcDebug, f_('Could not load %s', [LibMysqlPath]));
LibMysqlPath := 'libmysql.dll';
Log(lcDebug, f_('Loading library file %s ...', [LibMysqlPath]));

0 comments on commit f2da91b

Please sign in to comment.