diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php
index b4ce4b4e78a81a4553a70d7edadec392cb3b884c..7355760181332dcda15e420c6c2eb05214e82691 100644
--- a/htdocs/install/repair.php
+++ b/htdocs/install/repair.php
@@ -39,10 +39,10 @@ error_reporting(0);
 @set_time_limit(120);
 error_reporting($err);
 
-$setuplang=isset($_POST["selectlang"])?$_POST["selectlang"]:(isset($_GET["selectlang"])?$_GET["selectlang"]:'auto');
+$setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto';
 $langs->setDefaultLang($setuplang);
-$versionfrom=isset($_GET["versionfrom"])?$_GET["versionfrom"]:'';
-$versionto=isset($_GET["versionto"])?$_GET["versionto"]:'';
+$versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]);
+$versionto=GETPOST("versionto",'',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]);
 
 $langs->load("admin");
 $langs->load("install");
@@ -147,9 +147,7 @@ print '<tr><td colspan="2">'.$langs->trans("PleaseBePatient").'</td></tr>';
 flush();
 
 
-/*
- *	Load sql files
-*/
+// Run repair SQL file
 if ($ok)
 {
     $dir = "mysql/migration/";
@@ -178,7 +176,7 @@ if ($ok)
         }
     }
 
-    // Boucle sur chaque fichier
+    // Loop on each file
     foreach($filelist as $file)
     {
         print '<tr><td nowrap>';
@@ -191,7 +189,7 @@ if ($ok)
     }
 }
 
-
+// Run purge of directory
 if (GETPOST('purge'))
 {
     $conf->setValues($db);
@@ -317,11 +315,6 @@ print '</table>';
 
 
 
-
-if ($db->connected) $db->close();
-
-
-
 if (empty($actiondone))
 {
     print '<div class="error">'.$langs->trans("ErrorWrongParameters").'</div>';
@@ -334,4 +327,8 @@ print '</a></center>';
 
 pFooter(1,$setuplang);
 
-?>
+if ($db->connected) $db->close();
+
+// Return code if ran from command line
+if (! $ok && isset($argv[1])) exit(1);
+?>
\ No newline at end of file
diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php
index 98a97dc35063b8f8e12c6fde8232f4bc988e4bfd..22c69ac4f993c5aa71939826a8bf6b579f6e446c 100644
--- a/htdocs/install/upgrade.php
+++ b/htdocs/install/upgrade.php
@@ -42,10 +42,10 @@ error_reporting(0);
 @set_time_limit(120);
 error_reporting($err);
 
-$setuplang=isset($_POST["selectlang"])?$_POST["selectlang"]:(isset($_GET["selectlang"])?$_GET["selectlang"]:'auto');
+$setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto';
 $langs->setDefaultLang($setuplang);
-$versionfrom=isset($_POST["versionfrom"])?$_POST["versionfrom"]:(isset($_GET["versionfrom"])?$_GET["versionfrom"]:'');
-$versionto=isset($_POST["versionto"])?$_POST["versionto"]:(isset($_GET["versionto"])?$_GET["versionto"]:'');
+$versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]);
+$versionto=GETPOST("versionto",'',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]);
 
 $langs->load("admin");
 $langs->load("install");
@@ -64,11 +64,11 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial
  * View
  */
 
-pHeader('',"upgrade2",isset($_REQUEST['action'])?$_REQUEST['action']:'','versionfrom='.$versionfrom.'&versionto='.$versionto);
+pHeader('',"upgrade2",GETPOST('action'),'versionfrom='.$versionfrom.'&versionto='.$versionto);
 
 $actiondone=0;
 
-// Action to launch the repair or migrate script
+// Action to launch the migrate script
 if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
 {
     $actiondone=1;
@@ -77,7 +77,7 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
 
     if (! $versionfrom && ! $versionto)
     {
-        print '<div class="error">Parameter versionfrom or version to missing. Upgrade is launched from page install/index.php (like a first install) instead of install/upgrade.php</div>';
+        print '<div class="error">Parameter versionfrom or versionto missing. Upgrade is launched from page install/index.php (like a first install) instead of install/upgrade.php</div>';
         exit;
     }
 
@@ -245,7 +245,7 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
             					MAIN_DB_PREFIX.'c_methode_commande_fournisseur',   // table renamed
     		                    MAIN_DB_PREFIX.'c_input_method'
             );
-            
+
             $listtables = $db->DDLListTables($conf->db->name,'');
             foreach ($listtables as $val)
             {
@@ -353,4 +353,8 @@ if (empty($actiondone))
 
 pFooter(! $ok && empty($_GET["ignoreerrors"]),$setuplang);
 
-?>
+if ($db->connected) $db->close();
+
+// Return code if ran from command line
+if (! $ok && isset($argv[1])) exit(1);
+?>
\ No newline at end of file
diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php
index bb4d872f75b7d42ff268b754064b45ceb9f771b1..6c4ab5bac1ba5fd706f89920621602ee016020cc 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2005      Marc Barilley / Ocebo <marc@ocebo.com>
- * Copyright (C) 2005-2010 Laurent Destailleur   <eldy@users.sourceforge.net>
+ * Copyright (C) 2005-2012 Laurent Destailleur   <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2011 Regis Houssin         <regis@dolibarr.fr>
  * Copyright (C) 2010      Juanjo Menent         <jmenent@2byte.es>
  *
@@ -50,10 +50,10 @@ error_reporting(0);
 @set_time_limit(120);
 error_reporting($err);
 
-$setuplang=isset($_POST['selectlang'])?$_POST['selectlang']:(isset($_GET['selectlang'])?$_GET['selectlang']:'auto');
+$setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto';
 $langs->setDefaultLang($setuplang);
-$versionfrom=isset($_POST["versionfrom"])?$_POST["versionfrom"]:(isset($_GET["versionfrom"])?$_GET["versionfrom"]:'');
-$versionto=isset($_POST["versionto"])?$_POST["versionto"]:(isset($_GET["versionto"])?$_GET["versionto"]:'');
+$versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]);
+$versionto=GETPOST("versionto",'',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]);
 
 $langs->load('admin');
 $langs->load('install');
@@ -342,6 +342,12 @@ else
 
 pFooter($error,$setuplang);
 
+if ($db->connected) $db->close();
+
+// Return code if ran from command line
+if ($error && isset($argv[1])) exit(1);
+
+
 
 /**
  * Reporte liens vers une facture de paiements sur table de jointure (lien n-n paiements factures)
@@ -3691,4 +3697,4 @@ update llx_facture set paye=1, fk_statut=2 where close_code is null
 and rowid in (...)
 */
 
-?>
+?>
\ No newline at end of file