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

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

[ Hits: 779 ]

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

ProgramaÁ„o para sistemas embarcados em Assembly

Crivo de Eratůstenes Simples em XBase (Clipper)

Fortran - Integrais

Insertion Sort em Scilab

Conectar o gns3 na Internet


  

ComentŠrios

Nenhum comentŠrio foi encontrado.


Contribuir com comentŠrio




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts