Commit 0e2451b7dd32f78492dd64de6f21d5c8265115d6

Authored by Eric Menezes Noronha
1 parent cf0bd127
Exists in master

-Acrescentado debugador do cacicservice, pois devido ao script de instalação pel…

…o netlogon, o serviço estava sendo instalado sem ser com o tipo idetarivo.
-Acrescentado loop de espera para pegar o nome de usuário logado, pois às vezes o mapa executava antes de realizar o login completo na máquina.
CACIC_Library.pas
... ... @@ -60,6 +60,7 @@ uses Windows,
60 60 Tlhelp32,
61 61 ComObj,
62 62 ShellAPI,
  63 + WinSvc,
63 64 Variants;
64 65  
65 66 type
... ... @@ -124,7 +125,7 @@ type
124 125 {*------------------------------------------------------------------------------
125 126 Classe geral da biblioteca
126 127 -------------------------------------------------------------------------------}
127   - TCACIC = class(TCACIC_Windows)
  128 + TCACIC = class(TCACIC_Windows)
128 129 constructor Create();
129 130 destructor Destroy; override;
130 131 private
... ... @@ -140,7 +141,7 @@ type
140 141 Windows : TCACIC_Windows; /// objeto de informacoes de windows
141 142 function checkIfFileDateIsToday(pStrFileName : String) : Boolean;
142 143 function countOccurences(const strSubText, strText: string) : Integer;
143   - function createOneProcess(pStrCmd: string; pBoolWait: boolean; pWordShowWindow : word = SW_HIDE) : Boolean;
  144 + function createOneProcess(pStrCmd: string; pBoolWait: boolean; pWordShowWindow : word = SW_HIDE; waitMilliseconds : cardinal = INFINITE) : Boolean;
144 145 function capitalize (CONST s: STRING) : String;
145 146 function checkModule(pStrModuleFileName, pStrModuleHashCode : String) : String;
146 147 function deCrypt(pStrCipheredText : String; pBoolShowInLog : boolean = true; pBoolForceDecrypt : boolean = false) : String;
... ... @@ -199,6 +200,10 @@ type
199 200 procedure writeDailyLog(pStrLogMessage : String; pStrFileNameSuffix : String = '');
200 201 procedure writeDebugLog(pStrDebugMessage : String); override;
201 202 procedure writeExceptionLog(pStrExceptionMessage, pStrExceptionClassName : String; pStrAddedMessage : String = ''); override;
  203 +
  204 + function serviceGetType(sMachine, sService: PChar): DWORD;
  205 + function serviceStart(sMachine,sService : string ) : boolean;
  206 + function ServiceGetStatus(sMachine, sService: PChar): DWORD;
202 207 end;
203 208  
204 209 // Declaração de constantes para a biblioteca
... ... @@ -1091,6 +1096,47 @@ begin
1091 1096 end;
1092 1097 end;
1093 1098  
  1099 +function TCACIC.serviceStart(sMachine,sService : string ) : boolean;
  1100 +var
  1101 + schm,schs : SC_Handle;
  1102 + ss : TServiceStatus;
  1103 + psTemp : PChar;
  1104 + dwChkP : DWord;
  1105 +begin
  1106 + ss.dwCurrentState := 0;
  1107 + schm := OpenSCManager(PChar(sMachine),Nil,SC_MANAGER_CONNECT);
  1108 + if(schm > 0)then
  1109 + begin
  1110 + schs := OpenService(schm,PChar(sService),SERVICE_START or SERVICE_QUERY_STATUS);
  1111 + if(schs > 0)then
  1112 + begin
  1113 + psTemp := Nil;
  1114 + if(StartService(schs,0,psTemp))then
  1115 + begin
  1116 + if(QueryServiceStatus(schs,ss))then
  1117 + begin
  1118 + while(SERVICE_RUNNING <> ss.dwCurrentState)do
  1119 + begin
  1120 + dwChkP := ss.dwCheckPoint;
  1121 + Sleep(ss.dwWaitHint);
  1122 + if(not QueryServiceStatus(schs,ss))then
  1123 + begin
  1124 + break;
  1125 + end;
  1126 + if(ss.dwCheckPoint < dwChkP)then
  1127 + begin
  1128 + break;
  1129 + end;
  1130 + end;
  1131 + end;
  1132 + end;
  1133 + CloseServiceHandle(schs);
  1134 + end;
  1135 + CloseServiceHandle(schm);
  1136 + end;
  1137 + Result := SERVICE_RUNNING = ss.dwCurrentState;
  1138 +end;
  1139 +
1094 1140 procedure TCACIC.writeDebugLog(pStrDebugMessage : String);
1095 1141 Begin
1096 1142 if isInDebugMode(copy(pStrDebugMessage,1,pos(':',pStrDebugMessage)-1)) then
... ... @@ -1224,7 +1270,7 @@ end;
1224 1270 @param p_wait TRUE se deve aguardar término da excução, FALSE caso contrário
1225 1271 @param p_showWindow Constante que define o tipo de exibição da janela do aplicativo
1226 1272 -------------------------------------------------------------------------------}
1227   -function TCACIC.createOneProcess(pStrCmd: string; pBoolWait: boolean; pWordShowWindow : word = SW_HIDE): boolean;
  1273 +function TCACIC.createOneProcess(pStrCmd: string; pBoolWait: boolean; pWordShowWindow : word = SW_HIDE; waitMilliseconds : cardinal = INFINITE): boolean;
1228 1274 var
1229 1275 SUInfo: TStartupInfo;
1230 1276 ProcInfo: TProcessInformation;
... ... @@ -1244,8 +1290,7 @@ begin
1244 1290 nil,
1245 1291 nil,
1246 1292 false,
1247   - CREATE_NEW_CONSOLE or
1248   - BELOW_NORMAL_PRIORITY_CLASS,
  1293 + NORMAL_PRIORITY_CLASS,
