none
Mudar uma Bat para VBS. RRS feed

  • Pergunta

  •  

    Pessoal,

    Estou querendo mudar uma forma de instalar um software que faço distribição via SMS,

    Hoje eu tenho alguns em forma de BAT, que mando executar nas estações dos usuários que fica assim.

     

    md %temp%\nomearquivo
    xcopy "\\servidor\pasta\nomearquivo"\*.* %temp%\nomearquivo /s /q /y

    start /wait %temp%\nomearquivo\Setup.exe /silent

    IF EXIST "%ALLUSERSPROFILE%\Menu Iniciar" (
    xcopy "\\servidor\pasta\nomearquivo"\regimport.bat "%ALLUSERSPROFILE%\Menu Iniciar\Programas\Inicializar" /q /y
    )
    IF EXIST "%ALLUSERSPROFILE%\Start Menu" (
    xcopy "\\servidor\pasta\nomearquivo"\regimport.bat "%ALLUSERSPROFILE%\Start Menu\Programs\Startup" /q /y
    )

    cacls "%programfiles%\nomearquivo" /T /E /P Everyone:C

    cacls "%programfiles%\nomearquivo" /T /E /P Todos:C

    IF NOT EXIST "%ALLUSERSPROFILE%\Desktop\My nomearquivo.lnk" start /wait %temp%\nomearquivo\Setup.exe /silent

    cacls "%programfiles%\nomearquivo" /T /E /P Everyone:C

    cacls "%programfiles%\nomearquivo" /T /E /P Todos:C


    del %temp%\nomearquivo\*.* /s /q

    RD %temp%\nomearquivo

     

    Como fazer para um VBS fazer a mesma coisa que esta BAT?

    Obrigado.

    sexta-feira, 30 de maio de 2008 12:15

Respostas

  • Olá,


    você precisa verificar mais profundamente qual é o problema com a instalação que o SMS faz. Até onde eu sei, o SMS disponibiliza duas formas para instalar software: usando a conta LocalSystem e usando a conta do usuário, com privilégios elevados temporariamente. É possível que o software não possa ser instalado com essas credenciais e precise realmente da conta de administrador local para isso.

    Tente fazer alguns testes simulando a forma como o SMS instala o sofware, por exemplo, usando a conta SYSTEM para instalar o software. Os logs que devem ser analisados são os da aplicação, e não do SMS em si. Já encontrei problemas semelhantes com a instalação do FSRM no Windows Server 2003 R2.

    Espero ter ajudado,


    Vinicius Canto
    MVP Admin Frameworks
    http://viniciuscanto.blogspot.com
    terça-feira, 1 de julho de 2008 10:35
    Moderador

Todas as Respostas

  • Prudentesan, segue a conversão Wink

     

    Set objShell = WScript.CreateObject("WScript.Shell")
    Set colUserEnvVars = objShell.Environment("User")

    x = 0
    Set FSO = createobject("scripting.filesystemobject")

    set objfolder = FSO.CreateFolder(objShell.ExpandEnvironmentStrings("%TEMP%")&"\nomearquivo")

     

    objshell.run "xcopy ""\\servidor\pasta\nomearquivo\*.*"" " & objShell.ExpandEnvironmentStrings("%TEMP%") & "\nomearquivo /s /q /y"

     

    objshell.run "start /wait "& objShell.ExpandEnvironmentStrings("%TEMP%") &"\nomearquivo\Setup.exe /silent"

     

    if FSO.FolderExists(objShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")&"\menu iniciar") then
     FSO.copyfile "\\servidor\pasta\nomearquivo\regimport.bat", objShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%") &"\Menu Iniciar\Programas\Inicializar"

    objshell.run "cacls " & objShell.ExpandEnvironmentStrings("%ProgramFiles%")&"""\nomearquivo"" /T /E /P Todos:C, 1, true

    x = 1
    end if

    if x = 0 then

     if FSO.FolderExists(objShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")&"\Start Menu") then
     FSO.copyfile "\\servidor\pasta\nomearquivo\regimport.bat", & objShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")& "\Start Menu\Programs\Startup",1, true

    objshell.run "cacls " & objShell.ExpandEnvironmentStrings("%ProgramFiles%")&"""\nomearquivo"" /T /E /P Everyone:C", 1, true

     end if

    end if

     

    If FSO.FolderExists(objShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")&""\Desktop\My nomearquivo.lnk""") = false then

    objshell.run "start /wait %temp%\nomearquivo\Setup.exe /silent, 1, true

    objshell.run "cacls " & objShell.ExpandEnvironmentStrings("%ProgramFiles%")&"""\nomearquivo"" /T /E /P Everyone:C", 1, true

    objshell.run "cacls " & objShell.ExpandEnvironmentStrings("%ProgramFiles%")&"""\nomearquivo"" /T /E /P Todos:C", 1, true

    end if

    objshell.run "del " & objShell.ExpandEnvironmentStrings("%TEMP%") &"""\nomearquivo\\*.*"" /s /q",1, true

    FSO.DeleteFolder(objShell.ExpandEnvironmentStrings("%TEMP%") & "\nomearquivo\")

    segunda-feira, 2 de junho de 2008 15:25
  • Você precisa realmente que eles sejam "migrados" para vbscript? Qual a real necessidade disso?


    []s,


    Vinicius Canto
    MVP Admin Frameworks
    Blog sobre scripting: http://viniciuscanto.blogspot.com

    terça-feira, 3 de junho de 2008 11:44
    Moderador
  •  

    Vinicius,

     

    Na verdade quando eu mando distribuir via SMS algumas BATs não sei por qual motivo em algumas estações não instalam, rodam mas não funcionam.

    Quero mandar executar a mesma coisa via vbscript e se realmente o resultado for melhor que BAT vou estudar mais e começar usar eles.

     

    Valeu.

    quarta-feira, 4 de junho de 2008 02:54
  • Olá,


    recomendo modificar o BAT então para colocar em um arquivo de log a saída de cada um dos comandos. Transformar para VBS, nesse caso, só vai complicar a coisa, já que o trabalho em BAT nesse caso é o mais apropriado.


    Você pode colocar a saída de um comando em um arquivo com a seguinte linha:


    echo %ERRORLEVEL% >> log.txt


    Basta colocar isso em cada um dos comandos. Dessa forma vai ser mais fácil identificar qual das linhas não está funcionando nas estações.


    Outro ponto importante: vejo que você modifica o registro com o script. Lembre-se que usuários comuns não possuem permissão para alterar chaves abaixo de HKEY_LOCAL_MACHINE. Se o seu script faz isso, ele vai falhar.


    []s,


    Vinicius Canto
    MVP Admin Frameworks
    blog sobre scripting: http://viniciuscanto.blogspot.com
    quarta-feira, 4 de junho de 2008 11:18
    Moderador
  •  

    Vinicius,

     

    Cheguei a fazer isto,

    Mas não ocorre erro na BAT ela executa toda por completa, não aparece nenhum erro no log.

    O problema é que em algumas estações instala e em outras o programa é startado e não conlui a instalação,

     

    Na BAT coloquei para ele verificar se existir o atalho no desktop concluir, se não exisitir não teve sucesso na instalação neste caso mandei executar novamente a instalação antes de concluir,

    Se eu executar a  BAT direto, manual nas estações sempre funciona em todas, mas eu removo o programa das estações e mando instalar via SMS pelo menos 50% não conclui a instalação.

     

    Por isto a idéia de testar com as duas maneiras e depois comparar o resultado.

     

    A chave que ele importa do servidor é gravado no HKEY_CURRENT_USER, isto funciona em todas estações.

     

    Valeu.

     

    quarta-feira, 4 de junho de 2008 13:07
  • Olá,


    acredito ainda, nesse caso, que simplesmente trocar a tecnologia (bat -> VBS) não vai resolver muita coisa, já que o erro está na execução do programa externo. Qual é o valor do ERRORLEVEL depois da execução do comando em questão? Se diferente de zero, o que esse valor significa?

    E mais: CURRENT_USER é uma chave pertencente ao usuário. Qual conta de usuário é usada quando vc aplica um pacote via SMS?


    []s,

    Vinicius Canto
    MVP Admin Frameworks
    blog sobre scripting: http://viniciuscanto.blogspot.com
    segunda-feira, 9 de junho de 2008 11:50
    Moderador
  • Vinicius,

     

    Na verdade ele não da erro quando roda o pacote,

    Ele começa a instalar cria a pasta de instalação do programa e não conclui,

    Fiz via VBS para testar e ocorreu a mesma coisa em algumas distribuições,

     

    Estou verificando se é algum processo que esta tivo e trava a instalação,

     

    Sabe se tem alguma maneira de incluir no VBS ou na BAT para antes de rodar parar algum proceso que esteja Rodando?

     

    A conta de usuário que instala via SMS é uma conta Domain Admins.

    Mas ele copia uma Bat para o inicializar e quando o user loga ela importa a chave de um servidor.

     

    Valeu.

    terça-feira, 10 de junho de 2008 14:06
  • Ok, o problema então nada tem a ver com o script que instala a aplicação. Você deve investigar o que ocorre com a instalação da aplicação antes de qualquer outra coisa. Porque ela é abortada em alguns clientes? Tem algum log da instalação que você possa observar? Quem fez o programa de instalação: o fabricante ou você usando ferramentas específicas?

    Quanto ao registro do usuário, você está ciente que o Inicializar deve ser do All Users para funcionar em todos usuários? O que exatamente é gravado no registro? Normalmente aplicações bem escritas não precisam disso para funcionar.


    []s,

    Vinicius Canto
    MVP Admin Frameworks
    blog sobre scripting: http://viniciuscanto.blogspot.com
    terça-feira, 10 de junho de 2008 17:51
    Moderador
  • Ola Vinicius,

     

    Estou de volta no batente,

     

    Desculpa a demora para responder.

     

    Olha só, o que esta ocorrendo é que somente alguns determinados programas da estes erros de não concluir,

    Mas o que estava preucupado é que se eu rodar a bat na mão direto em todos os testes o programa instala perfeitamente, mas se eu rodar em modo silient via SMS o programa é startado mas nem todas conclui.

     

    Nos logs não aparecem erros ou informação alguma,

    O programa é instado conforme foi desenvolvido pelo fabricante, sem nenhuma alteração.

     

    A informação que eu preciso adicionar no registro é um nome de servidor para a aplicação.

    Mas insto independente de concluir a instalação ou não esta sendo adicionado no registro.

     

    Estou voltando a ativa e analisando os pacotes novamente inclusive rodar bat bia SMS.

     

    Valeu.

    sexta-feira, 27 de junho de 2008 01:29
  • Olá,


    você precisa verificar mais profundamente qual é o problema com a instalação que o SMS faz. Até onde eu sei, o SMS disponibiliza duas formas para instalar software: usando a conta LocalSystem e usando a conta do usuário, com privilégios elevados temporariamente. É possível que o software não possa ser instalado com essas credenciais e precise realmente da conta de administrador local para isso.

    Tente fazer alguns testes simulando a forma como o SMS instala o sofware, por exemplo, usando a conta SYSTEM para instalar o software. Os logs que devem ser analisados são os da aplicação, e não do SMS em si. Já encontrei problemas semelhantes com a instalação do FSRM no Windows Server 2003 R2.

    Espero ter ajudado,


    Vinicius Canto
    MVP Admin Frameworks
    http://viniciuscanto.blogspot.com
    terça-feira, 1 de julho de 2008 10:35
    Moderador