Script d'installation des bases pour MaNGOS
Bonjour

Si la compilation des sources de mangos et de scriptdev2 est simple et quasi automatique c'est une autre histoire en ce qui concerne la création et de l'initialisation des bases de données. Je me suis donc fait un petit script pour windows. Je le donne ici si ca peut intéresser quelqu'un...

Ce script réalise automatiquement une nouvelle installation complète des bases pour mangos à partir des fichiers sources de mangos et scriptdev2 ainsi que des fichiers sql de UDB et de UDBFR.

Prérequis

- Avoir un serveur MySQL installé (exemple wamp)
- Avoir le logiciel 7-zip installé (pour décompresser les archives UDB et UDBFR)
- Avoir récupérer les sources mangos et de scriptdev2 (voir phase II du tutorial suivant http://www.zone-emu.fr/thread-7587.html )
- Avoir télécharger préalablement via votre client svn préféré les fichiers pour UDB et UDBFR (tutorial : http://www.zone-emu.fr/thread-7374.html)

Rappel des adresses SVN :

UDB = https://unifieddb.svn.sourceforge.net/sv...ddb/trunk/
UDBFR = http://udbfr.googlecode.com/svn/trunk/



Comment utiliser le script :

- Ouvrez notepad (ou autre editeur .txt) et Copier/coller le code que je vous livre ici
- Modifier seulement les lignes de la partie "Configuration des Chemins" (en debut de code) pour les adapter à vos répertoires (evitez les espaces dans les chemins)
- sauvegarder le fichier et le renommer avec l'extension .bat
- Aller dans votre repertoire où est installé 7-zip et copier 7z.exe, le coller dans le meme repertoire que le script
- Double cliquer sur ce fichier et attendre la fin de l'installation


Problemes possibles :

Si vous avez une erreur dans le script avec un message de mysql du genre : max_allowed_packet qui est trop petit...

- Aller dans le repertoire de MySQL et trouver le fichier my.ini
- modifier les lignes suivante ou ajouter les si elles manquent :

key_buffer = 100M
max_allowed_packet = 100M
thread_stack = 50M
thread_cache_size = 8
query_cache_limit = 50M
query_cache_size = 512M

(sources : http://getmangos.com/wiki/Setting_up_MaNGOS#MySQL)

Voila, voila, n'hesitez pas si vous avez un probleme ou une erreur.

SI j'ai le temps j'essaierai d'ajouter de nouvelles fonctionnalité a ce scripts (genre la récupération automatique des svn, la compilation auto des sources et generation automatique d'un serveur, l'extraction des map, vmap et dbc, un lanceur pour wow, etc...)


[code=dos]
@echo OFF
cls
color 0A


:::-----------------------------------------------------------------------------
::: ** Configuration des Chemins **
:::
::: Cet exemple est à adapter selon l'emplacement des dossiers sur la machine
:::
::: Attention : Il ne doit pas y avoir d'espace dans les chemins des repertoires
::: sinon le script ne fonctionnera pas correctement
:::-----------------------------------------------------------------------------
set sources_mangos=C:\mangos_sources\master
set sources_scriptdev2=%sources_mangos%\src\bindings\ScriptDev2
set archive_udb=C:\mangos_files\UDB\trunk\Full_DB
set sql_udb_updates=C:\mangos_files\UDB\trunk\Updates\0.12.0_add​itions
set archive_udbfr=C:\mangos_files\UDBFR\trunk
set bin_mysql=C:\wamp\bin\mysql\mysql5.1.36\bin

:: Copier / coller l'executable 7z.exe dans le repertoire du script
set bin_7zip=7z.exe




:::-----------------------------------------------------------------------------
::: Debut du script
:::-----------------------------------------------------------------------------
:step_start
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Install auto des BDD pour MaNGOS º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.



:::-----------------------------------------------------------------------------
::: Verification des chemins et présence des executables nécéssaires
:::-----------------------------------------------------------------------------
if not exist %sources_mangos% echo Erreur, Le r‚pertoire %sources_mangos% n'existe pas & goto end_ko
if not exist %sources_scriptdev2% echo Erreur, Le r‚pertoire %sources_scriptdev2% n'existe pas & goto end_ko
if not exist %archive_udb% echo Erreur, Le r‚pertoire %archive_udb% n'existe pas & goto end_ko
if not exist %sql_udb_updates% echo Erreur, Le r‚pertoire %sql_udb_updates% n'existe pas & goto end_ko
if not exist %archive_udbfr% echo Erreur, Le r‚pertoire %archive_udbfr% n'existe pas & goto end_ko
if not exist %bin_mysql% echo Erreur, Le r‚pertoire %bin_mysql% n'existe pas & goto end_ko
if not exist %bin_mysql%\mysqld.exe echo Erreur, le fichier mysqld.exe n'existe pas dans le reperetoire %bin_mysql% & goto end_ko
if not exist %bin_mysql%\mysql.exe echo Erreur, le fichier mysql.exe n'existe pas dans le reperetoire %bin_mysql% & goto end_ko
if not exist %bin_7zip% echo Erreur, le fichier 7z.exe n'existe pas dans le reperetoire du script & goto end_ko
echo Configuration des Chemins OK !
echo.

:::-----------------------------------------------------------------------------
::: Initialisation du serveur MySQL
:::-----------------------------------------------------------------------------
:step_init_sql_server
echo Initialisation du serveur MySQL :
echo.

set /a nbTentativeLanceurMySQL=1
set /a MaxnbTentativeLanceurMySQL=3

:mysql_lanceur
if /I %nbTentativeLanceurMySQL% GTR %MaxnbTentativeLanceurMySQL% goto mysql_retry
tasklist | find "mysqld.exe" /C /i > NUL
if %errorlevel% == 0 echo - Attention : serveur MySQL deja actif ! & goto mysql_restart
echo - Demarrage du serveur MySQL...
START %bin_mysql%\mysqld.exe -u root
ping 127.0.0.1 -n 5 > NUL 2>&1
tasklist | find "mysqld.exe" /C /i > NUL
if %errorlevel% == 0 goto mysql_ok else goto mysql_restart

:mysql_restart
echo - Relance du serveur MySQL... (Tentative %nbTentativeLanceurMySQL% sur %MaxnbTentativeLanceurMySQL%)
%bin_mysql%\mysqladmin.exe -u root shutdown > NUL 2>&1
set /a nbTentativeLanceurMySQL = %nbTentativeLanceurMySQL% + 1
ping 127.0.0.1 -n 5 > NUL 2>&1
goto mysql_lanceur

:mysql_retry
echo - Impossible de lancer le serveur MySQL !!!
set /p choice=- Voulez vous reessayer ? (o/n)
if %choice% EQU o set /A nbTentativeLanceurMySQL=1 & goto mysql_lanceur else goto mysql_ko
goto mysql_ko

:mysql_ok
echo - Serveur MySQL OK
echo.
goto step_extract_tmp_files

:mysql_ko
echo - Essayer de fermer tous les processus actifs de mysqld.exe et relancer le script
goto end_ko



:::-----------------------------------------------------------------------------
::: Extraction des archives
:::-----------------------------------------------------------------------------
:step_extract_tmp_files
echo Extraction des fichiers :
echo.

:step_extract_udb
echo - Extraction des fichiers UDB...
7z.exe e -y -o%archive_udb% %archive_udb%\UDB*.zip > NUL 2>&1
if not %errorlevel% == 0 echo - Erreur lors du desarchivage de UDB & goto end_ko
goto step_extract_traduction_fr

:step_extract_traduction_fr
echo - Extraction des fichiers UDBFR...
7z.exe e -y -o%archive_udbfr%\Full_DB %archive_udbfr%\Full_DB\UDBFR*.rar > NUL 2>&1
if not %errorlevel% == 0 echo - Erreur lors du desarchivage de UDBFR & goto end_ko
echo.



:::-----------------------------------------------------------------------------
::: PARTIE INSTALL BDD
:::-----------------------------------------------------------------------------
:step_new_install_bdd
echo Installation complete des bases de donnees :
echo.


:::-----------------------------------------------------------------------------
::: Supression des Bases
:::-----------------------------------------------------------------------------
:step_drop_databases
echo - Supression des bases...
%bin_mysql%\mysqladmin.exe -u root --force drop realmd > NUL 2>&1
%bin_mysql%\mysqladmin.exe -u root --force drop characters > NUL 2>&1
%bin_mysql%\mysqladmin.exe -u root --force drop mangos > NUL 2>&1
%bin_mysql%\mysqladmin.exe -u root --force drop scriptdev2 > NUL 2>&1


:::-----------------------------------------------------------------------------
::: Création des Bases
:::-----------------------------------------------------------------------------
:step_create_databases
echo - Creation des bases...
%bin_mysql%\mysql.exe -u root < %sources_mangos%\sql\create_mysql.sql > NUL 2>&1
%bin_mysql%\mysql.exe -u root < %sources_scriptdev2%\sql\scriptdev2_create_database.sql > NUL 2>&1


:::-----------------------------------------------------------------------------
::: Création des Tables
:::-----------------------------------------------------------------------------
:step_create_tables
echo - Creation des tables...
%bin_mysql%\mysql.exe -u root characters < %sources_mangos%\sql\characters.sql > NUL 2>&1
%bin_mysql%\mysql.exe -u root realmd < %sources_mangos%\sql\realmd.sql > NUL 2>&1
REM %bin_mysql%\mysql.exe -u root mangos < %master_mangos%\sql\mangos.sql > NUL 2>&1
%bin_mysql%\mysql.exe -u root scriptdev2 < %sources_mangos%\src\bindings\ScriptDev2\sql\scriptdev2_crea​te_structure_mysql.sql > NUL 2>&1


:::-----------------------------------------------------------------------------
::: Injection de UDB dans la base mangos
:::-----------------------------------------------------------------------------
:step_inject_sql_udb_in_mangos
echo - Injection des donnees dans la base mangos... (peut prendre un peu de temps)
for %%i in (%archive_udb%\UDB*.sql) do ( %bin_mysql%\mysql.exe -u root mangos < %%i )



:::-----------------------------------------------------------------------------
::: Application des mises à jour sur les tables de mangos
:::-----------------------------------------------------------------------------
:step_update_sql_udb_core_and_pack_in_mangos
:: Recupere le no de la revision des données de la base actuellement injectées dans mangos
for /f "delims=" %%i in ('%bin_mysql%\mysql.exe --skip-column-names -e "select cache_id from db_version" -u root mangos') do set udb_rev=%%i
echo - La revision actuelle de la base udb est %udb_rev%

:: parcours les fichiers corepatch_mangos
for %%i in (%sql_udb_updates%\*corepatch_mangos*.sql) do (

REM decoupe le nom du fichier pour extraire les informations
REM exemple de fichier : 389_corepatch_mangos_9583_to_9630
for /f "tokens=1-6 delims=_" %%a in ("%%~ni") do (

REM %%a = revision_du_fichier
REM %%d = version_du_core_mangos_min
REM %%f = version_du_core_mangos_max

:: si la revision du fichier est superieur à la revision de la base
if %%a GTR %udb_rev% (
echo - Injection du fichier %%~ni
%bin_mysql%\mysql.exe -u root mangos < %%i
)
)
)

:::-----------------------------------------------------------------------------
::: Application des mises à jour sur les données de mangos
:::-----------------------------------------------------------------------------
:: parcours les fichiers updatepack_mangos
for %%i in (%sql_udb_updates%\*updatepack_mangos*.sql) do (

REM decoupe le nom du fichier pour extraire les informations
REM exemple de fichier : 389_updatepack_mangos
for /f "tokens=1 delims=_" %%a in ("%%~ni") do (

REM %%a = 389

:: si la revision du fichier updatepack est superieur ou egal a la revision min
if %%a GTR %udb_rev% (
echo - Injection du fichier %%~ni
%bin_mysql%\mysql.exe -u root mangos < %%i
)
)
)


:::-----------------------------------------------------------------------------
::: Injection des données de scriptdev2 dans scriptdev2
:::-----------------------------------------------------------------------------
:step_inject_sql_scriptdev2_in_scriptdev2
echo - Injection des donnees de scriptdev2 dans la base scriptdev2...
%bin_mysql%\mysql.exe -u root scriptdev2 < %sources_scriptdev2%\sql\scriptdev2_script_full.sql > NUL 2>&1


:::-----------------------------------------------------------------------------
::: Injection des données de scriptdev2 dans mangos
:::-----------------------------------------------------------------------------
:step_inject_sql_scriptdev2_in_mangos
echo - Injection des donnees de scriptdev2 dans la base mangos...
%bin_mysql%\mysql.exe -u root mangos < %sources_scriptdev2%\sql\mangos_scriptname_full.sql > NUL 2>&1



:::-----------------------------------------------------------------------------
::: Injection des dernieres mises à jour sur la base mangos
:::-----------------------------------------------------------------------------
:step_update_sql_mangos_core
echo - Mise a jour des tables dans la base mangos...

:: Recupere le nom du dernier fichier de MAJ injecte dans mangos
for /f "tokens=1-3 delims=_" %%i in ('%bin_mysql%\mysql.exe --skip-column-names -e "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='db_version' and ORDINAL_POSITION = 4;" -u root mangos') do (
set last_maj_ver=%%j
set last_maj_num=%%k
)
echo - La version du dernier fichier de MAJ injecte etait %last_maj_ver% avec le numero %last_maj_num%

:: Injecte dans la base mangos tous les fichier sql supérieurs à la revision actuelle
:: exemple de fichier sql : 9720_01_mangos_spell_proc_event.sql
for %%i in (%sources_mangos%\sql\updates\*mangos*.sql) do (
for /f "tokens=1,2 delims=_" %%a in ("%%~ni") do (

if %%a == %last_maj_ver% (
if %%b GTR %last_maj_num% (
echo - Injection du fichier %%~ni
%bin_mysql%\mysql.exe -u root mangos < %%i
)
)

if %%a GTR %last_maj_ver% (
echo - Injection du fichier %%~ni
%bin_mysql%\mysql.exe -u root mangos < %%i
)
)
)




:::-----------------------------------------------------------------------------
::: Application des traduction FR sur mangos et scriptdev2
:::-----------------------------------------------------------------------------
:step_translate_init
echo - Preparation des tables locales pour le patch FR...
%bin_mysql%\mysql.exe -u root mangos < %archive_udbfr%\Prepare_locales_tables.sql > NUL 2>&1

:step_translate_sql_mangos
echo - Application du patch FR sur la base mangos...
for %%i in (%archive_udbfr%\Full_DB\udbfr*mangos*.sql) do (
%bin_mysql%\mysql.exe -u root mangos < %%i > NUL 2>&1
)

:step_translate_sql_scriptdev2
echo - Application du patch FR sur la base scriptdev2...
for %%i in (%archive_udbfr%\Full_DB\udbfr*scriptdev2*.sql) do (
%bin_mysql%\mysql.exe -u root scriptdev2 < %%i > NUL 2>&1
)


:::-----------------------------------------------------------------------------
::: Supression des fichiers desarchivés
:::-----------------------------------------------------------------------------
:step_clean_tmp_files
echo.
echo Supression des fichiers temporaires...
del %archive_udb%\UDB*.sql > NUL 2>&1
del %archive_udbfr%\Full_DB\UDBFR*.sql > NUL 2>&1



:::-----------------------------------------------------------------------------
::: FIN OK
:::-----------------------------------------------------------------------------
:end_ok
echo. & echo INSTALLATION OK
goto final_step


:::-----------------------------------------------------------------------------
::: FIN ANORMALE
:::-----------------------------------------------------------------------------
:end_ko
echo. & echo INSTALLATION KO
goto final_step


:::-----------------------------------------------------------------------------
::: FIN du script
:::-----------------------------------------------------------------------------
:final_step
%bin_mysql%\mysqladmin.exe -u root shutdown > NUL 2>&1
pause
exit /B
[/code]
Euh, c'est pas une demande d'aide ça mais un tuto ?

Retourner en haut Accueil