Introduction

MTFC: Microsoft Technical French Contributor est un Award conçu et réalisé par l'équipe des Wiki Ninjas dirigé par Ed Price. Cet Award à comme but de remercier toute personne qui à contribué dans les Forum TechNet France. Pour plus d'informations vous pouvez lire ceci: http://blogs.technet.com/b/wikininjas/archive/2013/03/17/week-end-surprise-four-fantastic-presents-the-microsoft-technical-french-contributor.aspx

Pour d'autres questions ou remarques vous pouvez envoyer un mail vers: tnwikifrenchdayga@outlook.com

Références

Cet artcile à été écrit par: celegorm dans le contexte: Appel à la Contribution 17/04/2013 - 17/06/2013. L'article est l'heureux gagnant dans la catégorie Windows 7.


L'article


'-----------------------------------------------------------------
'ce programme est destiné à maintenir à jour des fichiers présents en local et sur le net
'attention, utilise des fichiers .zip (local et web)
'demande la présence des fichiers .zip dans la racine local avant de démarrer
'fichier fciv source officielle: http://www.microsoft.com/en-us/download/details.aspx?id=11533
'fichier unzip source officielle: http://stahlworks.com/dev/unzip.exe
 
dim identique
dim commandline
dim checksum_fichierold
dim checksum_fichiernew
dim sha
dim racine
dim source_web
dim fciv
dim unzip
dim source_fciv
dim source_unzip
 
Set fso = CreateObject("Scripting.FileSystemObject" )
Set OWS = CreateObject("Wscript.Shell")
 
'------------ variables personnalisables------------------
dim nom_des_fichiers(1) 'à augmenter suivant le nombre de fichier suivi (n-1)
nom_des_fichiers(0)=("Autoruns.zip")
nom_des_fichiers(1)=("ProcessExplorer.zip")
racine="le répertoire où sont stockés process explorer.zip et autoruns.zip"
source_web="http://download.sysinternals.com/files/"
rep_programme="répertoire où sont stockés les programmes de sysinternals"
fciv="répertoire où est stocké fciv\fciv.exe"
source_fciv="http://www.softpratik.fr/fciv.exe"
unzip="répertoire où est stocké unzip \unzip.exe"
source_unzip="http://www.softpratik.fr/unzip.exe"
'---------------------------------------------------------
 
'----prog principal----
initialisation
for x=0 to  ubound(nom_des_fichiers)
    check_fichier racine & nom_des_fichiers(x)
    Importer_Fichier_Du_Web source_web & nom_des_fichiers(x),racine & nom_des_fichiers(x)
    comparer_checksum racine & nom_des_fichiers(x), racine & nom_des_fichiers(x) & ".old"
 
    if identique=1 then 'si le fichier téléchargé est identique au précédent, on le supprime et on renomme le .old en .zip
        fso.deletefile racine & nom_des_fichiers(x)
        fso.MoveFile racine & nom_des_fichiers(x) & ".old",racine & nom_des_fichiers(x)
        else' si le fichier téléchargé est différent, on dézippe le fichier dans le répertoire sysinternals et on supprime le fichier .old
        unzipper_fichier racine & nom_des_fichiers(x),rep_programme
        fso.deletefile racine & nom_des_fichiers(x) & ".old"
        msgbox ("le programme "& nom_des_fichiers(x) & " a été mis à jour")
    end if
next
 
'----les sous-programmes----
sub initialisation 'va télécharger fciv et unzip s'ils ne sont pas présents
     
    If Not fso.FileExists(fciv) then
        Importer_Fichier_Du_Web source_fciv,fciv
    End If
    If Not fso.FileExists(unzip) then
        Importer_Fichier_Du_Web source_unzip,unzip
    End If
End Sub
 
Sub check_fichier(fichier)'va renommer les fichiers présent en .old
      
    If fso.FileExists(fichier) then
        If fso.FileExists(fichier & ".old") then
            fso.deletefile fichier & ".old"
        End If
        fso.MoveFile fichier,fichier & ".old"
    End If
End Sub
 
Sub Importer_Fichier_Du_Web(source,destination)'récupère les fichiers sur le site
 
     Set HTTP=Objet_XMLHTTP
     With HTTP
     .Open "GET",source,False
     .Send
     End With
     With CreateObject("ADODB.Stream")
     .Type=1
     .Open
     .Write HTTP.ResponseBody
     .SaveToFile destination,2
     End With
 End Sub
 
 Function Objet_XMLHTTP 'crée un objet xmlhttp
     On Error Resume Next
     Set Objet_XMLHTTP=CreateObject("Microsoft.XMLHTTP")
     Set Objet_XMLHTTP=CreateObject("MSXML2.XMLHTTP")
     On Error GoTo 0
 End Function
  
Sub comparer_checksum (fichierold,fichiernew) 'compare le checksum de 2 fichiers avec l'outil fciv
    Set fso = CreateObject("Scripting.FileSystemObject" 
 
    checksum (fichierold)
    checksum_fichierold=sha
    fso.deletefile racine & "checksum.xml"
 
    checksum (fichiernew)
    checksum_fichiernew=sha
    fso.deletefile racine & "checksum.xml"
     
    If checksum_fichierold=checksum_fichiernew then
        identique=1
        Else
        identique=0
    End If
 
End Sub
 
Function checksum (fichier)
    Set xmldoc = CreateObject("Microsoft.XMLDOM")
    xmldoc.async=false
    commandline= "cmd /c " & fciv & " -add " & fichier & " -sha1 -wp -xml " &racine &"checksum.xml"
    OWS.Run (commandline),0
    WScript.Sleep 2000
    xmldoc.load(racine & "checksum.xml")
    For each fichier in xmlDoc.selectNodes("/FCIV/FILE_ENTRY")
        sha=fichier.selectSingleNode("SHA1").text< -sha1 -wp -x/code>
    Next
 
End Function
 
Function unzipper_fichier(strZipFile, strFolder) ' décompresse le fichier zip
    commandline= "cmd /c " & unzip & " -o " & strZipFile & " -d " """"& strFolder &""""
    OWS.Run (commandline),0
    WScript.Sleep 2000
End Function