1249 1294 nil,
1250 1295 nil,
1251 1296 SUInfo,
... ... @@ -1253,7 +1298,7 @@ begin
1253 1298 if (Result) then
1254 1299 begin
1255 1300 if(pBoolWait) then begin
1256   - WaitForSingleObject(ProcInfo.hProcess, INFINITE);
  1301 + WaitForSingleObject(ProcInfo.hProcess, waitMilliseconds);
1257 1302 CloseHandle(ProcInfo.hProcess);
1258 1303 CloseHandle(ProcInfo.hThread);
1259 1304 end;
... ... @@ -1950,5 +1995,102 @@ begin
1950 1995 end;
1951 1996 end;
1952 1997 end;
  1998 +
  1999 +function TCACIC.ServiceGetType(sMachine, sService: PChar): DWORD;
  2000 + {*******************************************}
  2001 + {*** Parameters: ***}
  2002 + {*** sService: specifies the name of the service to open
  2003 + {*** sMachine: specifies the name of the target computer
  2004 + {*** ***}
  2005 + {*** Return Values: ***}
  2006 +
  2007 +var
  2008 + SCManHandle, SvcHandle: SC_Handle;
  2009 + SS: TServiceStatus;
  2010 + dwStat: DWORD;
  2011 +begin
  2012 + dwStat := 0;
  2013 + // Open service manager handle.
  2014 + writeDebugLog('ServiceGetStatus: Executando OpenSCManager.SC_MANAGER_CONNECT');
  2015 + SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
  2016 + if (SCManHandle > 0) then
  2017 + begin
  2018 + writeDebugLog('ServiceGetStatus: Executando OpenService.SERVICE_QUERY_STATUS');
  2019 + SvcHandle := OpenService(SCManHandle, sService, SERVICE_ALL_ACCESS);
  2020 + // if Service installed
  2021 + if (SvcHandle > 0) then
  2022 + begin
  2023 + writeDebugLog('ServiceGetStatus: O serviço "'+ sService +'" já está instalado.');
  2024 + // SS structure holds the service status (TServiceStatus);
  2025 + if (QueryServiceStatus(SvcHandle, SS)) then
  2026 + dwStat := ss.dwServiceType;
  2027 + if dwStat <> 272 then
  2028 + begin
  2029 + ChangeServiceConfig(SvcHandle,
  2030 + 272, //iterative
  2031 + SERVICE_NO_CHANGE,
  2032 + SERVICE_NO_CHANGE,
  2033 + nil,
  2034 + nil,
  2035 + nil,
  2036 + nil,
  2037 + nil,
  2038 + nil,
  2039 + nil);
  2040 + end;
  2041 +
  2042 + if (QueryServiceStatus(SvcHandle, SS)) then
  2043 + dwStat := ss.dwServiceType;
  2044 + CloseServiceHandle(SvcHandle);
  2045 + end;
  2046 + CloseServiceHandle(SCManHandle);
  2047 + end;
  2048 + Result := dwStat;
  2049 +end;
  2050 +
  2051 +function TCACIC.ServiceGetStatus(sMachine, sService: PChar): DWORD;
  2052 + {*******************************************}
  2053 + {*** Parameters: ***}
  2054 + {*** sService: specifies the name of the service to open
  2055 + {*** sMachine: specifies the name of the target computer
  2056 + {*** ***}
  2057 + {*** Return Values: ***}
  2058 + {*** -1 = Error opening service ***}
  2059 + {*** 1 = SERVICE_STOPPED ***}
  2060 + {*** 2 = SERVICE_START_PENDING ***}
  2061 + {*** 3 = SERVICE_STOP_PENDING ***}
  2062 + {*** 4 = SERVICE_RUNNING ***}
  2063 + {*** 5 = SERVICE_CONTINUE_PENDING ***}
  2064 + {*** 6 = SERVICE_PAUSE_PENDING ***}
  2065 + {*** 7 = SERVICE_PAUSED ***}
  2066 + {******************************************}
  2067 +var
  2068 + SCManHandle, SvcHandle: SC_Handle;
  2069 + SS: TServiceStatus;
  2070 + dwStat: DWORD;
  2071 +begin
  2072 + dwStat := 0;
  2073 + // Open service manager handle.
  2074 + writeDebugLog('ServiceGetStatus: Executando OpenSCManager.SC_MANAGER_CONNECT');
  2075 + SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
  2076 + if (SCManHandle > 0) then
  2077 + begin
  2078 + writeDebugLog('ServiceGetStatus: Executando OpenService.SERVICE_QUERY_STATUS');
  2079 + SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
  2080 + // if Service installed
  2081 + if (SvcHandle > 0) then
  2082 + begin
  2083 + writeDebugLog('ServiceGetStatus: O serviço "'+ sService +'" já está instalado.');
  2084 + // SS structure holds the service status (TServiceStatus);
  2085 + if (QueryServiceStatus(SvcHandle, SS)) then
  2086 + dwStat := ss.dwCurrentState;
  2087 +
  2088 + CloseServiceHandle(SvcHandle);
  2089 + end;
  2090 + CloseServiceHandle(SCManHandle);
  2091 + end;
  2092 + Result := dwStat;
  2093 +end;
  2094 +
1953 2095 end.
1954 2096  
... ...
Grupo_CACIC.groupproj
... ... @@ -19,15 +19,6 @@
19 19 <Target Name="chksis:Make">
20 20 <MSBuild Projects="chksis\chksis.dproj" Targets="Make" />
21 21 </Target>
22   - <Target Name="cacicservice">
23   - <MSBuild Projects="cacicservice\cacicservice.dproj" Targets="" />
24   - </Target>
25   - <Target Name="cacicservice:Clean">
26   - <MSBuild Projects="cacicservice\cacicservice.dproj" Targets="Clean" />
27   - </Target>
28   - <Target Name="cacicservice:Make">
29   - <MSBuild Projects="cacicservice\cacicservice.dproj" Targets="Make" />
30   - </Target>
31 22 <Target Name="cacic280">
32 23 <MSBuild Projects="cacic280.dproj" Targets="" />
33 24 </Target>
... ... @@ -37,6 +28,15 @@
37 28 <Target Name="cacic280:Make">
38 29 <MSBuild Projects="cacic280.dproj" Targets="Make" />
39 30 </Target>
  31 + <Target Name="cacicservice">
  32 + <MSBuild Projects="cacicservice\cacicservice.dproj" Targets="" />
  33 + </Target>
  34 + <Target Name="cacicservice:Clean">
  35 + <MSBuild Projects="cacicservice\cacicservice.dproj" Targets="Clean" />
  36 + </Target>
  37 + <Target Name="cacicservice:Make">
  38 + <MSBuild Projects="cacicservice\cacicservice.dproj" Targets="Make" />
  39 + </Target>
40 40 <Target Name="gercols">
41 41 <MSBuild Projects="gercols\gercols.dproj" Targets="" />
42 42 </Target>
... ... @@ -83,12 +83,12 @@
83 83 <MSBuild Projects="C:\Documents and Settings\adriano\Meus documentos\RAD Studio\Projects\TesteSoftware.dproj" Targets="Make" />
84 84 </Target>
85 85 <Target Name="Build">
86   - <CallTarget Targets="chksis;cacicservice;cacic280;gercols;installcacic;mapacacic;CacicVersionsAndHashes;TesteSoftware" />
  86 + <CallTarget Targets="chksis;cacic280;cacicservice;gercols;installcacic;mapacacic;CacicVersionsAndHashes;TesteSoftware" />
87 87 </Target>
88 88 <Target Name="Clean">
89   - <CallTarget Targets="chksis:Clean;cacicservice:Clean;cacic280:Clean;gercols:Clean;installcacic:Clean;mapacacic:Clean;CacicVersionsAndHashes:Clean;TesteSoftware:Clean" />
  89 + <CallTarget Targets="chksis:Clean;cacic280:Clean;cacicservice:Clean;gercols:Clean;installcacic:Clean;mapacacic:Clean;CacicVersionsAndHashes:Clean;TesteSoftware:Clean" />
90 90 </Target>
91 91 <Target Name="Make">
92   - <CallTarget Targets="chksis:Make;cacicservice:Make;cacic280:Make;gercols:Make;installcacic:Make;mapacacic:Make;CacicVersionsAndHashes:Make;TesteSoftware:Make" />
  92 + <CallTarget Targets="chksis:Make;cacic280:Make;cacicservice:Make;gercols:Make;installcacic:Make;mapacacic:Make;CacicVersionsAndHashes:Make;TesteSoftware:Make" />
93 93 </Target>
94 94 </Project>
95 95 \ No newline at end of file
... ...
MapaTesteProj/MapaCACIC.dproj
... ... @@ -24,7 +24,7 @@
24 24 <Borland.Personality>Delphi.Personality</Borland.Personality>
25 25 <Borland.ProjectType />
26 26 <BorlandProject>
27   -<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">1</VersionInfo><VersionInfo Name="Build">7</VersionInfo><VersionInfo Name="Debug">True</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1046</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Dataprev - Emp. de TI da Prev Social - URES/SESS</VersionInfoKeys><VersionInfoKeys Name="FileDescription">Sistema CACIC - Módulo para Verificação e Instalação de Estrutura Básica do Sistema CACIC</VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.8.1.7</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">3.0</VersionInfoKeys><VersionInfoKeys Name="Comments">Licença: GNU/LGPL</VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">mapacacic.dpr</Source></Source></Delphi.Personality><ModelSupport>False</ModelSupport></BorlandProject></BorlandProject>
  27 +<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">1</VersionInfo><VersionInfo Name="Build">8</VersionInfo><VersionInfo Name="Debug">True</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1046</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Dataprev - Emp. de TI da Prev Social - URES/SESS</VersionInfoKeys><VersionInfoKeys Name="FileDescription">Sistema CACIC - Módulo para Verificação e Instalação de Estrutura Básica do Sistema CACIC</VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.8.1.8</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">3.0</VersionInfoKeys><VersionInfoKeys Name="Comments">Licença: GNU/LGPL</VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">mapacacic.dpr</Source></Source></Delphi.Personality><ModelSupport>False</ModelSupport></BorlandProject></BorlandProject>
28 28 </ProjectExtensions>
29 29 <Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
30 30 <ItemGroup>
... ...
MapaTesteProj/MapaCACIC.res
No preview for this file type
MapaTesteProj/MapaTeste.dcu
No preview for this file type
MapaTesteProj/MapaTeste.pas
... ... @@ -166,8 +166,10 @@ Begin
166 166 Visible := false;
167 167  
168 168 reset(textFileAguarde);
169   - objCACIC.deleteFileOrFolder(objCacic.getLocalFolderName +
170   - '\temp\aguarde_MAPACACIC.txt');
  169 + if FileExists(objCACIC.getLocalFolderName + '\temp\aguarde_MAPACACIC.txt') then
  170 + objCACIC.deleteFileOrFolder(objCacic.getLocalFolderName +
  171 + '\temp\aguarde_MAPACACIC.txt');
  172 +
171 173 Application.ProcessMessages;
172 174  
173 175 Sair;
... ... @@ -315,7 +317,7 @@ Begin
315 317 End
316 318 else
317 319 begin
318   - MessageDlg(#13#13+'Não foi possível realizar a conexão!',mtError, [mbOK], 0);
  320 + objCACIC.writeDailyLog('Não foi possível realizar a conexão!');
319 321 end;
320 322 btCombosUpdate.Enabled := true;
321 323 End;
... ... @@ -428,7 +430,9 @@ end;
428 430 procedure TfrmMapaCacic.MontaInterface;
429 431 var strConfigsPatrimonioInterface,
430 432 strNomeLDAP : String;
  433 + count : integer;
431 434 Begin
  435 + count := 0;
432 436 btCombosUpdate.Enabled := false;
433 437  
434 438 strConfigsPatrimonioInterface := objCacic.deCrypt(objCacic.getValueFromFile
... ... @@ -449,9 +453,15 @@ Begin
449 453 //-----------------------------USUARIO LOGADO-----------------------------------
450 454  
451 455 // edTeInfoUserLogado.Text := getUserLogon;
452   - strTeInfoPatrimonio2:=objCACIC.getValueFromTags('UserName',fetchWMIvalues('Win32_ComputerSystem',objCACIC.getLocalFolderName,'UserName'));
453   - strTeInfoPatrimonio2:=copy(strTeInfoPatrimonio2, pos('\', strTeInfoPatrimonio2)+1, length(strTeInfoPatrimonio2));
454   - edTeInfoPatrimonio2.Text:=strTeInfoPatrimonio2;
  456 + while(strTeInfoPatrimonio2 = '') and (count < 600) do
  457 + begin
  458 + strTeInfoPatrimonio2:=objCACIC.getValueFromTags('UserName',fetchWMIvalues('Win32_ComputerSystem',objCACIC.getLocalFolderName,'UserName'));
  459 + strTeInfoPatrimonio2:=copy(strTeInfoPatrimonio2, pos('\', strTeInfoPatrimonio2)+1, length(strTeInfoPatrimonio2));
  460 + edTeInfoPatrimonio2.Text:=strTeInfoPatrimonio2;
  461 + sleep(1000);
  462 + count := count + 1;
  463 + end;
  464 +
455 465 if edTeInfoPatrimonio2.Text <> '' then
456 466 begin
457 467 lbEtiqueta2.Visible := true;
... ... @@ -684,10 +694,10 @@ begin
684 694 else
685 695 Begin
686 696 frmMapaCacic.boolAcessoOK := false;
687   - MessageDLG(#13#10+'Atenção! É necessário reinstalar o CACIC nesta estação.' + #13#10 + #13#10 +
688   - 'A escctrutura encontra-se corrompida.' + #13#10,mtError,[mbOK],0);
689   - Application.ProcessMessages;
690   - frmMapaCacic.Finalizar;
  697 + Application.messagebox(Pchar('Atenção! É necessário reinstalar o CACIC nesta estação.' +
  698 + #13#10 + #13#10 + 'A estrutura encontra-se corrompida.'),
  699 + 'Erro!',MB_ICONERROR + mb_ok);
  700 + Finalizar;
691 701 End;
692 702 end
693 703 else
... ...
MapaTesteProj/Source/synsock.pas
... ... @@ -53,7 +53,7 @@ unit synsock;
53 53 {$ENDIF}
54 54  
55 55 {$IFDEF WIN32}
56   - {$I sswin32.inc}
  56 + {$I sswin32q.inc}
57 57 {$ELSE}
58 58 {$IFDEF FPC}
59 59 {$I ssfpc.pas}
... ...
cacic280.dproj
... ... @@ -40,7 +40,7 @@
40 40 <Borland.Personality>Delphi.Personality</Borland.Personality>
41 41 <Borland.ProjectType>VCLApplication</Borland.ProjectType>
42 42 <BorlandProject>
43   -<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">1</VersionInfo><VersionInfo Name="Build">9</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1046</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Dataprev - Emp. de TI da Prev.Social - URES/SESS</VersionInfoKeys><VersionInfoKeys Name="FileDescription">Sistema CACIC - Módulo Agente Principal</VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.8.1.9</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright">Baseado na licença GNU/LGPL</VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">Cacic - Configurador Automático e Coletor de Informações Computacionais</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">3.0</VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">cacic280.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
  43 +<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">1</VersionInfo><VersionInfo Name="Build">11</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1046</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Dataprev - Emp. de TI da Prev.Social - URES/SESS</VersionInfoKeys><VersionInfoKeys Name="FileDescription">Sistema CACIC - Módulo Agente Principal</VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.8.1.11</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright">Baseado na licença GNU/LGPL</VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">Cacic - Configurador Automático e Coletor de Informações Computacionais</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">3.0</VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">cacic280.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
44 44 </ProjectExtensions>
45 45 <Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
46 46 <ItemGroup>
... ...
cacic280.res
No preview for this file type
cacicservice/CACICserviceMain.pas
... ... @@ -97,7 +97,7 @@ begin
97 97 //TOKEN_ADJUST_SESSIONID := 256;
98 98  
99 99 // Log the client on to the local computer.
100   -
  100 + ServiceType := stWin32;
101 101 dwSessionId := WTSGetActiveConsoleSessionId();
102 102 hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
103 103 if (hSnap = INVALID_HANDLE_VALUE) then
... ... @@ -433,15 +433,6 @@ Begin
433 433 else
434 434 g_oCacic.writeDebugLog('ExecutaCACIC: Cookie Bloqueado pelo Agente Principal ENCONTRADO - CACIC em Execução!');
435 435  
436   - // Execução do MAPA.
437   - if ((g_oCacic.getValueFromFile('Configs', 'modulo_patr',
438   - g_oCacic.getLocalFolderName + 'GerCols.inf') = 'S') and
439   - (g_oCacic.getValueFromFile('Configs', 'col_patr_exe',
440   - g_oCacic.getLocalFolderName + 'GerCols.inf') <> 's')) then
441   - begin
442   - g_oCacic.createOneProcess(g_oCacic.getLocalFolderName + 'Modules\mapacacic.exe',false,SW_NORMAL);
443   - end;
444   -
445 436 g_oCacic.writeDebugLog('ExecutaCACIC: Verificando existência de nova versão deste serviço para atualização.');
446 437 // Verifico a existência de nova versão do serviço e finalizo em caso positivo...
447 438 if (FileExists(g_oCacic.getLocalFolderName + 'Temp\cacicservice.exe')) and
... ...
cacicservice/cacicservice.dproj
... ... @@ -37,7 +37,7 @@
37 37 <Borland.Personality>Delphi.Personality</Borland.Personality>
38 38 <Borland.ProjectType>VCLApplication</Borland.ProjectType>
39 39 <BorlandProject>
40   -<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Language><Language Name="RootDir">E:\NTService\</Language></Language><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">1</VersionInfo><VersionInfo Name="Build">6</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1046</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Dataprev - Emp. de TI da Prev Social - URES/SESS</VersionInfoKeys><VersionInfoKeys Name="FileDescription">Sistema CACIC - Módulo para Sustentação do Agente Principal</VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.8.1.6</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">3.0</VersionInfoKeys><VersionInfoKeys Name="Comments">Licença: GNU/LGPL</VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">cacicservice.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
  40 +<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Language><Language Name="RootDir">E:\NTService\</Language></Language><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">1</VersionInfo><VersionInfo Name="Build">7</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1046</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Dataprev - Emp. de TI da Prev Social - URES/SESS</VersionInfoKeys><VersionInfoKeys Name="FileDescription">Sistema CACIC - Módulo para Sustentação do Agente Principal</VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.8.1.7</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">3.0</VersionInfoKeys><VersionInfoKeys Name="Comments">Licença: GNU/LGPL</VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">cacicservice.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
41 41 </ProjectExtensions>
42 42 <Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
43 43 <ItemGroup>
... ...
cacicservice/cacicservice.res
No preview for this file type
gercols/gercols.dpr
... ... @@ -247,7 +247,7 @@ Begin
247 247  
248 248 if (objCacic.getValueFromTags('WebManagerAddress', strRetorno,'<>') <> '') then
249 249 Begin
250   - strForcaColeta = objCacic.getValueFromTags('ForcaColeta', strRetorno, '<>');
  250 + strForcaColeta := objCacic.getValueFromTags('ForcaColeta', strRetorno, '<>');
251 251 // if strForcaColeta <> 'S' then
252 252 // objCacic.setValueToFile('Configs','col_patr_exe',
253 253 // 'n',
... ... @@ -850,6 +850,7 @@ Begin
850 850 else if FindCmdLineSwitch ('getTest', True) then
851 851 begin
852 852 getTest();
  853 + Finalizar(false);
853 854 end;
854 855  
855 856 // Chamada efetuada pelo Agente Principal quando da existência de temp\<AgentePrincipal>.exe para AutoUpdate
... ... @@ -925,7 +926,7 @@ Begin
925 926 intTotalExecutedCollects := 0;
926 927 intTotalSendedCollects := 0;
927 928  
928   - //getConfigs(true);
  929 + getConfigs(true);
929 930  
930 931 // Abaixo eu testo se existe um endereço configurado para não disparar os procedimentos de coleta em vão.
931 932 if (objCacic.getWebManagerAddress <> '') then
... ...
installcacic/installcacic.dproj
... ... @@ -32,7 +32,7 @@
32 32 <Borland.Personality>Delphi.Personality</Borland.Personality>
33 33 <Borland.ProjectType>VCLApplication</Borland.ProjectType>
34 34 <BorlandProject>
35   -<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">1</VersionInfo><VersionInfo Name="Build">6</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1046</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Dataprev - Emp. de TI da Prev Social - URES/SESS</VersionInfoKeys><VersionInfoKeys Name="FileDescription">Sistema CACIC - Módulo para Verificação e Instalação de Estrutura Básica do Sistema CACIC</VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.8.1.6</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">3.0</VersionInfoKeys><VersionInfoKeys Name="Comments">Licença: GNU/LGPL</VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">installcacic.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
  35 +<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">2</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">1</VersionInfo><VersionInfo Name="Build">8</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">1046</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Dataprev - Emp. de TI da Prev Social - URES/SESS</VersionInfoKeys><VersionInfoKeys Name="FileDescription">Sistema CACIC - Módulo para Verificação e Instalação de Estrutura Básica do Sistema CACIC</VersionInfoKeys><VersionInfoKeys Name="FileVersion">2.8.1.8</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">3.0</VersionInfoKeys><VersionInfoKeys Name="Comments">Licença: GNU/LGPL</VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">installcacic.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
36 36 </ProjectExtensions>
37 37 <Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
38 38 <ItemGroup>
... ...
installcacic/installcacic.res
No preview for this file type
installcacic/uInstallCACIC.pas
... ... @@ -111,7 +111,6 @@ type
111 111 function boolCanRunCACIC : boolean;
112 112 function findWindowByTitle(pStrWindowTitle: string) : Hwnd;
113 113 function listFileDir(pStrPath: string) : string;
114   - function serviceGetStatus(sMachine, sService: PChar) : DWORD;
115 114 function serviceStart(pStrServiceName : string ) : boolean;
116 115 function serviceRunning(pCharMachineName, pCharServiceName: PChar) : boolean;
117 116 function serviceStopped(pCharMachineName, pCharServiceName: PChar) : boolean;
... ... @@ -135,6 +134,8 @@ implementation
135 134 {$R *.dfm}
136 135  
137 136 procedure TfrmInstallCACIC.FormCreate(Sender: TObject);
  137 +var
  138 +wordServiceStatus, serviceType : DWord;
138 139 begin
139 140 Try
140 141 boolShowForm := true;
... ... @@ -200,49 +201,6 @@ begin
200 201 End;
201 202 end;
202 203  
203   -function TfrmInstallCACIC.ServiceGetStatus(sMachine, sService: PChar): DWORD;
204   - {*******************************************}
205   - {*** Parameters: ***}
206   - {*** sService: specifies the name of the service to open
207   - {*** sMachine: specifies the name of the target computer
208   - {*** ***}
209   - {*** Return Values: ***}
210   - {*** -1 = Error opening service ***}
211   - {*** 1 = SERVICE_STOPPED ***}
212   - {*** 2 = SERVICE_START_PENDING ***}
213   - {*** 3 = SERVICE_STOP_PENDING ***}
214   - {*** 4 = SERVICE_RUNNING ***}
215   - {*** 5 = SERVICE_CONTINUE_PENDING ***}
216   - {*** 6 = SERVICE_PAUSE_PENDING ***}
217   - {*** 7 = SERVICE_PAUSED ***}
218   - {******************************************}
219   -var
220   - SCManHandle, SvcHandle: SC_Handle;
221   - SS: TServiceStatus;
222   - dwStat: DWORD;
223   -begin
224   - dwStat := 0;
225   - // Open service manager handle.
226   - objCacic.writeDebugLog('ServiceGetStatus: Executando OpenSCManager.SC_MANAGER_CONNECT');
227   - SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
228   - if (SCManHandle > 0) then
229   - begin
230   - objCacic.writeDebugLog('ServiceGetStatus: Executando OpenService.SERVICE_QUERY_STATUS');
231   - SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
232   - // if Service installed
233   - if (SvcHandle > 0) then
234   - begin
235   - objCacic.writeDebugLog('ServiceGetStatus: O serviço "'+ sService +'" já está instalado.');
236   - // SS structure holds the service status (TServiceStatus);
237   - if (QueryServiceStatus(SvcHandle, SS)) then
238   - dwStat := ss.dwCurrentState;
239   - CloseServiceHandle(SvcHandle);
240   - end;
241   - CloseServiceHandle(SCManHandle);
242   - end;
243   - Result := dwStat;
244   -end;
245   -
246 204 // start service
247 205 //
248 206 // return TRUE if successful
... ... @@ -393,7 +351,7 @@ Begin
393 351 End;
394 352  
395 353 procedure TfrmInstallCACIC.installCACIC;
396   -var wordServiceStatus : DWORD;
  354 +var wordServiceStatus, serviceType : cardinal;
397 355 tstrRequest_ConfigIC : TStringList;
398 356 strAuxInstallCACIC : String;
399 357 begin
... ... @@ -717,7 +675,11 @@ begin
717 675 objCacic,
718 676 strChkSisInfFileName);
719 677  
720   - objCacic.setValueToFile('Installation','chkSIS.exe', objCacic.checkModule(objCacic.getWinDir + 'chksis.exe', objCACIC.deCrypt( objCacic.getValueFromTags('CHKSIS.EXE_HASH', strCommResponse,'<>'),false,true)), strChkSisInfFileName);
  678 + objCacic.setValueToFile('Installation','chkSIS.exe',
  679 + objCacic.checkModule(objCacic.getWinDir + 'chksis.exe',
  680 + objCACIC.deCrypt( objCacic.getValueFromTags
  681 + ('CHKSIS.EXE_HASH', strCommResponse,'<>'),
  682 + false,true)), strChkSisInfFileName);
721 683  
722 684 // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor
723 685 if (objCacic.getValueFromFile('Installation','CacicService.exe' , strChkSisInfFileName) = 'Ok!') and
... ... @@ -739,8 +701,7 @@ begin
739 701 ComunicaInsucesso('1'); // O indicador "1" sinalizará que não foi devido a privilégio na estação
740 702 End;
741 703  
742   - if boolCanRunCACIC and
743   - (objCacic.getValueFromFile('Installation','ChkSIS.exe', strChkSisInfFileName) = 'Ok!') then
  704 + if (objCacic.getValueFromFile('Installation','ChkSIS.exe', strChkSisInfFileName) = 'Ok!') then
744 705 Begin
745 706 // Se não for plataforma NT executo o agente principal
746 707 if not (objCacic.isWindowsNTPlataform()) then
... ... @@ -761,8 +722,18 @@ begin
761 722 {*** 6 = SERVICE_PAUSE_PENDING ***}
762 723 {*** 7 = SERVICE_PAUSED ***}
763 724  
  725 + informaProgresso('Verificando CACICservice.');
764 726 // Verifico se o serviço está instalado/rodando,etc.
765   - wordServiceStatus := ServiceGetStatus(nil,'CacicSustainService');
  727 + wordServiceStatus := objCacic.ServiceGetStatus(nil,'CacicSustainService');
  728 +
  729 + //Verifico o serviço para correção de bug
  730 + if wordServiceStatus <> 0 then
  731 + begin
  732 + //verifica o status, se não estiver correto altera
  733 + serviceType := objCacic.serviceGetType('', 'CacicSustainService');
  734 + end;
  735 +
  736 +
766 737 if (wordServiceStatus = 0) then
767 738 Begin
768 739 // Instalo e Habilito o serviço
... ... @@ -788,8 +759,10 @@ begin
788 759 MessageDLG(#13#10+'ATENÇÃO!'+#13#10+#13#10+'Se o ícone do CACIC não for exibido na bandeja do sistema, é recomendável a reinicialização da máquina.',mtInformation,[mbOK],0);
789 760 informaProgresso('Executando o Agente Principal do CACIC.');
790 761 End;
791   -
792   - objCacic.createOneProcess(objCacic.getLocalFolderName + objCACIC.getMainProgramName, false);
  762 +
  763 + if boolCanRunCACIC then
  764 + objCacic.createOneProcess(objCacic.getLocalFolderName + objCACIC.getMainProgramName, false);
  765 +
793 766 End
794 767 else
795 768 if FileExists(objCacic.getLocalFolderName + 'aguarde_CACIC.txt') then
... ... @@ -823,12 +796,12 @@ end;
823 796  
824 797 function TfrmInstallCACIC.serviceRunning(pCharMachineName, pCharServiceName: PChar): Boolean;
825 798 begin
826   - Result := SERVICE_RUNNING = ServiceGetStatus(pCharMachineName, pCharServiceName);
  799 + Result := SERVICE_RUNNING = objCacic.ServiceGetStatus(pCharMachineName, pCharServiceName);
827 800 end;
828 801  
829 802 function TfrmInstallCACIC.serviceStopped(pCharMachineName, pCharServiceName: PChar): Boolean;
830 803 begin
831   - Result := SERVICE_STOPPED = ServiceGetStatus(pCharMachineName, pCharServiceName);
  804 + Result := SERVICE_STOPPED = objCacic.ServiceGetStatus(pCharMachineName, pCharServiceName);
832 805 end;
833 806  
834 807 function TfrmInstallCACIC.findWindowByTitle(pStrWindowTitle: string): Hwnd;
... ...
main.pas
... ... @@ -73,6 +73,7 @@ var strConfigsPatrimonio,
73 73 g_intStatus,
74 74 g_intStatusAnterior,
75 75 g_intIconIndex : integer;
  76 + bl_primeira_execucao : bool = false;
76 77 objCACIC: TCACIC;
77 78  
78 79 type
... ... @@ -961,8 +962,12 @@ Begin
961 962 Result := not (FileExists(objCACIC.getLocalFolderName + 'aguarde_CACIC.txt'));
962 963 End;
963 964  
  965 +
  966 +
964 967 procedure TFormularioGeral.FormCreate(Sender: TObject);
965 968 var textFileAguarde : TextFile;
  969 + serviceType, wordServiceStatus : Cardinal;
  970 + service_start : bool;
966 971 begin
967 972 objCACIC := TCACIC.Create;
968 973 objCACIC.setLocalFolderName(ExtractFilePath(ParamStr(0)));
... ... @@ -972,6 +977,8 @@ begin
972 977 strGerColsInfFileName := objCACIC.getLocalFolderName + 'gercols.inf';
973 978 strChkSisInfFileName := objCACIC.getWinDir + 'chksis.inf';
974 979  
  980 + bl_primeira_execucao := true;
  981 +
975 982 // A verificação dupla é uma solução de contorno para o caso de o boolCipher ter sido setado após criptografia/deCriptografia do dado gravado
976 983 if (objCACIC.deCrypt( objCACIC.getValueFromFile('Hash-Codes',objCACIC.getMainProgramName,strChkSisInfFileName),false,true) = objCACIC.getFileHash(ParamStr(0))) then
977 984 Begin
... ... @@ -988,6 +995,44 @@ begin
988 995 strWin32_NetworkAdapterConfiguration := fetchWMIvalues('Win32_NetworkAdapterConfiguration', objCACIC.getLocalFolderName);
989 996 strWin32_ComputerSystem := fetchWMIvalues('Win32_ComputerSystem', objCACIC.getLocalFolderName);
990 997  
  998 + //Correção do bug do script net logon da pgfn;
  999 + //O script estava instalando o cacic sem interação com desktop,
  1000 + //bugando o mapa e o trayicon.
  1001 +
  1002 + {*** 1 = SERVICE_STOPPED ***}
  1003 + {*** 2 = SERVICE_START_PENDING ***}
  1004 + {*** 3 = SERVICE_STOP_PENDING ***}
  1005 + {*** 4 = SERVICE_RUNNING ***}
  1006 + {*** 5 = SERVICE_CONTINUE_PENDING ***}
  1007 + {*** 6 = SERVICE_PAUSE_PENDING ***}
  1008 + {*** 7 = SERVICE_PAUSED ***}
  1009 +
  1010 + // Verifico se o serviço está instalado/rodando,etc.
  1011 + wordServiceStatus := objCacic.ServiceGetStatus(nil,'CacicSustainService');
  1012 +
  1013 + //Verifico o serviço para correção de bug
  1014 + // Verifico se o serviço está instalado/rodando,etc.
  1015 +
  1016 + if wordServiceStatus <> 0 then
  1017 + begin
  1018 + //verifica o status, se não estiver correto altera
  1019 + serviceType := objCacic.serviceGetType('', 'CacicSustainService');
  1020 + end;
  1021 +
  1022 + if (wordServiceStatus = 0) then
  1023 + Begin
  1024 + // Instalo e Habilito o serviço
  1025 + objCacic.createOneProcess(objCacic.getWinDir + 'cacicservice.exe /install /silent',true);
  1026 + End
  1027 + else if (wordServiceStatus < 4) then
  1028 + Begin
  1029 + objCacic.createOneProcess(objCacic.getWinDir + 'cacicservice.exe -start', true);
  1030 + End
  1031 + else if (wordServiceStatus > 4) then
  1032 + Begin
  1033 + objCacic.createOneProcess(objCacic.getWinDir + 'cacicservice.exe -continue', true);
  1034 + End;
  1035 +
991 1036 TrayIcon1 := TTrayIcon.Create(self);
992 1037 TrayIcon1.Hint := pnVersao.Caption;
993 1038 if not (objCACIC.getValueFromTags('IPAddress',strWin32_NetworkAdapterConfiguration) = '') then
... ... @@ -1257,7 +1302,7 @@ begin
1257 1302 if ((p_acao = 'getTest') or (p_acao = 'getConfigs')) then //se for getTest, esperar a aplicação finalizar.
1258 1303 objCACIC.createOneProcess(objCACIC.getLocalFolderName + 'Modules\gercols.exe /'+p_acao+' /WebServicesFolderName='+objCACIC.getWebServicesFolderName +' /LocalFolderName='+objCACIC.getLocalFolderName + ' /WebManagerAddress=' + objCACIC.getWebManagerAddress + ' /MainProgramName=' + objCACIC.getMainProgramName + ' /MainProgramHash=' + objCACIC.getMainProgramHash,true,SW_HIDE)
1259 1304 else
1260   - objCACIC.createOneProcess(objCACIC.getLocalFolderName + 'Modules\gercols.exe /'+p_acao+' /WebServicesFolderName='+objCACIC.getWebServicesFolderName +' /LocalFolderName='+objCACIC.getLocalFolderName + ' /WebManagerAddress=' + objCACIC.getWebManagerAddress + ' /MainProgramName=' + objCACIC.getMainProgramName + ' /MainProgramHash=' + objCACIC.getMainProgramHash,false,SW_HIDE);
  1305 + objCACIC.createOneProcess(objCACIC.getLocalFolderName + 'Modules\gercols.exe /'+p_acao+' /WebServicesFolderName='+objCACIC.getWebServicesFolderName +' /LocalFolderName='+objCACIC.getLocalFolderName + ' /WebManagerAddress=' + objCACIC.getWebManagerAddress + ' /MainProgramName=' + objCACIC.getMainProgramName + ' /MainProgramHash=' + objCACIC.getMainProgramHash,true,SW_HIDE);
1261 1306 g_intStatus := 1;
1262 1307 objCacic.setBoolCipher(not objCacic.isInDebugMode);
1263 1308 End
... ... @@ -1290,7 +1335,7 @@ begin
1290 1335 objCacic.writeDailyLog('Invoca_MapaCacic: Criando processo mapa.');
1291 1336 objCACIC.writeDebugLog('Invoca_MapaCacic: Criando Processo Mapa => "'+objCACIC.getLocalFolderName + 'Modules\MapaCACIC.exe');
1292 1337 sleep(10000); //Pausa para dar tempo de realizar o login na máquina, senão o usuário fica em branco.
1293   - if (objCACIC.createOneProcess(objCACIC.getLocalFolderName + 'Modules\mapacacic.exe',false,SW_NORMAL)) then
  1338 + if (objCACIC.createOneProcess(objCACIC.getLocalFolderName + 'Modules\mapacacic.exe',false,SW_SHOW)) then
1294 1339 objCacic.writeDailyLog('Invoca_MapaCacic: Processo criado.')
1295 1340 else
1296 1341 objCacic.writeDailyLog('Invoca_MapaCacic: Falha ao criar processo.');
... ... @@ -1327,11 +1372,13 @@ end;
1327 1372 procedure TFormularioGeral.ExecutaCACIC(Sender: TObject);
1328 1373 var v_mensagem,
1329 1374 v_tipo_mensagem,
  1375 + primeira_execucao,
1330 1376 v_TE_FILA_FTP : string;
1331 1377 v_MsgDlgType : TMsgDlgType;
1332 1378 intTentativas : integer;
1333 1379 begin
1334 1380 try
  1381 + primeira_execucao := FormatDateTime('yyyymmdd', Now);
1335 1382  
1336 1383 if FindCmdLineSwitch('execute', True) or
1337 1384 FindCmdLineSwitch('atualizacao', True) or
... ... @@ -1374,9 +1421,14 @@ begin
1374 1421 ////////////////////////////////////////////////////////////////////////////////
1375 1422 // CRIADO PARA TESTAR A CHAMADA DO MAPA CACIC //
1376 1423 ////////////////////////////////////////////////////////////////////////////////
1377   - if (trim(objCACIC.getValueFromFile('Configs','col_patr_exe', strGerColsInfFileName))<>'s')
  1424 + if not FindCmdLineSwitch('atualizacao', True) and
  1425 + (trim(objCACIC.getValueFromFile('Configs','col_patr_exe', strGerColsInfFileName))<>'s')
1378 1426 and not (FileExists(objCacic.getLocalFolderName + 'Temp\aguarde_MAPACACIC.txt'))
1379   - and (objCACIC.getValueFromFile('Configs', 'modulo_patr', strGerColsInfFileName) = 'S') then begin
  1427 + and (objCACIC.getValueFromFile('Configs', 'modulo_patr', strGerColsInfFileName) = 'S')
  1428 + and ((objCACIC.getValueFromFile('Configs','primeira_execucao',
  1429 + objCacic.getLocalFolderName + 'cacic280.inf') <>
  1430 + primeira_execucao) and bl_primeira_execucao) then
  1431 + begin
1380 1432 objCACIC.writeDebugLog('ExecutaCACIC: Executa chamada ao Mapa Cacic...');
1381 1433 Invoca_MapaCacic;
1382 1434 end;
... ... @@ -1481,6 +1533,9 @@ begin
1481 1533 objCACIC.writeExceptionLog(E.Message,E.ClassName,'PROBLEMAS AO TENTAR ATIVAR COLETAS.');
1482 1534 end;
1483 1535 objCACIC.writeDebugLog('ExecutaCACIC: ' + DupeString('=',100));
  1536 + objCacic.setValueToFile('Configs','primeira_execucao', primeira_execucao,
  1537 + objCacic.getLocalFolderName + 'cacic280.inf');
  1538 + bl_primeira_execucao := false;
1484 1539 end;
1485 1540  
1486 1541 procedure TFormularioGeral.ExecutarMapa1DrawItem(Sender: TObject;
... ...