Software via GPO no Logon de UsuŠrio - SAMBA e AD

Publicado por Ricardo Xerfan (ķltima atualizaÁ„o em 13/12/2018)

[ Hits: 521 ]

Download script-final-deinstall-install-envio.vbs




VBScript para desinstalar e instalar software via GPO no logon de usuário - SAMBA e AD.

  



Esconder cůdigo-fonte

'---------------------------------------------------
' ESTE SCRIPT UTILIZA "EM PARTE" OS SCRIPTS:
' Process.vbs - v1.4 E ProcessKillLocal.vbs - v2.7
' DO AUTOR Guy Thomas (https://computerperformance.co.uk/)
' NO ENTANTO SUA MAIOR COMPOSICAO FOI DESENVOLVIDA POR
' RICARDO XERFAN, SENDO OS DOIS SCRIPTS CITADOS ACIMA,
' UTILIZADOS EM ROTINAS ESPECIFICAS PARA DESCOBRIR OS
' PROCESSOS EM EXECUCAO E FINALIZACAO DOS MESMOS.
' CONTUDO, ALGUMAS CARACTERISTICAS DOS SCRIPTS CITADOS
' FORAM MODIFICADAS PARA MELHOR ENCAIXE COM AS ROTINAS
' DO SCRIPT COMO UM TODO, COM A FINALIDADE DE DESINSTALAR
' E INSTALAR UM SOFTWARE VIA GPO NO LOGON DE USUARIO.
' OBS.: EM ALGUMAS PARTES DO SCRIPT, VC VERA QUE TEM ALGO
' RELACIONADO AO SOFTWARE "Spark", ISSO SE DEVE AO FATO
' DE TER SIDO ORIGINALMENTE DESENVOLVIDO COM A FINALIDADE
' DE DESINSTALAR E INSTALAR UNICAMENTE O MESMO. MAS, O
' SCRIPT FOI GENERALIZADO PARA DESINSTALAR E INSTALAR OUTROS
' SOFTWARES. BASTANDO PARA ISSO ALTERAR O CONTEUDO DAS VARIAVEIS.
' PODE UTILIZAR A VONTADE, NAO ESQUECA DE MODIFICAR AS
' VARIAVEIS CONFORME SUA NECESSIDADE.
' GRACAS A DEUS, TUDO CERTO!
' MACAPA - AP 31.10.2018
'---------------------------------------------------
'---------------------------------------------------
' O QUE ESSE SCRIPT FAZ?
' DE FORMA RESUMIDA:
' PRIMEIRO: VERIFICA SE EXISTE O ARQUIVO ZIP QUE FOI GERADO POR ELE.
'†††††††††CASO EXISTA, ELE NAO FAZ MAIS NADA E SAI. CASO NAO EXISTA,
' SEGUNDO:††VERIFICA SE EXISTE O DIRETORIO DE LOGs PARA DESINSTALACAO
'†††††††††DO PROGRAMA. CASO EXISTA, GERA LOG E PROSSEGUE PARA VERIFICACAO
'†††††††††SE EXISTE O DIRETORIO DO SOFTWARE x64. CASO NAO EXISTA O DIRETORIO
'†††††††††DE LOGs, ELE CRIA O MESMO, GERA LOG E PROSSEGUE PARA VERIFICACAO
'††††††††††SE EXISTE O DIRETORIO DO SOFTWARE x64.
' TERCEIRO: VERIFICA SE EXISTE O DIRETORIO DO SOFTWARE x64. CASO EXISTA, GERA
'†††††††††LOG E PROSSEGUE PARA A VERIFICACAO DO ARQUIVO DE PARAMETRO DE
'†††††††††DESINSTALACAO (QUINTO). CASO NAO EXISTA, GERA LOG E VERIFICA SE EXISTE O
'†††††††††DIRETORIO DO SOFTWARE x86.
' QUARTO:†† VERIFICA SE EXISTE O DIRETORIO DO SOFTWARE x86. CASO EXISTA, GERA
'†††††††††LOG E PROSSEGUE PARA A VERIFICACAO DO ARQUIVO DE PARAMETRO DE
'†††††††††DESINSTALACAO (QUINTO). CASO NAO EXISTA, GERA LOG E PROSSEGUE PARA A INSTALACAO
'†††††††††DO SOFTWARE ESPECIFICADO (NONO).
' QUINTO:†† VERIFICA SE EXISTE O ARQUIVO QUE FOI GERADO COMO PARAMETRO PARA
'†††††††††DESINSTALACAO. CASO EXISTA, GERA LOG E PROSSEGUE PARA VERIFICACAO
'†††††††††DO ARQUIVO DE PARAMETRO DE INSTALACAO (SEXTO). CASO NAO EXISTA, EXIBE MENSAGEM
'†††††††††AO USUARIO E PROSSEGUE PARA VERIFICACAO DO SISTEMA ANTES DA DESINSTALACAO (SETIMO).
' SEXTO:†††VERIFICA SE EXISTE O ARQUIVO QUE FOI GERADO COMO PARAMETRO PARA INSTALACAO.
'†††††††††CASO EXISTA, GERA LOG, COMPACTA O DIRETORIO DE LOGS (DECIMO), ENVIA AO SERVIDOR, EXIBE
'†††††††††MENSAGEM AO USUARIO E SAI. CASO NAO EXISTA, PROSSEGUE PARA A INSTALACAO
'†††††††††DO SOFTWARE ESPECIFICADO (NONO).
' SETIMO:†††VERIFICA OS SOFTWARES QUE ESTAO INSTALADOS NO HOST, OS PROCESSOS QUE ESTAO
'†††††††††SENDO EXECUTADOS NO MESMO, GERA LOG E PROSSEGUE PARA DESINSTALACAO DO SOFTWARE (OITAVO).
' OITAVO:†††VERIFICA SE EXISTE O DIRETORIO DO SOFTWARE x64 OU x86. CASO EXISTA, VERIFICA
'†††††††††SE EXISTE O EXECUTAVEL DO MESMO. CASO EXISTA, VERIFICA SE EXISTE O PROCESSO DO
'†††††††††MESMO EM EXECUCAO. CASO EXISTA, FINALIZA O PROCESSO E TENTA DESINSTALAR O SOFTWARE,
'†††††††††CASO NAO APRESENTE ERRO NA DESINSTALACAO, GERA LOG CONTENDO NOVA VERIFICACAO (SETIMO)
'†††††††††E REINICIA O HOST. CASO†††APRESENTE ERRO NA DESINSTALACAO, GERA LOG E SAI. CASO EXISTA O
'†††††††††DIRETORIO x64 OU x86, MAS NAO EXISTA O ARQUIVO EXECUTAVEL, ELE GERA LOG, TENTA REMOVER O
'†††††††††DIRETORIO, CASO NAO CONSIGA REMOVER, APRESENTA ERRO E SAI. CASO CONSIGA REMOVER,
'†††††††††GERA LOG E SAI.
' NONO:††††††EXIBE MENSAGEM AO USUARIO, TENTA INSTALAR O SOFTWARE. CASO NAO APRESENTE ERRO
'†††††††††NA INSTALACAO, VERIFICA OS SOFTWARES INSTALADOS E PROCESSOS CORRENTES, GERA LOG
'†††††††††E SAI. CASO APRESENTE ERRO NA INSTALACAO, GERA LOG E SAI.
' DECIMO: †††COMPACTA O DIRETORIO DE LOGs E ENVIA AO DIRETORIO REMOTO.
'---------------------------------------------------
'---------------------------------------------------
'---------------------------------------------------
'---------------------------------------------------
'DESCOMENTAR A LINHA ABAIXO SOMENTE SE QUISER QUE O SCRIPT NAO PARE CASO ACONTECA ALGUM ERRO.
'On Error Resume Next 

