Header image
Jean-René DANIS

   Retour à Script d'installation silencieuse                

  

Scripts d'installation silencieuse et de personnalisation
PDFSam 1.1.2

 

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

-Le script désinstall les anciennes version de PDFSam
-Le script personnalise les options : changement du language et des paramètres de mise à jour.

Principe

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

pdfsam-1.1.2-out.zip (ce fichier peut être télechargé sur le site de www.pdfsam.org : http://www.pdfsam.org/ )
install.bat : décrit ci-dessous
pdfsam-1.1.2-out.kix : décrit ci-dessous

Pour installer et parametrer PDFSam 1.1.2 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 PDFSam 1.1.2
@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 pdfsam-1.1.2-out.kix
)
Prompt




Contenu du fichier pdfsam-1.1.2-out.kix (télécharger ce script en pdf couleur ici)

;installation de PDFsam 1.1.2 à partir du fichier pdfsam-1.1.2-out.zip
; désinstallation de la version 1.0.3
;presonalisation des options : language FR et désactivation des mises à jour
;JEAN-RENE DANIS 03/04/09

;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\PDFSam103'
;variable qui définit le dossier de 7Zip ou se trouve 7z.exe :
$SEI_7Z = '%SYSTEMDrive%\Program Files\7-Zip'

;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

cd @SCRIPTDIR\

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

;Si le programme existe
;désinstallation manuelle
$DossierPDFSAM="$PRGDIR\pdfsam103"
If EXIST ($DossierPDFSAM)

    ? "Le logiciel a été trouvé dans le dossier : $DossierPDFSAM"
    ? "Une version est déjà installée sur votre ordinateur."
    ? "Le programme va supprimer l'installation existante et les raccourcis"
    
    ; suppression du dossier PDFSam Split & Merge présent dans %programesfiles%
    IF EXIST ($DossierPDFSAM)
        $dossierasupprimer = $DossierPDFSAM
        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\PDFSam Split & Merge.lnk")
        del "$ALLUSERPRG\PDFSam Split & Merge.lnk" /c /f /s
        IF NOT EXIST ("$ALLUSERPRG\PDFSam Split & Merge.lnk")
           ? "Le fichier : $ALLUSERPRG\PDFSam Split & Merge.lnk a été supprimé"
        ELSE
           ? "Le fichier : $ALLUSERPRG\PDFSam Split & Merge.lnk n'a pas été supprimé"
        ENDIF
    ENDIF
    IF EXIST ("$ALLUSERPRG\Utilitaires\PDFSam Split & Merge.lnk")
        del "$ALLUSERPRG\PDFSam Split & Merge.lnk" /c /f /s
        IF NOT EXIST ("$ALLUSERPRG\Utilitaires\PDFSam Split & Merge.lnk")
           ? "Le fichier : $ALLUSERPRG\Utilitaires\PDFSam Split & Merge.lnk a été supprimé"
        ELSE
           ? "Le fichier : $ALLUSERPRG\Utilitaires\PDFSam Split & Merge.lnk n'a pas été supprimé"
        ENDIF
    ENDIF
   
Endif

;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

;décompression d'un fichier
$fichieradecomp = 'pdfsam-1.1.2-out.zip'
$destinationdeladecomp = $dossierprov
$commande='"$SEI_7Z\7z.exe" x -o$destinationdeladecomp $fichieradecomp'
? $commande
shell '%COMSPEC% /c ' + $commande
IF @ERROR <> 0
   ? "Erreur n° " + @ERROR
   GOTO "finerreur"
ENDIF

;Copie d'un dossier
COPY $dossierprov "$PRGDIR\PDFSam112\" /s

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

;création du raccourci
IF ADDPROGRAMITEM ('"$PRGDIR\PDFSam112\pdfsam-starter.exe"', "PDFSam Split & Merge", "", 0, "",0,0) = 0
   ? "Raccourci PDFSam créé...."
Endif

;effacement d'un dossier
$dossierasupprimer = $dossierprov
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

;personnalisasion du logiciel
; language : Français
; Mise à jour : désactivé

;copie de sauvegarde
COPY "$PRGDIR\PDFSam112\config.xml" "$PRGDIR\PDFSam112\config.original"


$FichierXML = "$PRGDIR\PDFSam112\config.xml"
$FichierXMLPersonnalise = "$PRGDIR\PDFSam112\config1.xml"
$LigneAChrercher = "    <i18n>en_GB</i18n>"
$LigneARemplacer = "    <i18n>fr</i18n>"

;Ouvre le fichier original et créé le fichier copie vide
IF Open(1, "$FichierXML", 2)=0   AND Open(2, "$FichierXMLPersonnalise", 5)=0
    ;lecture de la ligne courante
    $LigneFichierXML = ReadLine(1)
    WHILE @ERROR = 0
        ;Inscription de la ligne dans un tableau pour effectuer une recherche
        $TableauChaines = "$LigneFichierXML", "£££"
        $ResultRechercheChaine = ASCAN($TableauChaines, $LigneAChrercher, , , 1)
        IF $ResultRechercheChaine = 0
            ; remplacement de la ligne si la recherche est positive
            $LigneFichierXML = $LigneARemplacer
        ELSE
            ; ne change rien à la ligne
        ENDIF
       
        ;Recopie la ligne dans fichier personnalisé
        WriteLine( 2 , $LigneFichierXML + @CRLF)
       
        ;lit la ligne courante
        $LigneFichierXML = ReadLine(1)
    LOOP
    ;fermeture des fichiers
    Close (1)
    Close (2)
    ? "Le fichier $FichierXMLPersonnalise à été créé"
ELSE
    BEEP
    ? "Ouverture des fichiers impossibles"
ENDIF

$FichierXML = "$PRGDIR\PDFSam112\config1.xml"
$FichierXMLPersonnalise = "$PRGDIR\PDFSam112\config2.xml"
$LigneAChrercher = "    <checkupdates>1</checkupdates>"
$LigneARemplacer = "    <checkupdates>0</checkupdates>"

;Ouvre le fichier original et créé le fichier copie vide
IF Open(1, "$FichierXML", 2)=0   AND Open(2, "$FichierXMLPersonnalise", 5)=0
    ;lecture de la ligne courante
    $LigneFichierXML = ReadLine(1)
    WHILE @ERROR = 0
        ;Inscription de la ligne dans un tableau pour effectuer une recherche
        $TableauChaines = "$LigneFichierXML", "£££"
        $ResultRechercheChaine = ASCAN($TableauChaines, $LigneAChrercher, , , 1)
        IF $ResultRechercheChaine = 0
            ; remplacement de la ligne si la recherche est positive
            $LigneFichierXML = $LigneARemplacer
        ELSE
            ; ne change rien à la ligne
        ENDIF
       
        ;Recopie la ligne dans fichier personnalisé
        WriteLine( 2 , $LigneFichierXML + @CRLF)
       
        ;lit la ligne courante
        $LigneFichierXML = ReadLine(1)
    LOOP
    ;fermeture des fichiers
    Close (1)
    Close (2)
    ? "Le fichier $FichierXMLPersonnalise à été créé"
ELSE
    BEEP
    ? "Ouverture des fichiers impossibles"
ENDIF

DEL "$PRGDIR\PDFSam112\config.xml"

COPY "$PRGDIR\PDFSam112\config2.xml"  "$PRGDIR\PDFSam112\config.xml"

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