Software via GPO no Logon de Usuário - SAMBA e AD
Publicado por Ricardo Xerfan (última atualização em 13/12/2018)
[ Hits: 3.438 ]
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
Tranposta da matriz em Haskell
Programação para sistemas embarcados em Assembly
Nenhum comentário foi encontrado.
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Instalando e usando o Dconf Editor, o "regedit" para Linux
Como instalar o navegador TOR no seu Linux
Instalando Zoom Client no Ubuntu 24.04 LTS
Manjaro Substituindo Ubuntu no Desktop (14)
problemas com artefatos na instalação (29)
Dificuldade em ler binário (18)
Encriptografa... as particoes com LUKS, o que poderia dar errado? (4)