Software via GPO no Logon de Usuário - SAMBA e AD
Publicado por Ricardo Xerfan (última atualização em 13/12/2018)
[ Hits: 4.038 ]
Download script-final-deinstall-install-envio.vbs
VBScript para desinstalar e instalar software via GPO no logon de usuário - SAMBA e AD.
'---------------------------------------------------
' 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
Fazendo um ajuste não linear em dados experimentais - FORTRAN 90
Dicas e truques Matematica Básica
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)









