diff --git a/.gitattributes b/.gitattributes
index 8d194e3cbd871d5cc37df21b8561c988db88a7d9..711de67996daa1f0aec5ce134148bdfb78f321fb 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -443,20 +443,6 @@ ecrire/inc/import_0_0.php -text
 ecrire/inc/import_1_2.php -text
 ecrire/inc/import_1_3.php -text
 ecrire/inc/informer.php -text
-ecrire/inc/install_.php -text
-ecrire/inc/install_0.php -text
-ecrire/inc/install_1.php -text
-ecrire/inc/install_2.php -text
-ecrire/inc/install_3.php -text
-ecrire/inc/install_4.php -text
-ecrire/inc/install_5.php -text
-ecrire/inc/install_6.php -text
-ecrire/inc/install_ldap1.php -text
-ecrire/inc/install_ldap2.php -text
-ecrire/inc/install_ldap3.php -text
-ecrire/inc/install_ldap4.php -text
-ecrire/inc/install_ldap5.php -text
-ecrire/inc/install_unpack.php -text
 ecrire/inc/instituer_article.php -text
 ecrire/inc/instituer_auteur.php -text
 ecrire/inc/joindre.php -text
@@ -477,6 +463,19 @@ ecrire/inc/syndic.php -text
 ecrire/inc/tourner.php -text
 ecrire/inc/utils.php -text
 ecrire/inc/virtualiser.php -text
+ecrire/install/etape_.php -text
+ecrire/install/etape_1.php -text
+ecrire/install/etape_2.php -text
+ecrire/install/etape_3.php -text
+ecrire/install/etape_4.php -text
+ecrire/install/etape_5.php -text
+ecrire/install/etape_6.php -text
+ecrire/install/etape_ldap1.php -text
+ecrire/install/etape_ldap2.php -text
+ecrire/install/etape_ldap3.php -text
+ecrire/install/etape_ldap4.php -text
+ecrire/install/etape_ldap5.php -text
+ecrire/install/etape_unpack.php -text
 ecrire/lang/ecrire_br.php -text
 ecrire/lang/ecrire_bs.php -text
 ecrire/lang/ecrire_cs.php -text
diff --git a/ecrire/exec/install.php b/ecrire/exec/install.php
index d7c342a56fe74c2c815681168e7197a0413f681c..6ab3ab3ac748df550bcc8365b7fc59897f0489ce 100644
--- a/ecrire/exec/install.php
+++ b/ecrire/exec/install.php
@@ -18,7 +18,7 @@ define('_FILE_TMP', '_install');
 // http://doc.spip.org/@exec_install_dist
 function exec_install_dist()
 {
-	global $etape;
+	$etape = _request('etape');
 	if (_FILE_CONNECT && $etape != 'unpack') 
 		minipres(_T('avis_espace_interdit'));
 	else {
@@ -34,7 +34,7 @@ function exec_install_dist()
 	include_spip('base/create');
 	include_spip('base/db_mysql');
 
-	$fonc = charger_fonction("install_$etape", 'inc');
+	$fonc = charger_fonction("etape_$etape", 'install');
 	$fonc();
 	}
 }
diff --git a/ecrire/inc/install_.php b/ecrire/inc/install_.php
deleted file mode 100644
index 64b5d1841e8e7d473470438b3081ffe0aef0cb9d..0000000000000000000000000000000000000000
--- a/ecrire/inc/install_.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-/***************************************************************************\
- *  SPIP, Systeme de publication pour l'internet                           *
- *                                                                         *
- *  Copyright (c) 2001-2006                                                *
- *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
- *                                                                         *
- *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
- *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
-\***************************************************************************/
-
-// http://doc.spip.org/@inc_install_
-function inc_install_()
-{
-	global $spip_lang_right;
-
-	$menu_langues = menu_langues('var_lang_ecrire');
-	if (!$menu_langues)
-		redirige_par_entete(generer_url_action('test_dirs'));
-	else {
-		install_debut_html();
-	
-		echo "<p align='center'><img src='" . _DIR_IMG_PACK . "logo-spip.gif'></p>",
-		  "<p style='text-align: center; font-family: Verdana,Arial,Sans,sans-serif; font-size: 10px;'>",
-		 info_copyright(),
-		  "</p>",
-		  "<p>" . _T('install_select_langue'),
-		  "<p><div align='center'>",
-		  $menu_langues,
-		  "</div>",
-		  "<p><form action='", generer_url_action('test_dirs'),
-		  "'>",
-		  '<input type="hidden" name="action" value="test_dirs" />',
-		  "<div align='$spip_lang_right'><input type='submit' class='fondl'  VALUE='",
-		  _T('bouton_suivant'),
-		  " >>'>",
-		  "</form>";
-		install_fin_html();
-	}
-}
-
-?>
\ No newline at end of file
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 919a73fbd4bd414ac25abe9e5325a4becb7a9f29..3d084bb15e80ab3ae58db9a0f681c1c385b9504d 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -47,15 +47,17 @@ function charger_fonction($nom, $dossier='exec', $continue=false) {
 	if (!preg_match(',^\w+$,', $nom))
 		redirige_par_entete('./');
 
-	if (substr($dossier,-1) == '/') $dossier = substr($dossier,0,-1);
+	if (substr($dossier,-1) != '/') $dossier .= '/';
 	// Si la fonction existe deja (definie par mes_options, par exemple)
 	
-	if (function_exists($f = $dossier.'_'.$nom)) return $f;
-	if (function_exists($g = $f . '_dist'))	return $g;
+	if (function_exists($f = str_replace('/','_',$dossier) . $nom))
+		return $f;
+	if (function_exists($g = $f . '_dist'))
+		return $g;
 
 	// Sinon charger le fichier de declaration
 	// passer en minuscules (cf les balises de formulaires)
-	$inc = include_spip($dossier.'/'. strtolower($nom));
+	$inc = include_spip($d = ($dossier . strtolower($nom)));
 
 	if (function_exists($f)) return $f;
 	if (function_exists($g)) return $g;
@@ -63,12 +65,12 @@ function charger_fonction($nom, $dossier='exec', $continue=false) {
 	if ($continue) return false;
 
 	// Echec : message d'erreur
-	spip_log("fonction $nom indisponible" .
-		($inc ? "" : "(fichier $dossier/$nom absent)"));
+	spip_log("fonction $nom ($f ou $g) indisponible" .
+		($inc ? "" : " (fichier $d absent)"));
 
 	include_spip('inc/minipres');
 	minipres(_T('forum_titre_erreur'),
-		 _T('fichier_introuvable', array('fichier'=> '<b>'.htmlentities("$dossier/$nom").'</b>')));
+		 _T('fichier_introuvable', array('fichier'=> '<b>'.htmlentities($d).'</b>')));
 }
 
 //
