none
Script para verificar a instalaçao de varios aplicativos RRS feed

  • Pergunta

  • Boa Noite,

     

    Estou criando um script para a checar a instalação de alguns softwares, a ideia que eu tive foi criar um txt com os nomes e versão dos aplicativos mais ou menos assim:

     

    adobe reader              7.0

    winrar                        3.71

     

    Depois criar um script que leia linha a linha esse txt, e procure na chave do registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\, se o programa esta instalado ou não, se estiver verifica se a versão é maior ou não, imagino que para isso vou utilizar os seguintes valores destas chaves "DisplayName" e "DisplayVersion".

    Só que ai começam os meus problemas, eu estou começando agora com vbs, e tenho as seguintes duvidas:

     

    a ) Como armazenar em uma variavel os caracteres da linha antes do "TAB" (ou qualquer outro caracter que sirva para separar)?

    b ) Como armazenar os caracteres que vem depois do "TAB"?

    c ) Como localizar estes aplicativos dentro da chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall ?

    d ) Uma vez que o aplicativo seja encontrado como verificar se versão é maior ou menor ?

     

    Bem, a ideia que tive foi essa agora preciso da ajuda de vocês.

    Outra coisa se alguem tiver uma ideia melhor de como fazer isso, melhor ainda, pois não importa o metodo, pois eu preciso mesmo é que este script funcione.

     

    Desde ja obrigado pela ajuda.

     

     

    sexta-feira, 19 de outubro de 2007 22:21

Respostas

  • A função SPLIT() faz a separação dos dados de uma string usando qualquer caracter.

    Exemplo usando o TAB:

    ------------------------------------------------------------------------------------------------------------------------

    strFilePath = "aplicativos.txt"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(strFilePath, 1)

    Do Until objFile.AtEndOfStream

      strLine = objFile.ReadLine

      If strLine <> "" Then
         arrAplicativos = Split(strLine, vbTAB )

         wscript.echo arrAplicativos(0)

         wscript.echo arrAplicativos(1)

      End If

    Loop
    ------------------------------------------------------------------------------------------------------------------------

     

    Segue um exemplo de como verificar a instalação de algum software via registry.

     

    ------------------------------------------------------------------------------------------------------------------------

    Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
    strComputer = "."
    strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
    strEntry1a = "DisplayName"
    strEntry1b = "QuietDisplayName"
    strEntry2 = "InstallDate"
    strEntry3 = "VersionMajor"
    strEntry4 = "VersionMinor"
    strEntry5 = "EstimatedSize"

    Set objReg = GetObject("winmgmts://" & strComputer & _
     "/root/defaultTongue TiedtdRegProv")
    objReg.EnumKey HKLM, strKey, arrSubkeys
    WScript.Echo "Installed Applications" & VbCrLf
    For Each strSubkey In arrSubkeys
      intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _
       strEntry1a, strValue1)
      If intRet1 <> 0 Then
        objReg.GetStringValue HKLM, strKey & strSubkey, _
         strEntry1b, strValue1
      End If
      If strValue1 <> "" Then
        WScript.Echo VbCrLf & "Display Name: " & strValue1
      End If
      objReg.GetStringValue HKLM, strKey & strSubkey, _
       strEntry2, strValue2
      If strValue2 <> "" Then
        WScript.Echo "Install Date: " & strValue2
      End If
      objReg.GetDWORDValue HKLM, strKey & strSubkey, _
       strEntry3, intValue3
      objReg.GetDWORDValue HKLM, strKey & strSubkey, _
       strEntry4, intValue4
      If intValue3 <> "" Then
         WScript.Echo "Version: " & intValue3 & "." & intValue4
      End If
      objReg.GetDWORDValue HKLM, strKey & strSubkey, _
       strEntry5, intValue5
      If intValue5 <> "" Then
        WScript.Echo "Estimated Size: " & Round(intValue5/1024, 3) & " megabytes"
      End If
    Next

     

    ------------------------------------------------------------------------------------------------------------------------

    terça-feira, 23 de outubro de 2007 10:36