'===================================================
' DECLARACAO DE VARIAVEIS
'===================================================
Option Explicit
DIM fso, _
†††wshShellx64, _
†††wshShellx86, _
†††x86, _
†††x64, _
†††CmdShell, _
†††UndMaster, _
†††CompName, _
†††DirLog, _
†††DirCompactLog, _
†††DirDestinoLog, _
†††DirSourceEXE, _
†††TreeProgram, _
†††TreeProgramEXE, _
†††APDeinstall, _
†††APInstall, _
†††UName, _
†††DInfo, _
†††HInfo, _
†††objFSOlogDirSparkexiste, _
†††objFilelogDirSparkexiste, _
†††outFilelogDirSparkexiste, _
†††objFSOlogDirSparkcriado, _
†††objFilelogDirSparkcriado, _
†††outFilelogDirSparkcriado, _
†††caminhoprogramax64, _
†††objFSOlogDirProgramRaizx64, _
†††objFilelogDirProgramRaizx64, _
†††outFilelogDirProgramRaizx64, _
†††objFSOlogDirProgramRaizx64NotExist, _
†††objFilelogDirProgramRaizx64NotExist, _
†††outFilelogDirProgramRaizx64NotExist, _
†††caminhoprogramax86, _
†††objFSOlogDirProgramRaizx86, _
†††objFilelogDirProgramRaizx86, _
†††outFilelogDirProgramRaizx86, _
†††objFSOlogDirProgramRaizx86NotExist, _
†††objFilelogDirProgramRaizx86NotExist, _
†††outFilelogDirProgramRaizx86NotExist, _
†††objFSOlogAPDeinstall, _
†††objFilelogAPDeinstall, _
†††outFilelogAPDeinstall, _
†††objFSOlogAPInstall, _
†††objFilelogAPInstall, _
†††outFilelogAPInstall, _
†††objFSOManipulaDir, _
†††outFilelogDeinstall, _
†††outFilelogInstall, _
†††objGroup, _
†††objSysInfo, _
†††strUserDN, _
†††PosInicio, _
†††PosFim, _
†††objUser, _
†††wuser, _
†††wuser2, _
†††FULLNAME, _
†††objShellmsg, _
†††rMsgPopup, _
†††countprocess, _
†††objShellManipulaEXE, _
†††fsoManipulaEXE, _
†††runpathLSRunAS, _
†††pathLSRunAS, _
†††userLSRunAS, _
†††passLSRunAS, _
†††domainLSRrunAS, _
†††commInstallLSRunAS, _
†††commInstall2LSRunAS, _
†††commDeinstallx86LSRunAS, _
†††commGeralLSRunAS, _
†††resultLSRunAS, _
†††undSetor, _
†††dSetor, _
†††objWMIService, _
†††objProcess, _
†††colProcess, _
†††strComputer, _ 
†††strList, _
†††strProcessKill, _
†††objReg, _
†††objFSO, _
†††objFile, _
†††outFile, _
†††FsoManipulaZip, _
†††ShellApplicationManipulaZip, _
†††strDirToCompact, _
†††objFolder, _
†††Namedir, _
†††strDirCompactado, _
†††ObjManipulaZip, _
†††StrCount, _
†††NameEXEInstall, _
†††countconfirm

'===================================================
' DECLARACAO DE CONSTANTES
'===================================================†††
'CONSTANTE DA FUNCAO PARA PEGAR A LISTA DOS SOFTWARES INSTALADOS
Const HKLM = &H80000002

'===================================================
' SETAR VARIAVEIS NECESSARIAS ANTES DE SETAR OBJETO
'===================================================
'VARIAVEL QUE RECEBE O COMPUTADOR ATUAL
strComputer = "."

'===================================================
' SETAR OBJETOS
'===================================================
Set objShellmsg = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set wshShellx64 = CreateObject("WScript.Shell")
Set wshShellx64 = CreateObject("WScript.Shell")
Set wshShellx86 = CreateObject("WScript.Shell")
'Set CmdShell = Wscript.CreateObject("Wscript.Shell")
Set CmdShell = CreateObject("Wscript.Shell")
Set UndMaster = CreateObject("WScript.Shell")
Set CompName = CreateObject("WScript.Shell")
Set UName = CreateObject("WScript.Shell")
Set objFSOManipulaDir = CreateObject("Scripting.FileSystemObject")
Set objFSOlogDirSparkexiste = CreateObject("Scripting.FileSystemObject")
Set objFSOlogDirSparkcriado = CreateObject("Scripting.FileSystemObject")
Set objFSOlogDirProgramRaizx64 = CreateObject("Scripting.FileSystemObject")
Set objFSOlogDirProgramRaizx64NotExist = CreateObject("Scripting.FileSystemObject")
Set objFSOlogDirProgramRaizx86 = CreateObject("Scripting.FileSystemObject")
Set objFSOlogDirProgramRaizx86NotExist = CreateObject("Scripting.FileSystemObject")
Set objFSOlogAPDeinstall = CreateObject("Scripting.FileSystemObject")
Set objFSOlogAPInstall = CreateObject("Scripting.FileSystemObject")
Set objShellManipulaEXE = WScript.CreateObject("WScript.Shell")
Set fsoManipulaEXE = CreateObject("Scripting.FileSystemObject")
Set runpathLSRunAS = CreateObject("WScript.Shell")
'OBJETOS PARA PEGAR OS PROCESSOS CORRENTES
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _ 
& strComputer & "\root\cimv2")
'OBJETOS DA FUNCAO PARA PEGAR OS SOFTWARES INSTALADOS
Set objReg = GetObject("winmgmts://" & "." & "/root/default:StdRegProv")
Set objFSO = CreateObject("Scripting.FileSystemObject")
' OBJETO PARA RETORNAR AS INFO DE REDE NO DOMINIO
Set objSysInfo = CreateObject("ADSystemInfo")
strUserDN = objSysInfo.UserName
Set objGroup = GetObject("LDAP://" & strUserDN)

Set objUser = WScript.CreateObject("WScript.Network")

'===================================================
' SETAR VARIAVEIS
'===================================================
' ATENCAO, MODIFIQUE SOMENTE AS VARIAVEIS:
' TreeProgram; TreeProgramEXE; NameEXEInstall; DirDestinoLog; DirSourceEXE; pathLSRunAS; userLSRunAS; passLSRunAS; domainLSRrunAS; commInstallLSRunAS; APENAS O PARAMETRO DE commInstall2LSRunAS; commDeinstallx86LSRunAS; undSetor; dSetor; strProcessKill;
'---------------------------------------------------
PosInicio = InStr(strUserDN,"")
PosFim = InStr(strUserDN, ",")
'RECEBE O NOME DO DIRETORIO DE PROGRAMAS x64 EM TEXTO EXPANDIDO
x64 = wshShellx64.ExpandEnvironmentStrings("%programfiles%")
'RECEBE O NOME DO DIRETORIO DE PROGRAMAS x86 EM TEXTO EXPANDIDO
x86 = wshShellx86.ExpandEnvironmentStrings("%programfiles(x86)%")
'RECEBE O NOME DA UNIDADE RAIZ EM TEXTO EXPANDIDO
UndMaster = UndMaster.ExpandEnvironmentStrings("%systemdrive%")
'RECEBE O NOME DO COMPUTADOR EM TEXTO EXPANDIDO
CompName = CompName.ExpandEnvironmentStrings("%computername%")
'RECEBE O NOME DE USUARIO EM TEXTO EXPANDIDO
UName = UName.ExpandEnvironmentStrings("%username%")
'RECEBE A DATA
DInfo = Date
'RECEBE A HORA
HInfo = Time
'VARIAVEL QUE RECEBE O NOME DO DIRETORIO DO PROGRAMA DENTRO DO PROGRAM FILES x86 OU x64
TreeProgram = "Spark"
'VARIAVEL QUE RECEBE O NOME DO EXECUTAVEL DO PROGRAMA DENTRO DO DIRETORIO DO MESMO
TreeProgramEXE = "Spark.exe"
'RECEBE O CAMINHO COMPLETO PARA A CRIACAO OU NAO DO DIRETORIO DE LOG
DirLog = (UndMaster+"\"+CompName+".deinstall"+TreeProgram)
'RECEBE O CAMINHO COMPLETO PARA A CRIACAO DO DIRETORIO PARA COMPACTACAO DO DIRETORIO DE LOGs
DirCompactLog = (UndMaster+"\"+CompName+".compactlogs"+TreeProgram)
'RECEBE O CAMINHO COMPLETO PARA CRIACAO OU NAO DO ARQUIVO DE PARAMETRO DE DESINSTALACAO
APDeinstall = (UndMaster+"\"+CompName+".deinstall"& TreeProgram &"\deinstall.txt")
'RECEBE O CAMINHO COMPLETO PARA CRIACAO OU NAO DO ARQUIVO DE PARAMETRO DE INSTALACAO
APInstall = (UndMaster+"\"+CompName+".deinstall"& TreeProgram &"\install.txt")
'RECEBE O CAMINHO COMPLETO DO DIRETORIO x64 DO PROGRAMA A SER DESINSTALADO
caminhoprogramax64 = (x64+"\"+TreeProgram)
'RECEBE O CAMINHO COMPLETO DO DIRETORIO x86 DO PROGRAMA A SER DESINSTALADO
caminhoprogramax86 = (x86+"\"+TreeProgram)
'---------------------------------------------------
'VARIAVEL QUE RECEBE O CAMINHO DO ARQUIVO DE LOG DA FUNCAO PARA PEGAR A LISTA DOS SOFTWARES INSTALADOS
outFile = DirLog+"\"+CompName+".softwaresinstalados.b.E.a.u.txt"
'---------------------------------------------------
' VARIAVEIS QUE RECEBEM O CAMINHO COMPLETO PARA OS ARQUIVOS DE LOGs
outFilelogDirSparkexiste = DirLog+"\"+CompName+".LOG.dir"+TreeProgram+"existe.txt"
outFilelogDirSparkcriado = DirLog+"\"+CompName+".LOG.dir"+TreeProgram+"criado.txt"
outFilelogDirProgramRaizx64 = DirLog+"\"+CompName+".config.dir"+TreeProgram+"x64existe.txt"
outFilelogDirProgramRaizx64NotExist = DirLog+"\"+CompName+".sem."+TreeProgram+"x64.txt"
outFilelogDirProgramRaizx86 = DirLog+"\"+CompName+".config.dir"+TreeProgram+"x86existe.txt"
outFilelogDirProgramRaizx86NotExist = DirLog+"\"+CompName+".sem."+TreeProgram+"x86.txt"
outFilelogAPDeinstall = DirLog+"\"+CompName+".deinstalled."+TreeProgram+".ok.txt"
outFilelogAPInstall = DirLog+"\"+CompName+".installed."+TreeProgram+".ok.txt"
outFilelogDeinstall = DirLog+"\"+CompName+".deinstall."+TreeProgram+".txt"
outFilelogInstall = DirLog+"\"+CompName+".install."+TreeProgram+".txt"
'VARIAVEL QUE RECEBE O NOME DO EXECUTAVEL DE INSTALACAO
NameEXEInstall = "spark_2_7_7.exe"
'VARIAVEL QUE RECEBE O CAMINHO COMPLETO DO DIRETORIO REMOTO DE LOGs
DirDestinoLog = "\\XXX\logs"
'VARIAVEL QUE RECEBE O CAMINHO COMPLETO DE ORIGEM DO EXECUTAVEL DE INSTALACAO DO SOFTWARE
DirSourceEXE = "\\XXX\XXX\spark_2_7_7.exe"
'VARIAVEL QUE RECEBE O CAMINHO DO lsrunase
pathLSRunAS = "\\XXX\XXX\lsrunase.exe"
'USUARIO DE INSTALACAO
userLSRunAS = "Administrador"
'SENHA CRIPTOGRAFADA DO USUARIO DE INSTALACAO (UTILIZE O LSencrypt.exe PARA ENCRIPTAR)
passLSRunAS = "XXXXXX"
'DOMINIO
domainLSRrunAS = "NOME.DOMINIO.XXX"
'VARIAVEL QUE RECEBE O CAMINHO DO INSTALADOR EXECUTAVEL (JA COM OS PARAMETROS PARA INSTALACAO SILENCIOSA)
commInstallLSRunAS = "\\XXX\XXX\spark_2_7_7.exe -q"
'VARIAVEL QUE RECEBE O CAMINHO DO INSTALADOR EXECUTAVEL NO HOST(JA COM OS PARAMETROS PARA INSTALACAO SILENCIOSA)
commInstall2LSRunAS = DirLog+"\"+NameEXEInstall+" -q"
'VARIAVEL QUE RECEBE O CAMINHO DO DESINSTALADOR EXECUTAVEL (JA COM OS PARAMETROS PARA INSTALACAO SILENCIOSA)
commDeinstallx86LSRunAS = x86+"\Spark\uninstall.exe -q"
'RETORNA A LETRA DA UNIDADE EM TEXTO
runpathLSRunAS = runpathLSRunAS.ExpandEnvironmentStrings("%systemdrive%")
'VARIAVEL QUE RECEBE O NOME DA UNIDADE RESPONSAVEL DENTRO DA DIVISAO
undSetor = "XXX"
'VARIAVEL QUE RECEBE O NOME DA DIVISAO
dSetor = "XXX"
'VARIAVEL QUE RECEBE O NOME DO PROCESSO A SER FINALIZADO (ESCREVA O NOME CERTO SEGUIDO DA EXTENSAO)
strProcessKill = "'Spark.exe'"
'RETORNA O FQDN DO USUARIO
FULLNAME = mid(StrUserDN,PosInicio+3,PosFim-4)
'RETORNA O NOME COMPLETO DO USUARIO
wuser=FULLNAME
'RETORNA O NOME DE USUARIO
wuser2=objUser.UserName



'===================================================
' FUNCOES
'===================================================
'---------------------------------------------------
'FUNCAO PARA PEGAR A LISTA DE SOFTWARES INSTALADOS
'---------------------------------------------------
Function writeList(strBaseKey, objReg, objFile) 
DIM arrSubKeys, strSubKey, strValue, intRet, version, insDate
objReg.EnumKey HKLM, strBaseKey, arrSubKeys 
††††For Each strSubKey In arrSubKeys
††††††††intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, "DisplayName", strValue)
††††††††If intRet <> 0 Then
††††††††††††intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, "QuietDisplayName", strValue)
††††††††End If
††††††††objReg.GetStringValue HKLM, strBaseKey & strSubKey, "DisplayVersion", version
††††††††objReg.GetStringValue HKLM, strBaseKey & strSubKey, "InstallDate", insDate 
††††††††If (strValue <> "") and (intRet = 0) Then
††††††††††††objFile.Write strValue & "," & version & "," & insDate & vbCrLf
††††††††End If
††††Next
End Function
'---------------------------------------------------

'===================================================
' ROTINAS
'===================================================

REM ---------------------------------------------------
REM††ROTINA PARA VERIFICAR SE EXISTE O ARQUIVO ZIP
REM ---------------------------------------------------

If (fso.FolderExists(DirCompactLog)) Then
†††
†††If (fso.FileExists(DirCompactLog+"\"+CompName+".deinstall"+TreeProgram+".zip")) Then
††††††
††††††WScript.Quit()
†††Else
†††
††††††Call VerificaDirLocalLog
†††End If
Else
†††
†††Call VerificaDirLocalLog
End If

REM ---------------------------------------------------
REM††ROTINA PARA VERIFICAR SE EXISTE DIRETORIO DE LOGs PARA DESINSTALACAO DO Spark
REM ---------------------------------------------------
REM FAZ A VERIFICACAO SE EXISTE O DIRETORIO DE LOGs PARA DESINSTALACAO DO Spark. CASO EXISTA, GERA LOG E PROSSEGUE PARA COMPARAx64.
REM CASO NAO EXISTA, ELE CRIA O MESMO, GERA LOG E PROSSEGUE PARA COMPARAx64
Sub VerificaDirLocalLog

If (fso.FolderExists(DirLog)) Then

††††If (fso.FileExists(outFilelogDirSparkexiste)) Then
††††† 'O argumento "iomode" pode ter qualquer uma das seguintes configurações:
††††† 'Valor constante Descrição
††††† 'ForReading 1 Abra um arquivo somente para leitura. Você não pode escrever neste arquivo.
††††† 'ForWriting 2 Abra um arquivo para gravação.
††††† 'ForAppending 8 Abra um arquivo e grave no final do arquivo.
†††††† Set objFilelogDirSparkexiste = objFSOlogDirSparkexiste.OpenTextFile(outFilelogDirSparkexiste,8)
†††††† objFilelogDirSparkexiste.WriteLine("O diretorio de logs para desinstalacao do "+TreeProgram+" na maquina "+CompName+" ja existia. Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
†††††† objFilelogDirSparkexiste.Close
†††††† Call VerificaDirRaizSparkx64
†††††† 'WScript.Quit()

†††Else
††††† Set objFilelogDirSparkexiste = objFSOlogDirSparkexiste.CreateTextFile(outFilelogDirSparkexiste,True)
†††††† objFilelogDirSparkexiste.WriteLine("O diretorio de logs para desinstalacao do "+TreeProgram+" na maquina "+CompName+" ja existia. Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
††††† objFilelogDirSparkexiste.Close
††††† Call VerificaDirRaizSparkx64
†††End If
Else
 
††'CRIAR DIRETORIO VIA VBS
††objFSOManipulaDir.CreateFolder (DirLog)
††objFSOManipulaDir.CreateFolder (DirCompactLog)
††Set objFilelogDirSparkcriado = objFSOlogDirSparkcriado.CreateTextFile(outFilelogDirSparkcriado,True)
††objFilelogDirSparkcriado.WriteLine("O diretorio de logs para desinstalacao do "+TreeProgram+" na maquina "+CompName+" foi criado. Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
††objFilelogDirSparkcriado.Close
End If
'ATIVAR A COPIA DO ARQUIVO EXECUTAVEL DE INSTALACAO, DESCOMENTANDO A LINHA ABAIXO, CASO NAO QUEIRA INSTALAR DA REDE. OBS.: NECESSARIO DESCOMENTAR E COMENTAR AS LINHAS CORRESPONDENTES NA ROTINA DE INSTALACAO.
CmdShell.Run CmdShell.ExpandEnvironmentStrings( "%SystemRoot%\system32\cmd.exe /c copy " & DirSourceEXE & " " & DirLog & """" ), 0, True 
Call VerificaDirRaizSparkx64
'WScript.Quit()

End Sub

REM ---------------------------------------------------
REM††ROTINA PARA VERIFICAR SE EXISTE DIRETORIO RAIZ x64
REM ---------------------------------------------------
Sub VerificaDirRaizSparkx64

If (fso.FolderExists(caminhoprogramax64)) Then


If (fso.FileExists(outFilelogDirProgramRaizx64)) Then
†††††† Set objFilelogDirProgramRaizx64 = objFSOlogDirProgramRaizx64.OpenTextFile(outFilelogDirProgramRaizx64,8)
†††††† objFilelogDirProgramRaizx64.WriteLine("O diretorio do "+TreeProgram+" x64 existe na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
†††††† objFilelogDirProgramRaizx64.Close
†††††† Call VerArqParamDeinstall
†††††† 'WScript.Quit()

†††Else
††††† Set objFilelogDirProgramRaizx64 = objFSOlogDirProgramRaizx64.CreateTextFile(outFilelogDirProgramRaizx64,True)
†††††† objFilelogDirProgramRaizx64.WriteLine("O diretorio do "+TreeProgram+" x64 existe na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
††††† objFilelogDirProgramRaizx64.Close
†††††† Call VerArqParamDeinstall
†††††† 'WScript.Quit()
†††End If
Else If (fso.FileExists(outFilelogDirProgramRaizx64NotExist)) Then
†††††† Set objFilelogDirProgramRaizx64NotExist = objFSOlogDirProgramRaizx64NotExist.OpenTextFile(outFilelogDirProgramRaizx64NotExist,8)
†††††† objFilelogDirProgramRaizx64NotExist.WriteLine("O diretorio do "+TreeProgram+" x64 nao existe na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
†††††† objFilelogDirProgramRaizx64NotExist.Close
†††††† Call VerificaDirRaizSparkx86
†††††† 'WScript.Quit()
†††Else
††††† Set objFilelogDirProgramRaizx64NotExist = objFSOlogDirProgramRaizx64NotExist.CreateTextFile(outFilelogDirProgramRaizx64NotExist,True)
†††††† objFilelogDirProgramRaizx64NotExist.WriteLine("O diretorio do "+TreeProgram+" x64 nao existe na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
††††† objFilelogDirProgramRaizx64NotExist.Close
†††End If
End If
Call VerificaDirRaizSparkx86

'WScript.Quit()

End Sub

REM ---------------------------------------------------
REM††ROTINA PARA VERIFICAR SE EXISTE DIRETORIO RAIZ x86
REM ---------------------------------------------------
Sub VerificaDirRaizSparkx86

If (fso.FolderExists(caminhoprogramax86)) Then


If (fso.FileExists(outFilelogDirProgramRaizx86)) Then
†††††† Set objFilelogDirProgramRaizx86 = objFSOlogDirProgramRaizx86.OpenTextFile(outFilelogDirProgramRaizx86,8)
†††††† objFilelogDirProgramRaizx86.WriteLine("O diretorio do "+TreeProgram+" x86 existe na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
†††††† objFilelogDirProgramRaizx86.Close
†††††† Call VerArqParamDeinstall
†††††† 'WScript.Quit()

†††Else
††††† Set objFilelogDirProgramRaizx86 = objFSOlogDirProgramRaizx86.CreateTextFile(outFilelogDirProgramRaizx86,True)
†††††† objFilelogDirProgramRaizx86.WriteLine("O diretorio do "+TreeProgram+" x86 existe na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
††††† objFilelogDirProgramRaizx86.Close
†††††† Call VerArqParamDeinstall
†††††† 'WScript.Quit()
†††End If
Else If (fso.FileExists(outFilelogDirProgramRaizx86NotExist)) Then
†††††† Set objFilelogDirProgramRaizx86NotExist = objFSOlogDirProgramRaizx86NotExist.OpenTextFile(outFilelogDirProgramRaizx86NotExist,8)
†††††† objFilelogDirProgramRaizx86NotExist.WriteLine("O diretorio do "+TreeProgram+" x86 nao existe na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
†††††† objFilelogDirProgramRaizx86NotExist.Close
†††††† Call RISpark
†††††† 'WScript.Quit()
†††Else
††††† Set objFilelogDirProgramRaizx86NotExist = objFSOlogDirProgramRaizx86NotExist.CreateTextFile(outFilelogDirProgramRaizx86NotExist,True)
†††††† objFilelogDirProgramRaizx86NotExist.WriteLine("O diretorio do "+TreeProgram+" x86 nao existe na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
††††† objFilelogDirProgramRaizx86NotExist.Close
†††End If
End If
Call RISpark

'WScript.Quit()

End Sub

REM ---------------------------------------------------
REM††ROTINA PARA VERIFICAR ARQUIVO DE PARAMETRO DEINSTALL
REM ---------------------------------------------------
Sub VerArqParamDeinstall
††
If (fso.FileExists(APDeinstall)) Then
†† If (fso.FileExists(outFilelogAPDeinstall)) Then
†††††† Set objFilelogAPDeinstall = objFSOlogAPDeinstall.OpenTextFile(outFilelogAPDeinstall,8)
†††††† objFilelogAPDeinstall.WriteLine("O "+TreeProgram+" ja havia sido desinstalado na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
†††††† objFilelogAPDeinstall.Close
†††††† Call VerArqParamInstall
†††††† 'WScript.Quit()
†††Else
††††† Set objFilelogAPDeinstall = objFSOlogAPDeinstall.CreateTextFile(outFilelogAPDeinstall,True)
†††††† objFilelogAPDeinstall.WriteLine("O "+TreeProgram+" ja havia sido desinstalado na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
††††† objFilelogAPDeinstall.Close
††††† Call VerArqParamInstall
†††End If
Else
††'CASO NAO EXISTA O ARQUIVO DE PARAMETRO DE DESINSTALACAO, ELE EXIBE A MSG E CHAMA O PROCEDIMENTO
††rMsgPopup = objShellmsg.Popup("Prezado(a) sr(a). "+wuser+", estamos realizando alguns procedimentos. Solicitamos que esteja na frente do seu computador para acompanhar os passos. Qualquer duvida, entre em contato com a " & undSetor & " na " & dSetor & ".", 20, "User: "+wuser2, 0 + 64)
††
††Call VerSysBeforeUninstall
††'WScript.Quit() 
End If

End Sub

REM ---------------------------------------------------
REM††ROTINA PARA VERIFICAR ARQUIVO DE PARAMETRO INSTALL
REM ---------------------------------------------------
Sub VerArqParamInstall

If (fso.FileExists(APInstall)) Then
†† If (fso.FileExists(outFilelogAPInstall)) Then
†††††† Set objFilelogAPInstall = objFSOlogAPInstall.OpenTextFile(outFilelogAPInstall,8)
†††††† objFilelogAPInstall.WriteLine("O "+TreeProgram+" ja havia sido instalado na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
†††††† objFilelogAPInstall.Close
†††††† 'WScript.Quit()
†††Else
††††† Set objFilelogAPInstall = objFSOlogAPInstall.CreateTextFile(outFilelogAPInstall,True)
†††††† objFilelogAPInstall.WriteLine("O "+TreeProgram+" ja havia sido instalado na maquina "+CompName+". Este log foi gerado em "& DInfo &" as "& HInfo &" pelo usuario "+UName)
††††† objFilelogAPInstall.Close
††††† 'WScript.Quit()
†††End If
 Call Compactar
 rMsgPopup = objShellmsg.Popup("Prezado(a) sr(a). "+wuser+", os procedimentos foram finalizados. Agradecemos a compreensao!! Lembrando que qualquer duvida, entre em contato com a " & undSetor & " na " & dSetor & ".", 20, "User: "+wuser2, 0 + 64)
 WScript.Quit()
Else
††
††Call RISpark
††'WScript.Quit() 
End If

End Sub

REM ---------------------------------------------------
REM††ROTINA DE VERIFICACAO ANTES DE DESINSTALAR Spark
REM ---------------------------------------------------
Sub VerSysBeforeUninstall

'CHAMADA NA FUNCAO PARA PEGAR A LISTA DOS SOFTWARES INSTALADOS
If (objFSO.FileExists(outFile)) Then
††Set objFile = objFSO.OpenTextFile(outFile,8)
††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"SOFTWARES INSTALADOS DEPOIS"+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"-----------")
††writeList "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
††writeList "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
††††
†††'FOR PARA PEGAR OS PROCESSOS CORRENTES DEPOIS
†††Set colProcess = objWMIService.ExecQuery _
†††("Select * from Win32_Process")†††
†††countprocess = 0
†††For Each objProcess in colProcess
†††strList = strList & vbCr & _
†††objProcess.Name+vbnewline
†††countprocess = countprocess + 1
†††Next
††
††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"PROCESSOS CORRENTES DEPOIS:"+vbnewline+"TOTAL DE " & countprocess & " PROCESSOS ABERTOS."+vbnewline+"-----------"+vbnewline+strList) 
††objFile.Close
††If (fso.FileExists(APInstall)) Then
†††WScript.Quit()
††Else
†††Call RDSpark
††End If
Else
††Set objFile = objFSO.CreateTextFile(outFile,True)
††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"SOFTWARES INSTALADOS ANTES"+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"-----------")
††writeList "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
††writeList "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
††††
†††'FOR PARA PEGAR OS PROCESSOS CORRENTES ANTES
†††Set colProcess = objWMIService.ExecQuery _
†††("Select * from Win32_Process")
†††countprocess = 0
†††For Each objProcess in colProcess
†††strList = strList & vbCr & _
†††objProcess.Name+vbnewline
†††countprocess = countprocess + 1
†††Next
††
††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"PROCESSOS CORRENTES ANTES:"+vbnewline+"TOTAL DE " & countprocess & " PROCESSOS ABERTOS."+vbnewline+"-----------"+vbnewline+strList)
††objFile.Close
††If (fso.FileExists(APInstall)) Then
†††WScript.Quit()
††Else
†††Call RDSpark
††End If
End if
'---------------------------------------------------
End Sub

REM ---------------------------------------------------
REM††ROTINA PARA DESINSTALAR Spark
REM ---------------------------------------------------
Sub RDSpark
'FALTA ESCREVER A ROTINA PARA 64 BITS

If (fso.FolderExists(caminhoprogramax86)) Then
††If (fso.FileExists(caminhoprogramax86+"\"+TreeProgramEXE)) Then

††††If (objFSO.FileExists(outFilelogDeinstall)) Then
††††††Set objFile = objFSO.OpenTextFile(outFilelogDeinstall,8)
††††††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
††††††'PARAR PROCESSO DO SPARK
††††††Set colProcess = objWMIService.ExecQuery _
††††††††††††("Select * from Win32_Process Where Name = " & strProcessKill )
†††††††††If colProcess.count > 0 then
††††††††††††
††††††††††††objFile.WriteLine(vbnewline+"O processo do "& strProcessKill &" existe e será encerrado.")
††††††††††††For Each objProcess in colProcess
†††††††††††††††objProcess.Terminate()
††††††††††††Next

††††††††††††objFile.WriteLine(vbnewline+"O processo do "& strProcessKill &" foi finalizado.")
†††††††††Else

††††††††††††objFile.WriteLine(vbnewline+"O processo do "& strProcessKill &" nao estava sendo executado.")
†††††††††End if 
††††††'DESINSTALAR SPARK
††††††'VARIAVEL QUE RECEBE O COMANDO COMPLETO DE DESINSTALACAO PARA UTILIZAR NO lsrunase
††††††commGeralLSRunAS = "" & pathLSRunAS & " /user:" & userLSRunAS & " /password:" & passLSRunAS & " /domain:" & domainLSRrunAS & " /command:" & Chr(34) & commDeinstallx86LSRunAS & Chr(34) & " /runpath:" & Chr(34) & runpathLSRunAS & "\" & Chr(34) & ""
††††††'SETAR COM 0 O VALOR DA VARIAVEL DE RESPOSTA DO lsrunas
††††††resultLSRunAS = 0
††††††'INSTALA O PROGRAMA
††††††resultLSRunAS = objShellManipulaEXE.Run(commGeralLSRunAS, 0 ,True)
††††††'ESCRITA NO ARQUIVO DE LOG [0-sucesso/3010-sucesso&requer reboot]
††††††Wscript.Sleep 500
††††††If (resultLSRunAS = 0) Or (resultLSRunAS = 3010) Then

†††††††††'CONFIRMAR SE AINDA EXISTE O DIRETORIO x86 DO SOFTWARE
†††††††††countconfirm = 0
†††††††††'INICIA O LOOP COM O CONTADOR EM 0, CASO AINDA TENHA O DIRETORIO x86, QUANDO CHEGAR A 10, ELE SAI DO LOOP
†††††††††For countconfirm = 0 to countconfirm = 10
††††††††††††
††††††††††††'ADICIONA UM TEMPO DE ESPERA DE 18 SEGUNDOS PARA EXECUTAR A PROXIMA INSTRUCAO (AO FINAL VAI DAR UM TEMPO DE 3 MINUTOS)
††††††††††††WScript.Sleep 18000
††††††††††††If (fso.FolderExists(caminhoprogramax86)) Then
†††††††††††††††
†††††††††††††††'ADICIONA UM TEMPO A MAIS DE 12 SEGUNDOS (AO FINAL VAI DAR UM TEMPO DE 2 MINUTOS A MAIS)
†††††††††††††††WScript.Sleep 12000
††††††††††††Else
†††††††††††††††
†††††††††††††††'SAI DO LOOP, CASO NAO EXISTA MAIS O DIRETORIO x86
†††††††††††††††Exit For
††††††††††††End If
††††††††††††
††††††††††††'INCREMENTA O CONTADOR
††††††††††††countconfirm = countconfirm + 1
†††††††††Next
†††††††††
†††††††††'GERAR ARQUIVO DE PARAMETRO
†††††††††Set objFile = objFSO.CreateTextFile(APDeinstall,True)
†††††††††objFile.WriteLine (TreeProgram+" desinstalado com sucesso em "& DInfo &" as "& HInfo &" - USUARIO LOGADO: "+UName+".")
†††††††††objFile.Close
†††††††††'CHAMAR ROTINA DE VERIFICACAO DE SOFTWARES INSTALADOS E PROCESSOS CORRENTES
†††††††††Call VerSysAfterUninstall
††††††
†††††††††'MSG PARA REINICIAR O SISTEMA APOS DESINSTALAR O PROGRAMA
†††††††††rMsgPopup = objShellmsg.Popup("Prezado(a) sr(a). "+wuser+", seu computador vai reiniciar em alguns segundos. Qualquer duvida, entre em contato com a " & undSetor & " na " & dSetor & ".", 20, "User: "+wuser2, 0 + 48)
†††††††††'REINICIAR O COMPUTADOR
†††††††††CmdShell.Run "wmic os where Primary='TRUE' reboot"
†††††††††WScript.Quit()
††††††Else
†††††††††Set objFile = objFSO.OpenTextFile(outFilelogDeinstall,8)
†††††††††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
†††††††††objFile.WriteLine (vbnewline+"Falha ao desinstalar o " & TreeProgram & ".")
†††††††††objFile.Close
††††††End If
†††Else
††††††Set objFile = objFSO.CreateTextFile(outFilelogDeinstall,True)
††††††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
††††††'PARAR PROCESSO DO SPARK
††††††Set colProcess = objWMIService.ExecQuery _
††††††††††††("Select * from Win32_Process Where Name = " & strProcessKill )
†††††††††If colProcess.count > 0 then

††††††††††††objFile.WriteLine(vbnewline+"O processo do "& strProcessKill &" existe e será encerrado.")
††††††††††††For Each objProcess in colProcess
†††††††††††††††objProcess.Terminate()
††††††††††††Next

††††††††††††objFile.WriteLine(vbnewline+"O processo do "& strProcessKill &" foi finalizado.")
†††††††††Else

††††††††††††objFile.WriteLine(vbnewline+"O processo do "& strProcessKill &" nao estava sendo executado.")
†††††††††End if 
††††††'DESINSTALAR SPARK
††††††'VARIAVEL QUE RECEBE O COMANDO COMPLETO DE DESINSTALACAO PARA UTILIZAR NO lsrunase
††††††commGeralLSRunAS = "" & pathLSRunAS & " /user:" & userLSRunAS & " /password:" & passLSRunAS & " /domain:" & domainLSRrunAS & " /command:" & Chr(34) & commDeinstallx86LSRunAS & Chr(34) & " /runpath:" & Chr(34) & runpathLSRunAS & "\" & Chr(34) & ""
††††††'SETAR COM 0 O VALOR DA VARIAVEL DE RESPOSTA DO lsrunas
††††††resultLSRunAS = 0
††††††'INSTALA O PROGRAMA
††††††resultLSRunAS = objShellManipulaEXE.Run(commGeralLSRunAS, 0 ,True)
††††††'ESCRITA NO ARQUIVO DE LOG [0-sucesso/3010-sucesso&requer reboot]
††††††Wscript.Sleep 500
††††††If (resultLSRunAS = 0) Or (resultLSRunAS = 3010) Then††††††

†††††††††'CONFIRMAR SE AINDA EXISTE O DIRETORIO x86 DO SOFTWARE
†††††††††countconfirm = 0
†††††††††'INICIA O LOOP COM O CONTADOR EM 0, CASO AINDA TENHA O DIRETORIO x86, QUANDO CHEGAR A 10, ELE SAI DO LOOP
†††††††††For countconfirm = 0 to countconfirm = 10
††††††††††††
††††††††††††'ADICIONA UM TEMPO DE ESPERA DE 18 SEGUNDOS PARA EXECUTAR A PROXIMA INSTRUCAO (AO FINAL VAI DAR UM TEMPO DE 3 MINUTOS)
††††††††††††WScript.Sleep 18000
††††††††††††If (fso.FolderExists(caminhoprogramax86)) Then
†††††††††††††††
†††††††††††††††'ADICIONA UM TEMPO A MAIS DE 12 SEGUNDOS (AO FINAL VAI DAR UM TEMPO DE 2 MINUTOS A MAIS)
†††††††††††††††WScript.Sleep 12000
††††††††††††Else
†††††††††††††††
†††††††††††††††'SAI DO LOOP, CASO NAO EXISTA MAIS O DIRETORIO x86
†††††††††††††††Exit For
††††††††††††End If
††††††††††††
††††††††††††'INCREMENTA O CONTADOR
††††††††††††countconfirm = countconfirm + 1
†††††††††Next
†††††††††
†††††††††'GERAR ARQUIVO DE PARAMETRO
†††††††††Set objFile = objFSO.CreateTextFile(APDeinstall,True)
†††††††††objFile.WriteLine (TreeProgram+" desinstalado com sucesso em "& DInfo &" as "& HInfo &" - USUARIO LOGADO: "+UName+".")
†††††††††objFile.Close
†††††††††'CHAMAR ROTINA DE VERIFICACAO DE SOFTWARES INSTALADOS E PROCESSOS CORRENTES
†††††††††Call VerSysAfterUninstall
†††††††††'MSG PARA REINICIAR O SISTEMA APOS DESINSTALAR O PROGRAMA
†††††††††rMsgPopup = objShellmsg.Popup("Prezado(a) sr(a). "+wuser+", seu computador vai reiniciar em alguns segundos. Qualquer duvida, entre em contato com a " & undSetor & " na " & dSetor & ".", 20, "User: "+wuser2, 0 + 48)
†††††††††Set objFile = objFSO.OpenTextFile(outFilelogDeinstall,8)
†††††††††objFile.WriteLine (vbnewline+"Reiniciando††a maquina em "& DInfo &" as "& HInfo &" - USUARIO LOGADO: "+UName+".")
†††††††††objFile.Close
†††††††††'REINICIAR O COMPUTADOR
†††††††††CmdShell.Run "wmic os where Primary='TRUE' reboot"
†††††††††WScript.Quit()
††††††Else
†††††††††Set objFile = objFSO.OpenTextFile(outFilelogDeinstall,8)
†††††††††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
†††††††††objFile.WriteLine (vbnewline+"Falha ao desinstalar o " & TreeProgram & ".")
†††††††††objFile.Close
††††††End If
†††End If
††Else
††††††††Set objFile = objFSO.CreateTextFile(outFilelogDeinstall,True)
††††††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
††††††objFile.WriteLine (vbnewline+"Nao foi encontrado o executavel do software " & TreeProgram & " dentro do diretorio do mesmo. E recomendavel deletar o diretorio para poder realizar nova instalacao.")
††††††objFile.Close
 †††††'DELETAR DIRETORIO VIA VBS - OBS.: NECESSITA DIREITOS ELEVADOS
††††††'objFSOManipulaDir.DeleteFolder caminhoprogramax86,True
†††††'set objFSOManipulaDir= objFSO.GetFolder(caminhoprogramax86)
†††††'objFSOManipulaDir.Delete
†††††'Call VerSysAfterUninstall
††††††'WScript.Quit()
††End If
Else
†††††Set objFile = objFSO.CreateTextFile(outFilelogDeinstall,True)
†††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
†††objFile.WriteLine (vbnewline+"O software " & TreeProgram & " nao foi encontrado.")
†††objFile.Close
End If

WScript.Quit()

End Sub


REM ---------------------------------------------------
REM††ROTINA DE VERIFICACAO DEPOIS DE DESINSTALAR Spark
REM ---------------------------------------------------
Sub VerSysAfterUninstall
'MsgBox "vc entrou na subrotina de verificacao antes de desinstalar o spark,16,teste"

'CHAMADA NA FUNCAO PARA PEGAR A LISTA DOS SOFTWARES INSTALADOS
If (objFSO.FileExists(outFile)) Then
††
††Set objFile = objFSO.OpenTextFile(outFile,8)
††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"SOFTWARES INSTALADOS DEPOIS DE DESINSTALAR"+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"-----------")
††writeList "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
††writeList "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
††††
†††'FOR PARA PEGAR OS PROCESSOS CORRENTES DEPOIS
†††countprocess = 0
†††Set colProcess = objWMIService.ExecQuery _
†††("Select * from Win32_Process")†††
†††For Each objProcess in colProcess
††††††strList = strList & vbCr & _
††††††objProcess.Name+vbnewline
††††††countprocess = countprocess + 1
†††Next
††
††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"PROCESSOS CORRENTES DEPOIS DE DESINSTALAR:"+vbnewline+"TOTAL DE " & countprocess & " PROCESSOS ABERTOS."+vbnewline+"-----------"+vbnewline+strList) 
††objFile.Close
††If (fso.FileExists(APInstall)) Then
†††
†††WScript.Quit()
††Else
††
†††'Call RDSpark
††End If
Else
††
††Set objFile = objFSO.CreateTextFile(outFile,True)
††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"SOFTWARES INSTALADOS ANTES"+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"-----------")
††writeList "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
††writeList "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", objReg, objFile
††††
†††'FOR PARA PEGAR OS PROCESSOS CORRENTES ANTES
†††countprocess = 0
†††Set colProcess = objWMIService.ExecQuery _
†††("Select * from Win32_Process")
†††For Each objProcess in colProcess
††††††strList = strList & vbCr & _
††††††objProcess.Name+vbnewline
††††††countprocess = countprocess + 1
†††Next
††
††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"PROCESSOS CORRENTES ANTES:"+vbnewline+"TOTAL DE " &countprocess & " PROCESSOS ABERTOS."+vbnewline+"-----------"+vbnewline+strList)
††objFile.Close
††If (fso.FileExists(APInstall)) Then
†††
†††WScript.Quit()
††Else
†††
†††'Call RDSpark
††End If

End if
'---------------------------------------------------
End Sub


REM ---------------------------------------------------
REM††ROTINA PARA INSTALAR O PROGRAMA
REM ---------------------------------------------------
Sub RISpark

††'EXIBE A MSG DE INSTALACAO
††rMsgPopup = objShellmsg.Popup("Prezado(a) sr(a). "+wuser+", resta realizar apenas mais um procedimento. Por favor, aguarde... Qualquer duvida, entre em contato com a " & undSetor & " na " & dSetor & ".", 20, "User: "+wuser2, 0 + 64)

If fsoManipulaEXE.FileExists(pathLSRunAS) Then

†††'VARIAVEL QUE RECEBE O COMANDO COMPLETO DE INSTALACAO PARA UTILIZAR NO lsrunase
†††'commGeralLSRunAS = "" & pathLSRunAS & " /user:" & userLSRunAS & " /password:" & passLSRunAS & " /domain:" & domainLSRrunAS & " /command:" & Chr(34) & commInstallLSRunAS & Chr(34) & " /runpath:" & Chr(34) & runpathLSRunAS & "\" & Chr(34) & ""
†††'DESCOMENTAR A LINHA ABAIXO E COMENTAR A LINHA ACIMA CASO QUEIRA INSTALAR DO PROPRIO HOST. OBS.: E NECESSARIO DESCOMENTAR "NO COMECO" A LINHA QUE COPIA O EXECUTAVEL DE INSTALACAO PARA O HOST.
†††commGeralLSRunAS = "" & pathLSRunAS & " /user:" & userLSRunAS & " /password:" & passLSRunAS & " /domain:" & domainLSRrunAS & " /command:" & Chr(34) & commInstall2LSRunAS & Chr(34) & " /runpath:" & Chr(34) & runpathLSRunAS & "\" & Chr(34) & ""
†††'SETAR COM 0 O VALOR DA VARIAVEL DE RESPOSTA DO lsrunas
†††resultLSRunAS = 0
†††'INSTALA O PROGRAMA
†††resultLSRunAS = objShellManipulaEXE.Run(commGeralLSRunAS, 0 ,True)
†††'ESCRITA NO ARQUIVO DE LOG [0-sucesso/3010-sucesso&requer reboot]
†††Set objFile = objFSO.CreateTextFile(outFilelogInstall,True)
†††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
†††objFile.WriteLine (vbnewline+"Instalando o " & TreeProgram & ", verifique o arquivo " & APInstall & ".")
†††Wscript.Sleep 500
†††
†††If (resultLSRunAS = 0) Or (resultLSRunAS = 3010) Then


†††††††††'CONFIRMAR SE EXISTE O DIRETORIO x86 DO SOFTWARE
†††††††††countconfirm = 0
†††††††††'INICIA O LOOP COM O CONTADOR EM 0, CASO AINDA TENHA O DIRETORIO x86, QUANDO CHEGAR A 40, ELE SAI DO LOOP
†††††††††For countconfirm = 0 to countconfirm = 40
††††††††††††
††††††††††††'ADICIONA UM TEMPO DE ESPERA DE 18 SEGUNDOS PARA EXECUTAR A PROXIMA INSTRUCAO (AO FINAL VAI DAR UM TEMPO DE 12 MINUTOS)
††††††††††††WScript.Sleep 18000
††††††††††††If (fso.FolderExists(caminhoprogramax86)) Then
†††††††††††††††If (fso.FileExists(caminhoprogramax86+"\"+TreeProgramEXE)) Then
††††††††††††††††††
††††††††††††††††††'SAI DO LOOP, CASO EXISTA O DIRETORIO x86
††††††††††††††††††Exit For
†††††††††††††††Else
†††††††††††††††
††††††††††††††††††'ADICIONA UM TEMPO A MAIS DE 12 SEGUNDOS (AO FINAL VAI DAR UM TEMPO DE 2 MINUTOS A MAIS)
††††††††††††††††††WScript.Sleep 12000†††††††††††††††
†††††††††††††††End If
††††††††††††Else
†††††††††††††††
†††††††††††††††'ADICIONA UM TEMPO A MAIS DE 12 SEGUNDOS (AO FINAL VAI DAR UM TEMPO DE 2 MINUTOS A MAIS)
†††††††††††††††WScript.Sleep 12000†††
††††††††††††End IF
††††††††††††
††††††††††††'INCREMENTA O CONTADOR
††††††††††††countconfirm = countconfirm + 1
†††††††††Next
†††††††††
††††††
††††††'GERAR ARQUIVO DE PARAMETRO
††††††Set objFile = objFSO.CreateTextFile(APInstall,True)
††††††objFile.WriteLine (TreeProgram & " instalado com sucesso em "& DInfo &" as "& HInfo &" - USUARIO LOGADO: "+UName+".")
††††††objFile.Close
††††††'CHAMAR ROTINA DE VERIFICACAO DE SOFTWARES INSTALADOS E PROCESSOS CORRENTES
††††††Call VerSysBeforeUninstall
††††††WScript.Quit()
†††Else

††††††Set objFile = objFSO.OpenTextFile(outFilelogInstall,8)
††††††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
††††††objFile.WriteLine (vbnewline+"Falha ao instalar o " & TreeProgram & ".")
††††††objFile.Close
††††††WScript.Quit()
†††End If
†††
Else
†††Set objFile = objFSO.CreateTextFile(outFilelogInstall,True)
†††objFile.WriteLine (vbnewline+"-----------"+vbnewline+"USUARIO LOGADO: "+UName+"."+vbnewline+"DATA: "& DInfo &" AS: "& HInfo &"."+vbnewline+"MAQUINA: "+CompName+vbnewline+"-----------")
†††objFile.WriteLine (vbnewline+"Caminho: " & pathLSRunAS & " invalido. Verifique o UNC correto para o LSRunAS.")
†††objFile.Close
†††WScript.Quit()
End If

End Sub

REM ---------------------------------------------------
REM††ROTINA PARA COMPACTAR O DIRETORIO DE LOGs
REM ---------------------------------------------------
Sub Compactar

'DELETA ARQUIVO DE INSTALACAO DA DIRETORIO DE LOGs ANTES DE COMPACTAR
CmdShell.Run CmdShell.ExpandEnvironmentStrings( "%SystemRoot%\system32\cmd.exe /c del /F " & DirLog & "\" &NameEXEInstall & """""" ), 0, True 

Set FsoManipulaZip = CreateObject("Scripting.FileSystemObject") 
Set ShellApplicationManipulaZip = CreateObject("Shell.Application") 
 
'RECEBE O CAMINHO DO DIRETORIO DE ORIGEM PARA SER COMPACTADO
strDirToCompact = DirLog
 
Set objFolder = FsoManipulaZip.GetFolder(strDirToCompact) 
Namedir = objFolder.Name 
'CASO QUEIRA SABER QUAL DIRETORIO ESTA SENDO COMPACTADO, REMOVA O COMENTARIO DA LINHA ABAIXO
'WScript.Echo "Nome do arquivo selecionado: " &††Namedir 

If (fso.FolderExists(DirCompactLog)) Then 
†††'RECEBE O CAMINHO DE DESTINO DO ARQUIVO COMPACTADO
†††strDirCompactado = DirCompactLog
 
†††strDirCompactado = fsoManipulaZip.GetAbsolutePathName (strDirCompactado) 
†††strDirToCompact = fsoManipulaZip.GetAbsolutePathName (strDirToCompact) 
 
†††strDirCompactado = strDirCompactado & "\" & Namedir & ".zip" 
 
 
†††Set ObjManipulaZip††= FsoManipulaZip.OpenTextFile(strDirCompactado, 8, True, 0) 
††††††ObjManipulaZip.Write "" 
††††††ObjManipulaZip.Close 
†††Set ObjManipulaZip = Nothing 
†††Set FsoManipulaZip = Nothing 
 
 
†††ShellApplicationManipulaZip.NameSpace(strDirCompactado).CopyHere ShellApplicationManipulaZip.NameSpace(strDirToCompact).Items, &H0& 
 
 
†††Do Until ShellApplicationManipulaZip.NameSpace(strDirCompactado).Items.Count = †††††††††ShellApplicationManipulaZip.NameSpace(strDirToCompact).Items.Count 
†††WScript.Sleep 100 
†††Loop 
†††
†††'CASO QUEIRA SABER QUANTOS ARQUIVOS FORAM COMPACTADOS, REMOVA O COMENTARIO DAS LINHAS ABAIXO
††††'StrCount = "Diretorio compactado com sucesso! Numeros de arquivo compactados: "††
††††'StrCount = StrCount & ShellApplicationManipulaZip.NameSpace(strDirToCompact).Items.Count 
††††'MsgBox(StrCount) 
 
†††Set ShellApplicationManipulaZip = Nothing 
Else

†††objFSOManipulaDir.CreateFolder (DirCompactLog)
†††'RECEBE O CAMINHO DE DESTINO DO ARQUIVO COMPACTADO
†††strDirCompactado = DirCompactLog
 
†††strDirCompactado = fsoManipulaZip.GetAbsolutePathName (strDirCompactado) 
†††strDirToCompact = fsoManipulaZip.GetAbsolutePathName (strDirToCompact) 
 
†††strDirCompactado = strDirCompactado & "\" & Namedir & ".zip" 
 
 
†††Set ObjManipulaZip††= FsoManipulaZip.OpenTextFile(strDirCompactado, 8, True, 0) 
††††††ObjManipulaZip.Write "" 
††††††ObjManipulaZip.Close 
†††Set ObjManipulaZip = Nothing 
†††Set FsoManipulaZip = Nothing 
 
 
†††ShellApplicationManipulaZip.NameSpace(strDirCompactado).CopyHere ShellApplicationManipulaZip.NameSpace(strDirToCompact).Items, &H0& 
 
 
†††Do Until ShellApplicationManipulaZip.NameSpace(strDirCompactado).Items.Count = †††††††††ShellApplicationManipulaZip.NameSpace(strDirToCompact).Items.Count 
†††WScript.Sleep 100 
†††Loop 
 †††
†††'CASO QUEIRA SABER QUANTOS ARQUIVOS FORAM COMPACTADOS, REMOVA O COMENTARIO DAS LINHAS ABAIXO
††††'StrCount = "Diretorio compactado com sucesso! Numeros de arquivo compactados: "††
††††'StrCount = StrCount & ShellApplicationManipulaZip.NameSpace(strDirToCompact).Items.Count 
††††'MsgBox(StrCount) 
 
†††Set ShellApplicationManipulaZip = Nothing

End If
'COPIAR O DIRETORIO DE LOG COMPACTADO PARA O SERVIDOR
'O zero significa que o comando e executado oculto e o True aguarda o termino do comando Executar antes de executar o proximo comando.
CmdShell.Run CmdShell.ExpandEnvironmentStrings( "%SystemRoot%\system32\cmd.exe /c copy " & strDirCompactado & " " & DirDestinoLog & """" ), 0, True 
End Sub

Scripts recomendados

Insertion Sort em Scilab

Crivo de Eratůstenes Simples em XBase (Clipper)

gitignore para gerenciar dotfiles

Welcome!

MoonScript - Agenda telefŰnica semifuncional em 101 linhas


  

ComentŠrios

Nenhum comentŠrio foi encontrado.


Contribuir com comentŠrio