diff --git a/ecrire/inc/install_0.php b/ecrire/install/etape_.php
similarity index 98%
rename from ecrire/inc/install_0.php
rename to ecrire/install/etape_.php
index 69a29142a15d7c9c9383f2b1028c6afb668ef639..f29780de63af208382a973d026fd4bed6ce706e8 100644
--- a/ecrire/inc/install_0.php
+++ b/ecrire/install/etape_.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_
-function inc_install_()
+function install_etape__dist()
 {
 	global $spip_lang_right;
 
diff --git a/ecrire/inc/install_1.php b/ecrire/install/etape_1.php
similarity index 98%
rename from ecrire/inc/install_1.php
rename to ecrire/install/etape_1.php
index bf9b4381a263a5895b0e454f9e6963d6463c7a6f..885a82dd8c3765f78259d0b17effcf1259889ea3 100644
--- a/ecrire/inc/install_1.php
+++ b/ecrire/install/etape_1.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_1
-function inc_install_1()
+function install_etape_1_dist()
 {
 	global $spip_lang_right;
 
diff --git a/ecrire/inc/install_2.php b/ecrire/install/etape_2.php
similarity index 98%
rename from ecrire/inc/install_2.php
rename to ecrire/install/etape_2.php
index afc1ba9d6a807a2f79580e405eecc65618eda5c3..1fc3f41f80122a5c89495bca6e85e3bcca02365b 100644
--- a/ecrire/inc/install_2.php
+++ b/ecrire/install/etape_2.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_2
-function inc_install_2()
+function install_etape_2_dist()
 {
 	global $adresse_db, $login_db, $pass_db, $spip_lang_right;
 
diff --git a/ecrire/inc/install_3.php b/ecrire/install/etape_3.php
similarity index 99%
rename from ecrire/inc/install_3.php
rename to ecrire/install/etape_3.php
index 8a1a249fb597d869910389c757267c7a79508b19..ffc2a694dce11290a316957061bd2923a8c25aa1 100644
--- a/ecrire/inc/install_3.php
+++ b/ecrire/install/etape_3.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_3
-function inc_install_3()
+function install_etape_3_dist()
 {
 	global $adresse_db, $login_db, $pass_db, $spip_lang_right;
 
diff --git a/ecrire/inc/install_4.php b/ecrire/install/etape_4.php
similarity index 99%
rename from ecrire/inc/install_4.php
rename to ecrire/install/etape_4.php
index 748c855a6a21ecdb84259147543a306e24c72043..9dae166ded49c25b7775544a31f051e93386f222 100644
--- a/ecrire/inc/install_4.php
+++ b/ecrire/install/etape_4.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_4
-function inc_install_4()
+function install_etape_4_dist()
 {
 	global $adresse_db, $choix_db, $login_db, $pass_db, $spip_lang_right, $spip_version, $table_new;
 
diff --git a/ecrire/inc/install_5.php b/ecrire/install/etape_5.php
similarity index 98%
rename from ecrire/inc/install_5.php
rename to ecrire/install/etape_5.php
index 34679e43115ec6eda1b4b254f0afa0debf300802..3aff37a5e0104150005fb8f8cec4ead8adbb2268 100644
--- a/ecrire/inc/install_5.php
+++ b/ecrire/install/etape_5.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_5
-function inc_install_5()
+function install_etape_5_dist()
 {
 	global $email, $ldap_present, $login, $nom, $pass, $spip_lang_right;
 
diff --git a/ecrire/inc/install_6.php b/ecrire/install/etape_6.php
similarity index 99%
rename from ecrire/inc/install_6.php
rename to ecrire/install/etape_6.php
index 60a4454120ca2f1a3437b941b6af6c028031fc8b..cfe9f9357d5265d28cf1804e77871ad387d2c700 100644
--- a/ecrire/inc/install_6.php
+++ b/ecrire/install/etape_6.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_6
-function inc_install_6()
+function install_etape_6_dist()
 {
 	global $email,$login,$nom,$pass,$spip_lang_right;
 
diff --git a/ecrire/inc/install_ldap1.php b/ecrire/install/etape_ldap1.php
similarity index 98%
rename from ecrire/inc/install_ldap1.php
rename to ecrire/install/etape_ldap1.php
index 6bdc5d9417df121d30efdb4c5dbdabadabc36cc8..e77a2510a1cd7cba5fa10797271f38f4bd4e977d 100644
--- a/ecrire/inc/install_ldap1.php
+++ b/ecrire/install/etape_ldap1.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_ldap1
-function inc_install_ldap1()
+function install_etape_ldap1_dist()
 {
 	global $spip_lang_right;
 
@@ -82,4 +82,4 @@ function inc_install_ldap1()
 	install_fin_html();
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/ecrire/inc/install_ldap2.php b/ecrire/install/etape_ldap2.php
similarity index 98%
rename from ecrire/inc/install_ldap2.php
rename to ecrire/install/etape_ldap2.php
index a0eb6e1008eb1edc61f4e165256c826e3e5a4730..00208de272967d38b9b0ea36d41445a2c2cd993c 100644
--- a/ecrire/inc/install_ldap2.php
+++ b/ecrire/install/etape_ldap2.php
@@ -12,7 +12,7 @@
 
 
 // http://doc.spip.org/@inc_install_ldap2
-function inc_install_ldap2()
+function install_etape_ldap2_dist()
 {
 	global $adresse_ldap, $login_ldap, $pass_ldap, $port_ldap, $tls_ldap, $protocole_ldap, $spip_lang_right;
 
diff --git a/ecrire/inc/install_ldap3.php b/ecrire/install/etape_ldap3.php
similarity index 98%
rename from ecrire/inc/install_ldap3.php
rename to ecrire/install/etape_ldap3.php
index c6b650c6d2c0e6666f3b2171ba64a93871e01a1a..61c6a56506bd654bdf7fe25cc0e9c30896f4f4cf 100644
--- a/ecrire/inc/install_ldap3.php
+++ b/ecrire/install/etape_ldap3.php
@@ -12,7 +12,7 @@
 
 
 // http://doc.spip.org/@inc_install_ldap3
-function inc_install_ldap3()
+function install_etape_ldap3_dist()
 {
 	global $adresse_ldap, $login_ldap, $pass_ldap, $port_ldap, $tls_ldap, $protocole_ldap, $spip_lang_right;
 
@@ -79,4 +79,4 @@ function inc_install_ldap3()
 }
 
 
-?>
\ No newline at end of file
+?>
diff --git a/ecrire/inc/install_ldap4.php b/ecrire/install/etape_ldap4.php
similarity index 98%
rename from ecrire/inc/install_ldap4.php
rename to ecrire/install/etape_ldap4.php
index dc8a8f20208b721b4cc31ad0c8383731ff073257..6eeaa90dd1b337fb937a2316e27469580349bcb7 100644
--- a/ecrire/inc/install_ldap4.php
+++ b/ecrire/install/etape_ldap4.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_ldap4
-function inc_install_ldap4()
+function install_etape_ldap4_dist()
 {
 	global $adresse_ldap, $login_ldap, $pass_ldap, $port_ldap, $tls_ldap, $protocole_ldap, $base_ldap, $base_ldap_text, $spip_lang_right;
 
@@ -76,4 +76,4 @@ function inc_install_ldap4()
 
 	install_fin_html();
 }
-?>
\ No newline at end of file
+?>
diff --git a/ecrire/inc/install_ldap5.php b/ecrire/install/etape_ldap5.php
similarity index 97%
rename from ecrire/inc/install_ldap5.php
rename to ecrire/install/etape_ldap5.php
index 43ddbb3321a04826b61ac0c781f73e0f24ea204b..d1531b16175c48db74648fd84fd3fe276cd67da4 100644
--- a/ecrire/inc/install_ldap5.php
+++ b/ecrire/install/etape_ldap5.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 // http://doc.spip.org/@inc_install_ldap5
-function inc_install_ldap5()
+function install_etape_ldap5_dist()
 {
 	global $spip_lang_right, $statut_ldap;
 
@@ -39,4 +39,4 @@ function inc_install_ldap5()
 	echo "</FORM>";
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/ecrire/inc/install_unpack.php b/ecrire/install/etape_unpack.php
similarity index 97%
rename from ecrire/inc/install_unpack.php
rename to ecrire/install/etape_unpack.php
index cb29dac37c2f6ab50918107eca4a806de2f21184..495db244ce85769b06d387af69c4d867f0ed9267 100644
--- a/ecrire/inc/install_unpack.php
+++ b/ecrire/install/etape_unpack.php
@@ -14,7 +14,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/actions');
 
 // http://doc.spip.org/@inc_install_unpack
-function inc_install_unpack()
+function install_etape_unpack_dist()
 {
   global  $connect_id_auteur;
 
@@ -35,4 +35,4 @@ function inc_install_unpack()
     redirige_par_entete(generer_action_auteur('loader','','',true));
 }
 
-?>
\ No newline at end of file
+?>