Header image
Jean-René DANIS

 

   Retour à Script d'installation silencieuse                

  


Scripts d'installation silencieuse
7zip 4.65 32 ou 64 bits

 

Voici un script qui permet d'installer 7zip 4.65 32 ou 64 bits sans assistance en Kixtart.
Si la version de 7zip 4.57 est détecté, le script la desinstalle à condition d'avoir accés au fichier msi de la version 4.57.

Ligne de commande : "msiexec /i 7z465.msi /qn ALLUSERS="1""

Principe

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

7z465.msi et 7z465-x64.msi qui peuvent être télécharger sur ce site : http://www.7-zip.org/
install.bat : décrit ci-dessous
7z465.kix : décrit ci-dessous

Pour installer 7zip 4.65 32 ou 64 bits 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 7zip 4.65
@echo JEAN-RENE DANIS 05/02/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 7z465.kix
)
Prompt

Contenu du fichier 7z465.kix (télécharger ce script en pdf couleur ici)

;installation de 7-zip 4.65 à partir du fichier 7z465.msi ou 7z465-x64.msi
;Si la version 4.57 existe : le script la désinstalle.
;JEAN-RENE DANIS 05/02/09

;Liste des variable(s)
;variable qui définit l'emplacement du fichier log
$DossierDeLog = "%systemdrive%\install\log\"

;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 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

;Verifie si le programme est déjà installé
$Dossier7ZIP="%systemdrive%\Program files\7-zip"
If EXIST ($Dossier7ZIP)

    ? "Le logiciel a été trouvé dans le dossier : $Dossier7ZIP"
    ? "Une version est déjà installée sur votre ordinateur."
    
       
    ;Ouvre le fichier readme de 7zip en lecture seul
    IF Open(1, "$Dossier7ZIP\readme.txt", 2)=0
        ;lecture de la ligne courante
        $Version7zip = ReadLine(1)
        Close (1)
        ? "La version déjà installé est : $Version7zip"
    ELSE
        ? "Impossible d'ouvrir le fichier Dossier7ZIP\readme.txt"
        GOTO "finerreur"
    ENDIF
    
    ;Desinstallation en fonction de la version trouvée
    Select
           
        Case $Version7zip = "7-Zip 4.65"
            ? "Pas besoin d'installation"
            GOTO "finerreur"
           
        Case $Version7zip = "7-Zip 4.57"
            ? "Désinstallation de la version 7-Zip 4.57"
            cd "@SCRIPTDIR\..\7-zip457"
            ;desinstallation du programme 32 ou 64 bits
            IF @ONWOW64 = 1
                ? "Desinstallation pour un CPU 64bits"
                $commande = 'msiexec /uninstall 7z457-x64.msi /passive'
                ? $commande
                shell '%COMSPEC% /c ' + $commande
                IF @ERROR <> 0
                   ? "Erreur n° " + @ERROR
                   GOTO "finerreur"
                ENDIF
            ELSE
               ? "Desinstallation pour un CPU 32bits"
               $commande = 'msiexec /uninstall 7z457.msi /passive'
                ? $commande
                shell '%COMSPEC% /c ' + $commande
                IF @ERROR <> 0
                   ? "Erreur n° " + @ERROR
                   GOTO "finerreur"
                ENDIF
            ENDIF
    EndSelect

    ;suppression des raccourcis des anciennes version
    IF EXIST ("$ALLUSERPRG\7-zip")
        $dossierasupprimer = "$ALLUSERPRG\7-zip"
        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"
        ENDIF
    ENDIF

    IF EXIST ("$ALLUSERPRG\Utilitaires\7-zip")
        $dossierasupprimer = "$ALLUSERPRG\Utilitaires\7-zip"
        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"
        ENDIF
    ENDIF
Endif

cd @SCRIPTDIR

;installation du programme 32 ou 64 bits
IF @ONWOW64 = 1
    ? "Installation pour un CPU 64bits"
    $commande = 'msiexec /i @SCRIPTDIR\7z465-x64.msi /qn ALLUSERS="1"'
    ? $commande
    shell '%COMSPEC% /c ' + $commande
    IF @ERROR <> 0
       ? "Erreur n° " + @ERROR
       GOTO "finerreur"
    ENDIF
ELSE
   ? "Installation pour un CPU 32bits"
   $commande = 'msiexec /i @SCRIPTDIR\7z465.msi /qn ALLUSERS="1"'
    ? $commande
    shell '%COMSPEC% /c ' + $commande
    IF @ERROR <> 0
       ? "Erreur n° " + @ERROR
       GOTO "finerreur"
    ENDIF
ENDIF

;Si le dossier "menu démarrer\utilitaires" n'existe : le créer
IF ADDPROGRAMGROUP ("Utilitaires",1) = 0
   ? "Dossier Utilitaires a été créé ou existait déjà"
ELSE
   ? "Erreur à la création du dossier Utilitaires"
   GOTO "Finerreur"
ENDIF

;Déplacement du raccourci de menu démarrer vers le dossier "menu démarrer\utilitaires"
? "Deplace "+ $ALLUSERPRG + "\7-Zip\ " $ALLUSERPRG + "\Utilitaires\7-Zip\"
MOVE $ALLUSERPRG + "\7-Zip\" $ALLUSERPRG + "\Utilitaires\7-Zip\" /c /r
IF @ERROR <> 0
   ? "Erreur n° " + @ERROR
   GOTO "finerreur"
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