Install.bat.cmake (216 lines of code) (raw):

@ECHO OFF REM Modifications Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. REM REM Copyright (c) 2006, 2024, Oracle and/or its affiliates. REM REM This program is free software; you can redistribute it and/or modify REM it under the terms of the GNU General Public License, version 2.0, as REM published by the Free Software Foundation. REM REM This program is designed to work with certain software (including REM but not limited to OpenSSL) that is licensed under separate terms, as REM designated in a particular file or component or in included license REM documentation. The authors of MySQL hereby grant you an additional REM permission to link the program and your derivative works with the REM separately licensed software that they have either included with REM the program or referenced in the documentation. REM REM Without limiting anything contained in the foregoing, this file, REM which is part of Connector/ODBC, is also subject to the REM Universal FOSS Exception, version 1.0, a copy of which can be found at REM https://oss.oracle.com/licenses/universal-foss-exception. REM REM This program is distributed in the hope that it will be useful, but REM WITHOUT ANY WARRANTY; without even the implied warranty of REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. REM See the GNU General Public License, version 2.0, for more details. REM REM You should have received a copy of the GNU General Public License REM along with this program; if not, write to the Free Software Foundation, Inc., REM 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA REM ######################################################### REM REM \brief Register Connector/ODBC driver with ODBC system REM REM This exists for those working with the Windows REM source distribution or with installer-less REM binary distribution. REM REM Name under which the driver should be registered REM can be specified as first parameter. It should be REM a single word (no spaces). REM REM \sa INSTALL.win REM REM ######################################################### REM # SETLOCAL prevents the variables set in this script to REM # be exported to the environment and pollute it SETLOCAL SET driver_name=%* SET driver_lib=awsmysqlodbc SET driver_lib_setup=awsmysqlodbcS SET installer=myodbc-installer SET do_pause=no Net session >nul 2>&1 IF %ERRORLEVEL% EQU 0 ( ECHO Running as Admin IF "%CD%" == "%WINDIR%\system32" ( REM When running as admin the script is in a wrong directory ECHO Changing the directory... %~d0 CD %~p0 SET do_pause=yes ) GOTO :doProcessing ) ELSE ( ECHO Requesting Admin IF "%driver_name%" == "" ( PowerShell start-process -FilePath '%~0' -verb runas ) else ( PowerShell start-process -FilePath '%~0' -ArgumentList {"%driver_name%"} -verb runas ) ) EXIT /b 1 :doProcessing IF "%~1" == "" GOTO :doFindDriver SET driver_name=%* IF NOT @DRIVERS_COUNT@ == 1 ECHO NOTE: " ANSI" or " Unicode" will be added to the driver name :doFindDriver REM # Find driver location SET libdir=none FOR %%G IN (. lib lib\release lib\relwithdebinfo lib\debug) DO CALL :subCheckLibDir %%G IF "%libdir%" == "none" GOTO :errorNoDrivers REM ECHO "libdir = %libdir%" REM # Find the installer utility REM # Try to find it in the build location CALL :subFindBinDir "%libdir%" SET myodbc_installer=%bindir%\%installer%.exe IF EXIST "%myodbc_installer%" GOTO :register REM # Try some other reasonable locations SET myodbc_installer=bin\%installer%.exe IF EXIST "%myodbc_installer%" GOTO :register SET myodbc_installer=.\%installer%.exe IF EXIST "%myodbc_installer%" GOTO :register REM # Try if it is in the path SET myodbc_installer=%installer%.exe %myodbc_installer% >nul 2>nul REM # "Command not found" generates error 9009 IF NOT ERRORLEVEL 9000 GOTO :doRegister GOTO :errorNoInstaller :register REM ECHO myodbc_installer: %myodbc_installer% REM # Abort if driver is already registered FOR %%d IN (@CONNECTOR_DRIVER_TYPE@) DO CALL :registerIfNotFound %%d REM # All is well if we got here goto :doSuccess :registerIfNotFound ECHO Registering %1 driver IF "%driver_name%" == "" SET name="MySQL ODBC @CONNECTOR_MAJOR@.@CONNECTOR_MINOR@ %1 Driver" IF NOT "%driver_name%" == "" IF NOT @DRIVERS_COUNT@ == 1 SET name="%driver_name% %1" IF %1 == Unicode SET lib=%driver_lib%w.dll IF %1 == ANSI SET lib=%driver_lib%a.dll ECHO Checking if %name% is not already registered %myodbc_installer% -d -l -n %name% 2>nul: IF NOT ERRORLEVEL 1 GOTO :errorDriverInstalled ECHO Registering %name% %myodbc_installer% -d -a -n %name% -t "DRIVER=%libdir%\%lib%;SETUP=%libdir%\%driver_lib_setup%.dll" REM # If we have error on registering 1 driver - 99.9% we will have it with other as well IF ERRORLEVEL 1 GOTO :errorRegisterDriver goto :eof REM ###### REM # A subroutine to check if given location REM # (relative to working dir) contains the drivers. REM ###### :subCheckLibDir REM # Skip check if a good libdir was already found IF NOT "%libdir%" == "none" GOTO :eof SET libdir=%CD%\%1 IF "%1" == "." ( SET libdir=%CD% ) ELSE ( SET libdir=%CD%\%1 ) IF NOT EXIST "%libdir%\%driver_lib%a.dll" GOTO :wrongLibDir IF NOT EXIST "%libdir%\%driver_lib%w.dll" GOTO :wrongLibDir IF NOT EXIST "%libdir%\%driver_lib_setup%.dll" GOTO :wrongLibDir REM ECHO Libdir (%libdir%) is OK. GOTO :eof :wrongLibDir REM ECHO Libdir (%libdir%) is wrong. SET libdir=none GOTO :eof REM ###### REM # A subroutine to compute bindir of the form REM # C:\current\working\directory\bin\XXX where XXX is REM # the last component of libdir, such as Release, Debug etc. REM # The libdir should be given as the first argument %1. REM # Construct %~n1 is used which returns the last component REM # ("file name") of the path stored in %1. REM ###### :subFindBinDir SET bindir=%CD%\bin\%~n1 GOTO :eof :doSuccess ECHO ^+-----------------------------------------------------^+ ECHO ^| DONE ^| ECHO ^+-----------------------------------------------------^+ ECHO ^| ^| ECHO ^| Hopefully things went well; the Connector/ODBC ^| ECHO ^| driver has been registered. ^| ECHO ^| ^| ECHO ^| Connector/ODBC is ready to use. ^| ECHO ^| ^| ECHO ^| The most common thing to do next is to go to the ^| ECHO ^| Control Panel and find the ODBC Administrator - ^| ECHO ^| then use it to create a Data Source Name (DSN) ^| ECHO ^| so you (and your application) can connect to a ^| ECHO ^| MySQL server. ^| ECHO ^| ^| ECHO ^| Alternatively you can use the MyODBC Installer ^| ECHO ^| utility to define data sources. ^| ECHO ^| ^| ECHO ^+-----------------------------------------------------^+ IF %do_pause% == yes PAUSE EXIT /B 0 :errorNoDrivers ECHO ^+-----------------------------------------------------^+ ECHO ^| ERROR ^| ECHO ^+-----------------------------------------------------^+ ECHO ^| ^| ECHO ^| Could not find Connector/ODBC drivers. Have you run ^| ECHO ^| this script from the installation directory? ^| ECHO ^| ^| ECHO ^+-----------------------------------------------------^+ IF %do_pause% == yes PAUSE EXIT /B 1 :errorNoInstaller ECHO ^+-----------------------------------------------------^+ ECHO ^| ERROR ^| ECHO ^+-----------------------------------------------------^+ ECHO ^| ^| ECHO ^| Could not find the MyODBC Installer utility. Run ^| ECHO ^| this script from the installation directory. ^| ECHO ^| ^| ECHO ^+-----------------------------------------------------^+ IF %do_pause% == yes PAUSE EXIT /B 1 :errorDriverInstalled ECHO ^+-----------------------------------------------------^+ ECHO ^| ERROR ^| ECHO ^+-----------------------------------------------------^+ ECHO ^| ^| ECHO ^| There is already driver registered with such name ^| ECHO ^| ^| ECHO ^+-----------------------------------------------------^+ IF %do_pause% == yes PAUSE EXIT 1 :errorRegisterDriver ECHO ^+-----------------------------------------------------^+ ECHO ^| ERROR ^| ECHO ^+-----------------------------------------------------^+ ECHO ^| ^| ECHO ^| Could not register the driver. ^| ECHO ^| ^| ECHO ^+-----------------------------------------------------^+ IF %do_pause% == yes PAUSE EXIT 1