Header image
Jean-René DANIS
&

 

   Retour à Script d'installation silencieuse                

  


Scripts d'installation silencieuse et de personnalisation
FileZilla 3.2.3.1

 

Voici un script qui permet d'installer FileZilla 3.2.3.1 sans assistance en Kixtart.
Point supplémentaires :

-Le script désinstall les anciennes version de Filezilla
-Le script ajout une liste de sites FTP dans le gestionnaires de site et modifie les modes de transfert : passif/actif
pour cela il faut modifier les tableaux de variable citués au début du script lignes 14 à 17.

Paramètre de ligne de commande pour une installation silentieuse : FileZilla_3.2.3.1_win32-setup.exe /S
Paramètre de ligne de commande pour une désinstallation silentieuse : %Dossier_d_install%\uninstall.exe /S

Principe

Mettre les 3 fichiers suivants dans le même dossier :

FileZilla_3.2.3.1_win32-setup.exe (ce fichier peut être télechargé sur le site de Filezilla : http://filezilla-project.org/ )
install.bat : décrit ci-dessous
FileZilla_3.2.3.1_win32.kix : décrit ci-dessous

Pour installer et parametrer FileZilla 3.2.3.1 de manière silencieuse : double cliquer sur install.bat

Détail des scripts nécessaires

Contenu du fichier install.bat

Prompt $H
cls
@echo OFF

@echo .................................
@echo INSTALLATION DE FileZilla 3.2.3.1
@echo JEAN-RENE DANIS 03/04/09
@echo .................................


IF NOT EXIST %WINDIR%\system32\kix32.exe (
    @echo ......................................................................
    @echo CE SCRIPT NECESSITE LA PRESENCE DU FICHIER %WINDIR%\system32\kix32.exe
    @echo VOUS POUVEZ LE TELECHARGER ET LE COPIER A PARTIR DU SITE WEB :
    @echo www.kixtart.org
    @echo ......................................................................
    pause
) ELSE (
    @echo ON
    kix32 FileZilla_3.2.3.1_win32.kix
)
Prompt




Contenu du fichier FileZilla_3.2.3.1_win32.kix (télécharger ce script en pdf couleur ici)

;installation de FileZilla 3.2.3.1 à partir du fichier FileZilla_3.2.3.1_win32-setup.exe
;Modification des paramètres par défauts de FileZilla : langue, mode de transfert FTP passif ou actif)
;Ajout d'une liste de sites dans le "Gestionnaire de sites"
;JEAN-RENE DANIS 03/04/09 www.jrdanis.com

;Liste des variable(s)
;variable qui définit l'emplacement du fichier log
$DossierDeLog = "%systemdrive%\install\log\"
;variable qui définit la destination temporaire :
$dossierprov = '%systemdrive%\install'
;variable qui définit le dossier de 7Zip ou se trouve 7z.exe :
$SEI_7Z = '%SYSTEMDrive%\Program Files\7-Zip'

;Liste des sites à créer dans le gestionnaire de sites de FileZilla
$TableauDesTitres=     "SEI AIX-LES-BAINS",    "SEI CASABLANCA",            "SEI CRISSEY",      "SEI DARDILLY",    "SEI MOIRANS"
$TableauDesAdr=     "172.18.83.10",            "ftp.seicasablanca.com",    "172.18.27.10",      "172.18.31.10",    "172.18.103.10"
$TableauDesMode=     "0",                    "3",                        "0",              "0",                "0"

;Création du dossier pour mettre le fichier log si ce dossier n'existe pas
IF NOT EXIST ($DossierDeLog)
   MD $DossierDeLog
ENDIF

;Ouverture du fichier log et redirection des messages
IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
   ?? "Ouverture de @SCRIPTNAME à @TIME"
ELSE
   ? "Impossible de créer le fichier log"
   GOTO "finerreur"
ENDIF

;determine le chemin du dossiers "program files" pour les applications 32 bits
;Dans le cas d'un système d'exploitation 64 bits : les applications 32 bits sont dans le dossiers ProgramFilesDir (x86).
$PRGDIR=readvalue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion","ProgramFilesDir (x86)")
IF $PRGDIR =""
    ;Si ProgramFilesDir (x86) n'exite pas : c'est que le sysème d'exploitation est 32bits, dans ce cas les applications 32bits sont dans le dossier ProgramFilesDir.
    $PRGDIR=readvalue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion","ProgramFilesDir")
ENDIF
? 'Chemin du dossiers "program files" pour les applications 32bits : $PRGDIR'

;determine le chemin du menu démarrer\programmes de tous les utilisateurs
$ALLUSERPRG=readvalue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Common Programs")
? "Chemin du menu démarrer\programmes : " + $ALLUSERPRG

;determine le chemin du dossier de "default user"
cd "%USERPROFILE%"
cd ".."
cd "Default User\"
$DEFUSERHOME=@CURDIR
? "Chemin du dossier de 'default user' : $DEFUSERHOME"

cd @SCRIPTDIR\

;verifie la présence de 7zip
IF EXIST ($SEI_7Z)
    ? "$SEI_7Z existe."
ELSE
    ? "L'installation necessite un logiciel de décompression."
    ? "$SEI_7Z n'esiste pas, installez le puis recommencer."
   GOTO "finerreur"
ENDIF

;Verifie si le programme a déjà été installé par le setup de filezilla
$CleRegistreFileZilla = KeyExist("HKLM\SOFTWARE\FileZilla Client")
If $CleRegistreFileZilla
   ? "Une clé de registre FileZilla FTP Client a été trouvé, lecture des informations : dossier d'installation et version existante de FileZilla FTP Client"
   $DossierInstallFileZilla = READVALUE ("HKLM\SOFTWARE\FileZilla Client", "")
   $VersionFileZillaExistant = READVALUE ("HKLM\SOFTWARE\FileZilla Client", "Version")
   ? "Une version est installée : $DossierInstallFileZilla : $VersionFileZillaExistant"
Endif

;Tentative de désinstallation de l'ancienne version
$prgatester = "$DossierInstallFileZilla\filezilla.exe"
IF EXIST ($prgatester)
    ? "Le programme est déjà installé : tentative de déinstallation automatique"
    IF EXIST ("$DossierInstallFileZilla\uninstall.exe")
        ; désinstallation du programme FileZilla FTP Client
        $commande = '"$DossierInstallFileZilla\uninstall.exe" /S'
        ? $commande
        shell '%COMSPEC% /c ' + $commande
        IF @ERROR <> 0
           ? "Erreur n° " + @ERROR
           ? "La désinstallation a échouée : il faut faire une désinstallation manuelle"
           GOTO "finerreur"
        ENDIF
    ENDIF
    ; attends la fin de la désinstallation
    $UninstallFileZillaExist = 0
    WHILE $UninstallFileZillaExist = 0
        sleep 5
        IF NOT EXIST ("$DossierInstallFileZilla\uninstall.exe")
            $UninstallFileZillaExist = 1
        ENDIF
    LOOP
    sleep 5
    IF EXIST ("$ALLUSERPRG\FileZilla FTP Client")
        ;effacement d'un dossier du menu démarrer
        DELPROGRAMGROUP ("FileZilla FTP Client",1)
        IF NOT EXIST ("$ALLUSERPRG\FileZilla FTP Client")
           ? "Le dossier : $ALLUSERPRG\FileZilla FTP Client a été supprimé"
        ELSE
           ? "Le dossier : $ALLUSERPRG\FileZilla FTP Client n'a pas été supprimé complétement"
        ENDIF
    ENDIF
    IF EXIST ("$ALLUSERPRG\Utilitaires\FileZilla FTP Client")
        MOVE "$ALLUSERPRG\Utilitaires\FileZilla FTP Client\" "$ALLUSERPRG\FileZilla FTP Client\"
        DELPROGRAMGROUP ("FileZilla FTP Client",1)
        IF NOT EXIST ("$ALLUSERPRG\FileZilla FTP Client")
          ? "Le dossier : $ALLUSERPRG\Utilitaires\FileZilla FTP Client a été supprimé"
        ELSE
          ? "Le dossier : $ALLUSERPRGVideoLAN ou  $ALLUSERPRG\Utilitaires\FileZilla FTP Client n'a pas été supprimé complétement"
        ENDIF
     ENDIF
ELSE
   ? "Le programme n'est pas déjà installé : lancement de l'installation."
ENDIF


;Si le programme existe encore c'est qu'il n'a pas été installé par le setup
;désinstallation manuelle
$DossierFZ="$PRGDIR\FileZilla"
If EXIST ($DossierFZ)

    ? "Le logiciel a été trouvé dans le dossier : $DossierFZ"
    ? "Une version est déjà installée sur votre ordinateur."
    ? "Le programme va supprimer l'installation existante et les raccourcis"
    
    ; suppression du dossier Filezilla présent dans %programesfiles%
    IF EXIST ($DossierFZ)
        $dossierasupprimer = $DossierFZ
        del $dossierasupprimer  + "\*.*" /c /f /s
        rd $dossierasupprimer /s
        IF NOT EXIST ($dossierasupprimer)
            ? "Le dossier : " + $dossierasupprimer + " a été supprimé"
        ELSE
            ? "Le dossier : " + $dossierasupprimer + " n'a pas été supprimé complétement"
            GOTO "finerreur"
        ENDIF
    ENDIF
    
    ;suppression des raccourcis des anciennes version
    IF EXIST ("$ALLUSERPRG\FileZilla.lnk")
        del "$ALLUSERPRG\FileZilla.lnk" /c /f /s
        IF NOT EXIST ("$ALLUSERPRG\FileZilla.lnk")
           ? "Le fichier : $ALLUSERPRG\FileZilla.lnk a été supprimé"
        ELSE
           ? "Le fichier : $ALLUSERPRG\FileZilla.lnk n'a pas été supprimé"
        ENDIF
    ENDIF
    IF EXIST ("$ALLUSERPRG\Utilitaires\FileZilla.lnk")
        del "$ALLUSERPRG\FileZilla.lnk" /c /f /s
        IF NOT EXIST ("$ALLUSERPRG\Utilitaires\FileZilla.lnk")
           ? "Le fichier : $ALLUSERPRG\Utilitaires\FileZilla.lnk a été supprimé"
        ELSE
           ? "Le fichier : $ALLUSERPRG\Utilitaires\FileZilla.lnk n'a pas été supprimé"
        ENDIF
    ENDIF
    
Endif

;installation du programme
$commande = 'FileZilla_3.2.3.1_win32-setup.exe /S'
? $commande
shell '%COMSPEC% /c ' + $commande
IF @ERROR <> 0
   ? "Erreur n° " + @ERROR
   GOTO "finerreur"
ENDIF

;Si le dossier "menu démarrer\Utilitaires" n'existe : le créer
If AddProgramGroup("Utilitaires", 1) = 0
   ? "Dossier Menu démarrer\Utilitaires créé...."
Endif

;Déplacement du raccourci dans dossier "menu démarrer\utilitaires"
? "Organisation des raccourcis"
MOVE $ALLUSERPRG + '\FileZilla FTP Client' $ALLUSERPRG + "\Utilitaires\FileZilla FTP Client\"



; Personalisation des paramètres de Filezilla pour les nouveaux profils
; Création du dossier où se situe le fichiers de paramètre :
MD "$DEFUSERHOME\application data\FileZilla\"
IF EXIST ("$DEFUSERHOME\application data\FileZilla\filezilla.xml")
    DEL "$DEFUSERHOME\application data\FileZilla\filezilla.xml" /f /h
ENDIF
IF RedirectOutput("$DEFUSERHOME\application data\FileZilla\filezilla.xml") = 0
    ? '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>'
    ? '<FileZilla3>'
    ? '    <Settings>'
    ? '        <Setting name="Use Pasv mode" type="number">0</Setting>'            ; Désactivation du mode passif
    ? '        <Setting name="Greeting version" type="string">3.2.0</Setting>'    ; Désactivation du message de bienvenue
    ? '    </Settings>'
    ? '</FileZilla3>'
    ;Reprise du fichier log et redirection des messages
    IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
       ? "Fichier créé : $DEFUSERHOME\application data\FileZilla\filezilla.xml"
    ELSE
       GOTO "finerreur"
    ENDIF
ELSE
   ? "Impossible de créer le fichier $DEFUSERHOME\application data\FileZilla\filezilla.xml"
ENDIF

; Personalisation des paramètres de Filezilla pour le profil Courrant
; Création du dossier où se situe le fichiers de paramètre :
MD "%USERPROFILE%\application data\FileZilla\"
IF EXIST ("%USERPROFILE%\application data\FileZilla\filezilla.xml")
    DEL "%USERPROFILE%\application data\FileZilla\filezilla.xml" /f /h
ENDIF
IF RedirectOutput("%USERPROFILE%\application data\FileZilla\filezilla.xml") = 0
    ? '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>'
    ? '<FileZilla3>'
    ? '    <Settings>'
    ? '        <Setting name="Use Pasv mode" type="number">0</Setting>'            ; Désactivation du mode passif
    ? '        <Setting name="Greeting version" type="string">3.2.0</Setting>'    ; Désactivation du message de bienvenue
    ? '    </Settings>'
    ? '</FileZilla3>'
    ;Reprise du fichier log et redirection des messages
    IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
       ? "Fichier créé : %USERPROFILE%\application data\FileZilla\filezilla.xml"
    ELSE
       GOTO "finerreur"
    ENDIF
ELSE
   ? "Impossible de créer le fichier %USERPROFILE%\application data\FileZilla\filezilla.xml"
ENDIF

;Creation de la liste des sites pour les nouveaux profils
MD "$DEFUSERHOME\application data\FileZilla\"
IF EXIST ("$DEFUSERHOME\application data\FileZilla\sitemanager.xml")
    DEL "$DEFUSERHOME\application data\FileZilla\sitemanager.xml" /f /h
ENDIF
? "Ecriture de l'entête de $DEFUSERHOME\application data\FileZilla\sitemanager.xml"
IF RedirectOutput("$DEFUSERHOME\application data\FileZilla\sitemanager.xml") = 0
    ? '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>'
    ? '<FileZilla3>'
    ? '    <Servers>'
    ;Reprise du fichier log et redirection des messages
    IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
       ? "Fichier créé : entête de $DEFUSERHOME\application data\FileZilla\sitemanager.xml"
    ELSE
       GOTO "finerreur"
    ENDIF
ELSE
   ? "Impossible de créer : entête de $DEFUSERHOME\application data\FileZilla\sitemanager.xml"
ENDIF
? "Ecriture du corps du fichier $DEFUSERHOME\application data\FileZilla\sitemanager.xml"
$NumeroDeElement = 0
For Each $Element In $TableauDesTitres
    ? "$Element, " + $TableauDesAdr[$NumeroDeElement] + ", " + $TableauDesMode[$NumeroDeElement]
    IF RedirectOutput("$DEFUSERHOME\application data\FileZilla\sitemanager.xml") = 0
        ? "        <Server>"
        ? "           <Host>" + $TableauDesAdr[$NumeroDeElement] + "</Host>"
        ? "           <Port>21</Port>"
        ? "           <Protocol>0</Protocol>"
        ? "           <Type>0</Type>"
        ? "           <User></User>"
        ? "           <Logontype>" + $TableauDesMode[$NumeroDeElement] + "</Logontype>"
        ? "           <TimezoneOffset>0</TimezoneOffset>"
        ? "           <PasvMode>MODE_DEFAULT</PasvMode>"
        ? "           <MaximumMultipleConnections>0</MaximumMultipleConnections>"
        ? "           <EncodingType>Auto</EncodingType>"
        ? "           <BypassProxy>0</BypassProxy>"
        ? "           <Name>$Element</Name>"
        ? "           <Comments></Comments>"
        ? "           <LocalDir></LocalDir>"
        ? "           <RemoteDir></RemoteDir>$Element"
        ? "       </Server>"
        ;Reprise du fichier log et redirection des messages
        IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
           ? "Fichier créé : corps de $DEFUSERHOME\application data\FileZilla\sitemanager.xml"
        ELSE
           GOTO "finerreur"
        ENDIF
    ELSE
       ? "Impossible de créer : corps de $DEFUSERHOME\application data\FileZilla\sitemanager.xml pour site $NumeroDeElement"
    ENDIF
    $NumeroDeElement = $NumeroDeElement + 1
Next
? "Ecriture du pied de page de $DEFUSERHOME\application data\FileZilla\sitemanager.xml"
IF RedirectOutput("$DEFUSERHOME\application data\FileZilla\sitemanager.xml") = 0
    ? "    </Servers>"
    ? "</FileZilla3>"
    ;Reprise du fichier log et redirection des messages
    IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
       ? "Fichier créé : pied de page de $DEFUSERHOME\application data\FileZilla\sitemanager.xml"
    ELSE
       GOTO "finerreur"
    ENDIF
