Software via GPO no Logon de Usuário - SAMBA e AD
Publicado por Ricardo Xerfan (última atualização em 13/12/2018)
[ Hits: 3.626 ]
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
Perguntas e respostas com Assembly e NASM
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta