Software via GPO no Logon de Usuário - SAMBA e AD
Publicado por Ricardo Xerfan (última atualização em 13/12/2018)
[ Hits: 4.206 ]
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
trocar permissão, dono e grupo de arquivos ou diretórios
Fazendo um ajuste não linear em dados experimentais - FORTRAN 90
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Assisti Avatar 3: Fogo e Cinzas (4)
Conky, alerta de temperatura alta (11)