ELSE
   ? "Impossible de créer : pied de page de $DEFUSERHOME\application data\FileZilla\sitemanager.xml"
ENDIF

;Creation de la liste des sites pour l'utilisateur courrant
MD "%USERPROFILE%\application data\FileZilla\"
IF EXIST ("%USERPROFILE%\application data\FileZilla\sitemanager.xml")
    DEL "%USERPROFILE%\application data\FileZilla\sitemanager.xml" /f /h
ENDIF
? "Ecriture de l'entête de %USERPROFILE%\application data\FileZilla\sitemanager.xml"
IF RedirectOutput("%USERPROFILE%\application data\FileZilla\sitemanager.xml") = 0
    ? '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>'
    ? '<FileZilla3>'
    ? '    <Servers>'
    ;Reprise du fichier log et redirection des messages
    IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
       ? "Fichier créé : entête de %USERPROFILE%\application data\FileZilla\sitemanager.xml"
    ELSE
       GOTO "finerreur"
    ENDIF
ELSE
   ? "Impossible de créer : entête de %USERPROFILE%\application data\FileZilla\sitemanager.xml"
ENDIF
? "Ecriture du corps du fichier %USERPROFILE%\application data\FileZilla\sitemanager.xml"
$NumeroDeElement = 0
For Each $Element In $TableauDesTitres
    IF RedirectOutput("%USERPROFILE%\application data\FileZilla\sitemanager.xml") = 0
        ? "        <Server>"
        ? "           <Host>" + $TableauDesAdr[$NumeroDeElement] + "</Host>"
        ? "           <Port>21</Port>"
        ? "           <Protocol>0</Protocol>"
        ? "           <Type>0</Type>"
        ? "           <User></User>"
        ? "           <Logontype>" + $TableauDesMode[$NumeroDeElement] + "</Logontype>"
        ? "           <TimezoneOffset>0</TimezoneOffset>"
        ? "           <PasvMode>MODE_DEFAULT</PasvMode>"
        ? "           <MaximumMultipleConnections>0</MaximumMultipleConnections>"
        ? "           <EncodingType>Auto</EncodingType>"
        ? "           <BypassProxy>0</BypassProxy>"
        ? "           <Name>$Element</Name>"
        ? "           <Comments></Comments>"
        ? "           <LocalDir></LocalDir>"
        ? "           <RemoteDir></RemoteDir>$Element"
        ? "       </Server>"
        ;Reprise du fichier log et redirection des messages
        IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
           ? "Fichier créé : corps de %USERPROFILE%\application data\FileZilla\sitemanager.xml"
        ELSE
           GOTO "finerreur"
        ENDIF
    ELSE
       ? "Impossible de créer : corps de %USERPROFILE%\application data\FileZilla\sitemanager.xml pour site $NumeroDeElement"
    ENDIF
    $NumeroDeElement = $NumeroDeElement + 1
Next
? "Ecriture du pied de page de %USERPROFILE%\application data\FileZilla\sitemanager.xml"
IF RedirectOutput("%USERPROFILE%\application data\FileZilla\sitemanager.xml") = 0
    ? "    </Servers>"
    ? "</FileZilla3>"
    ;Reprise du fichier log et redirection des messages
    IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
       ? "Fichier créé : pied de page de %USERPROFILE%\application data\FileZilla\sitemanager.xml"
    ELSE
       GOTO "finerreur"
    ENDIF
ELSE
   ? "Impossible de créer : pied de page de %USERPROFILE%\application data\FileZilla\sitemanager.xml"
ENDIF


GOTO "fin"

;label de fin avec erreurs
:finerreur
? "fin du script d'installation : erreur"
;Ouverture du fichier log pour signaler la présence d'erreurs
IF RedirectOutput($DossierDeLog + "ERREUR_" + @SCRIPTNAME +".txt") = 0
   ?? "Ouverture de erreur_" + @SCRIPTNAME + " à " + @TIME
   ? "le script d'installation à rencontrer des erreurs : consulter le fichier log :"
   ? $DossierDeLog + @SCRIPTNAME +".txt"
ENDIF
sleep 5

;label de fin sans erreurs
:fin
? "fin du script d'installation"

;annule la redirection vers un fichier
RedirectOutput("")


Vous pouvez poster vos commentaires sur mon blog : http://installation-silencieuse.blogspot.com