IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

script mise à jour logiciel


Sujet :

VBScript

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Par défaut script mise à jour logiciel
    Bonjour,

    Avant de commencer je voudrais vous dire que je ne suis pas très très bon en script (je commence, faut bien apprendre un jour)

    Voilà le but de mon script est d'installer les mises à jour d'un logiciel (adobe reader, firefox, etc....)

    J'essaye avec firefox

    la version est inscrite dans le fichier application.ini qui se trouve dans C:\Program Files\Mozilla Firefox

    la ligne est la suivante : MaxVersion=25.0.1

    Je voudrais savoir comment faire un scrpit qui permet de lire cette ligne et de la comparer ?

    Merci par avance.

    Cordialement.

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    et Bienvenue dans DVP
    Testez ce Script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Option Explicit
    Const ForReading = 1
    Dim fso,f,WS,ProgramFiles,FichierINI,ReadTextFileTest,Pos,Entree,MajorVersion
    Set WS = CreateObject("WScript.shell")
    ProgramFiles = WS.ExpandEnvironmentStrings("%programfiles%")
    FichierINI = ProgramFiles & "\Mozilla Firefox\application.ini"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(FichierINI,ForReading)
    on error resume next
    Do While f.AtEndOfStream <> True
       ReadTextFileTest = f.ReadLine
       Pos = instr(ReadTextFileTest, "=")
       Entree = Mid(ReadTextFileTest,1,Pos - 1)
       if Entree = "MaxVersion" then
          MajorVersion = Mid(ReadTextFileTest, Pos+1)
          MajorVersion = Left(MajorVersion, Len(MajorVersion))
          Exit do
       end if
    loop
    on error goto 0
    f.Close
    Set f = Nothing
    MsgBox "La version actuelle de votre Firefox est V " & MajorVersion,64,"Version de Firefox " & MajorVersion

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Par défaut
    Citation Envoyé par hackoofr Voir le message
    et Bienvenue dans DVP
    Testez ce Script
    .....
    Impeccable ça fonctionne merci,

    J'arrive à vérifier la version reste plus qu'à l'adapter pour qu'il lance la mise à jour

    Merci

  4. #4
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par fouji Voir le message
    Impeccable ça fonctionne merci,
    J'arrive à vérifier la version reste plus qu'à l'adapter pour qu'il lance la mise à jour

    Alors, postez votre modification, et expliquez-nous la méthode que vous voulez faire pour atteindre votre objectif, ça sera plus cool de partager les idées non , moi aussi je suis intéressé pour le script du mise à jour

  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Une autre méthode pour déterminer la version actuelle de vos applications en utilisant FSO.GetFileVersion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Option Explicit
    Dim fso,f,WS,ProgramFiles,App1,App2,App3,App4,App5
    Set WS = CreateObject("WScript.shell")
    ProgramFiles = WS.ExpandEnvironmentStrings("%programfiles%")
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    App1 = ProgramFiles & "\Adobe\Reader 10.0\Reader\AcroRd32.exe"
    App2 = ProgramFiles & "\Mozilla Firefox\firefox.exe"
    App3 = ProgramFiles & "\WinRAR\WinRAR.exe"
    App4 = ProgramFiles & "\Google\Chrome\Application\chrome.exe"
    App5 = ProgramFiles & "\CCleaner\CCleaner.exe"
     
    If fso.FileExists(App1) and fso.FileExists(App2) and fso.FileExists(App3) and fso.FileExists(App4) and fso.FileExists(App5) Then
        MsgBox "La version Adobe Reader est : " & FSO.GetFileVersion(App1) & VbCrLF & VbCrLF &_
        "La version de firefox.exe est : " & FSO.GetFileVersion(App2) & VbCrLF & VbCrLF &_
        "La version de Winrar.exe est : " & FSO.GetFileVersion(App3)  & VbCrLF& VbCrLF &_
        "La version de Google chrome est : " & FSO.GetFileVersion(App4) & VbCrLF & VbCrLF &_
        "La version de CCleaner.exe est : " & FSO.GetFileVersion(App5),64,"La version actuelle de vos applications" 
    Else 
        MsgBox "Il y a une erreur !" & VbCrLF & "Vérifier bien les chemins de vos applications !",16,"Vérifier bien les chemins de vos applications !"
        Wscript.Quit
    End if

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Par défaut
    J'essaye de faire une vérification depuis le registre, le souci c'est qu'il verifie pas et qui valide tout

    mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Const ForReading = 1
    Dim fso,f,WS,ProgramFiles,FichierINI,ReadTextFileTest,Pos,Entree,MajorVersion
    Set WS = CreateObject("WScript.shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    on error resume next
    Set Sh = WScript.CreateObject("WScript.Shell")
    valcle=sh.regread("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Adobe\Adobe Reader\11.0\Capabilities\ApplicationName")
    if txt="Adobe Reader XI (11.0.06)" then
    MsgBox "coucou"
    end if
    on error goto 0

  7. #7
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut SoftwareUpdater.vbs

    D'après ce code ==> Comparaison de la version en ligne avec la version installée sur le PC du soft Acrobat Reader
    Testez cette version du script pour vérifier en ligne la version et la mise à jour en ligne des softs (Firefox, Adobe Acrobat Reader et winrar)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    Option Explicit
    Const  ForAppending = 8
    Const HKEY_CLASSES_ROOT  = &H80000000
    Const HKEY_CURRENT_USER  = &H80000001
    Const HKEY_LOCAL_MACHINE = &H80000002
    Const HKEY_USERS         = &H80000003
    Const REG_SZ        = 1
    Const REG_EXPAND_SZ = 2
    Const REG_BINARY    = 3
    Const REG_DWORD     = 4
    Const REG_MULTI_SZ  = 7
    Dim RC , sPath, sNames, iTypes, sValue, objRegistry,Titre
    Dim ROOT, i, j , msg, sKey, RC1, sKeyNames, fso, Fich
    Dim shell : Set shell = CreateObject("WScript.Shell")
    sPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
    ROOT = HKEY_LOCAL_MACHINE
    Titre = "Software Updater Checker"
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists("SoftVersion.txt") = True Then
        fso.DeleteFile("SoftVersion.txt")
    end If
     
    If OnLine("smtp.mail.com") = True Then
        Call CheckMyVersion("firefox","http://www.mozilla.org/fr/firefox/new/","\d{2}\.\d")
        Call CheckMyVersion("adobe reader","http://get.adobe.com/fr/reader/",".\d.\d.\d.?")
        Call CheckMyVersion("winrar","http://www.win-rar.com","\d\.\d{2}")
    Else
        MsgBox "Vérifier votre connexion internet puis re-executer ce script",48,Titre
        WScript.Quit
    End If
    Shell.run "SoftVersion.txt"
    '******************************************************************************************************************
    Function CheckMyVersion(MySoft,URL,Motif)
    Set Fich = fso.OpenTextFile("SoftVersion.txt",ForAppending,true)
    Dim OK
    OK = False
    Set objRegistry = GetObject("WinMgmts:root\default:StdRegProv")
    RC1 = objRegistry.EnumKey(ROOT, sPath, sKeyNames)
    If (RC1 = 0) And (Err.Number = 0) And Not IsEmpty(sKeyNames) Then
        For j = LBound(sKeyNames) To UBound(sKeyNames)
            RC = objRegistry.EnumValues(ROOT, sPath & sKeyNames(j), sNames, iTypes)
            If (RC = 0) And (Err.Number = 0) And IsArray(sNames) Then
                 If VerifTypes(ROOT, sPath & sKeyNames(j), iTypes) And OK  Then Fich.WriteLine vbNewLine & sKeyNames(j) & " : "
                For i = LBound(iTypes) To UBound(iTypes)
                    If iTypes(i) = REG_SZ Then
                        RC = objRegistry.GetStringValue(ROOT , sPath & sKeyNames(J), sNames(i), sValue)
                         If (LCase(sNames(i)) = "displayname" And sValue  <> "")  Or (LCase(sNames(i)) = "displayversion" And sValue  <> "") Then 
                            If InStr(1,LCase(sValue),MySoft) > 0 Then
                                msg = msg & sNames(i) & " = " & sValue
                                OK = True
                                 MsgBox sValue & VbcrLf & "La version  installée du soft " & MySoft & " est : "&  ExtractVersion(sValue,Motif),64,"La Version installée du Soft " &  MySoft & ""
                                Dim MyVer,NetVersion,ws
                                MyVer = ExtractVersion(sValue,Motif)
                                NetVersion = GetMajorVersion(URL,Motif)
                                If CompareVersions(MyVer,NetVersion) = -1 Then
                                     MsgBox "La dernière version de " &  MySoft & " est : " & NetVersion & VbCrlf &_
                                    "Il y a une mise à jour en ligne !",48,"Il y a une mise à jour en ligne ! "
                                    set ws = CreateObject("WScript.Shell")
                                    ws.run URL
                                Else
                                    MsgBox "" & MySoft & " est à jour !",64,"" & MySoft & " est à jour !"
                                end if
                                 Fich.Write String(50,"*") & vbNewLine  & msg & vbNewLine & "La version installée du soft " &  MySoft & " est : "& ExtractVersion(sValue,Motif) & vbNewLine
                            End If    
                        End If
                        OK = False
                    End If
                    msg = ""
                Next ' pour i
    'MsgBox msg
            Else
                'Msgbox "L'erreur suivante est survenue : " & Err.Description
            End If
        Next ' pour J
        Fich.Close
    End If
    End Function
    '******************************************************************************************************************
    Function Lsh(ByVal N, ByVal Bits)
        Lsh = N * (2 ^ Bits)
    End Function
    '***************************************************************************************
    Function VerifTypes(ROOT, strPath, Types)
    ' Cette fonction vérifie si la clé (strPath) contient des valeurs 
    ' "DisplayVersion" ou "DisplayName" et qui ne sont pas être vides
    ' pour ne pas retourner celles qui n'en contiennent pas.
        Dim Ret, strNames, Verif, ind,objRegistry
        Set objRegistry = GetObject("WinMgmts:root\default:StdRegProv")
        Verif = False
        Ret = objRegistry.EnumValues(ROOT, strPath,strNames, Types)
        If (Ret = 0) And (Err.Number = 0) And IsArray(strNames) Then
            For ind = LBound(strNames) To UBound(strNames)
                If LCase(strNames(ind)) = "displayname" Or LCase(strNames(ind)) = "displayversion" Then
                    Verif = True
                    Exit For
                ELse 
                    Verif = False
                    End If
                Next
            End If  
            VerifTypes = Verif
    End Function
    '***************************************************************************************
    Function ExtractVersion(Data,Motif) 
            Dim objRegex,Match,Matches
            Set objRegex = new RegExp
            objRegex.Pattern = Motif
            objRegex.Global = False
            objRegex.IgnoreCase = True
            Set Matches = objRegex.Execute(Data)
            For Each Match in Matches
                ExtractVersion = Match.Value
            Next
    End Function
    '***************************************************************************************
    Function GetVersionStringAsArray(ByVal Version)
            Dim VersionAll, VersionParts, N
            VersionAll = Array(0, 0, 0, 0)
            VersionParts = Split(Version, ".")
            For N = 0 To UBound(VersionParts)
                VersionAll(N) = CLng(VersionParts(N))
            Next
            Dim Hi, Lo
            Hi = Lsh(VersionAll(0), 16) + VersionAll(1)
            Lo = Lsh(VersionAll(2), 16) + VersionAll(3)
     
            GetVersionStringAsArray = Array(Hi, Lo)
    End Function
    '***************************************************************************************
    ' Compares two versions "a.b.c.d". If Version1 < Version2,
    ' returns -1. If Version1 = Version2, returns 0.
    ' If Version1 > Version2, returns 1.
    Function CompareVersions(ByVal Version1, ByVal Version2)
            Dim Ver1, Ver2, Result
            Ver1 = GetVersionStringAsArray(Version1)
            Ver2 = GetVersionStringAsArray(Version2)
            If Ver1(0) < Ver2(0) Then
                Result = -1
            ElseIf Ver1(0) = Ver2(0) Then
                If Ver1(1) < Ver2(1) Then
                    Result = -1
                ElseIf Ver1(1) = Ver2(1) Then
                    Result = 0
                Else
                    Result = 1
                End If
            Else
                Result = 1
            End If
            CompareVersions = Result
    End Function
    '***************************************************************************************
    Function GetMajorVersion(URL,Motif)
            Dim Titre,ie,objFSO,Data,OutPut,objRegex,Match,Matches
            Titre = "La dernière version de Firefox"
            Set ie = CreateObject("InternetExplorer.Application")
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            ie.Navigate(URL)
            ie.Visible=False
            DO WHILE ie.busy
                Wscript.Sleep 100
            Loop
            Data = ie.document.documentElement.innerHTML
            Set objRegex = new RegExp
            objRegex.Pattern = Motif
            objRegex.Global = True
            objRegex.IgnoreCase = True
            Set Matches = objRegex.Execute(Data)
            For Each Match in Matches
                GetMajorVersion = Match.Value
            Next
            ie.Quit
            Set ie = Nothing
    End Function
    '***************************************************************************************
    Function OnLine(strHost)
    Dim objPing,z,objRetStatus,PingStatus
         Set objPing =  GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select  * from Win32_PingStatus where address = '" & strHost & "'")
        z = 0
        Do    
            z = z + 1
            For Each objRetStatus In objPing
                If IsNull(objRetStatus.StatusCode) Or objRetStatus.StatusCode <> 0 Then
                    PingStatus = False
                Else
                    PingStatus = True
                End If      
        Next    
            wscript.sleep 200
            If z = 4 Then Exit Do
        Loop until PingStatus = True
        If PingStatus = True Then 
            OnLine = True
        Else
            OnLine = False
        End If
    End Function
    '***************************************************************************************

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/05/2010, 18h50
  2. Création de mise à jour logicielle
    Par m-mas dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 16/03/2010, 20h58
  3. mise à jour logiciel
    Par damii1 dans le forum C#
    Réponses: 1
    Dernier message: 08/07/2009, 13h52
  4. Mise à jour logiciel développé avec access
    Par tit65 dans le forum Access
    Réponses: 4
    Dernier message: 21/08/2007, 16h44
  5. composants de mise à jour logiciels ....
    Par PierreT dans le forum Composants VCL
    Réponses: 3
    Dernier message: 29/08/2005, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo