@@ -100,6 +100,8 @@ Source: "Files\PrintServer.jar"; DestDir: "{app}"; Flags: ignoreversion
100100Source: "Files\prunmgr.exe"; DestDir: "{app} "; Flags: ignoreversion
101101Source: "Files\prunsrv.exe"; DestDir: "{app} "; Flags: ignoreversion
102102Source: "Files\uninstall.cmd"; DestDir: "{app} "; Flags: ignoreversion
103+ Source: "Files\jre-8u73-windows-i586-iftw.exe"; DestDir: "{tmp} "; DestName: "JREInstall.exe"; Check: InstallJava();
104+
103105; NOTE: Don' t use " Flags: ignoreversion" on any shared system files
104106
105107[Components]
@@ -126,6 +128,7 @@ Name: "{commonstartup}\{#MyAppName}"; Filename: "{app}\start.cmd"; Components: a
126128Name : " {commondesktop}\{cm:Start, {#MyAppName}}" ; Filename : " {app} \start.cmd" ; Components : not autostart\service; Tasks: desktopicon
127129
128130[Run]
131+ Filename : " {tmp} \JREInstall.exe" ; Parameters : " /s" ; Flags : runascurrentuser ; Check : InstallJava()
129132Filename : " {app} \install.cmd" ; Parameters : " {code:GetUserName} {code:GetPassword}" ; WorkingDir : " {app} " ; Flags : runhidden ; StatusMsg : " {cm:InstallingService}" ; Components : autostart\service
130133Filename : " {app} \start.cmd" ; WorkingDir : " {app} " ; Flags : runhidden ; Components : autostart\sturtup
131134
@@ -286,4 +289,75 @@ begin
286289 DelTree(ExpandConstant(' {userappdata}\DirectPrintServiceLogs' ), True, True, True);
287290 end ;
288291 end ;
292+ end ;
293+
294+
295+ procedure DecodeVersion (verstr: String; var verint: array of Integer);
296+ var
297+ i,p: Integer; s: string;
298+ begin
299+ // initialize array
300+ verint := [0 ,0 ,0 ,0 ];
301+ i := 0 ;
302+ while ((Length(verstr) > 0 ) and (i < 4 )) do
303+ begin
304+ p := pos (' .' , verstr);
305+ if p > 0 then
306+ begin
307+ if p = 1 then s:= ' 0' else s:= Copy (verstr, 1 , p - 1 );
308+ verint[i] := StrToInt(s);
309+ i := i + 1 ;
310+ verstr := Copy (verstr, p+1 , Length(verstr));
311+ end
312+ else
313+ begin
314+ verint[i] := StrToInt (verstr);
315+ verstr := ' ' ;
316+ end ;
317+ end ;
318+
319+ end ;
320+
321+ function CompareVersion (ver1, ver2: String) : Integer;
322+ var
323+ verint1, verint2: array of Integer;
324+ i: integer;
325+ begin
326+
327+ SetArrayLength (verint1, 4 );
328+ DecodeVersion (ver1, verint1);
329+
330+ SetArrayLength (verint2, 4 );
331+ DecodeVersion (ver2, verint2);
332+
333+ Result := 0 ; i := 0 ;
334+ while ((Result = 0 ) and ( i < 4 )) do
335+ begin
336+ if verint1[i] > verint2[i] then
337+ Result := 1
338+ else
339+ if verint1[i] < verint2[i] then
340+ Result := -1
341+ else
342+ Result := 0 ;
343+ i := i + 1 ;
344+ end ;
345+ end ;
346+
347+ function InstallJava () : Boolean;
348+ var
349+ ErrCode: Integer;
350+ JVer: String;
351+ InstallJ: Boolean;
352+ begin
353+ RegQueryStringValue(HKLM, ' SOFTWARE\JavaSoft\Java Runtime Environment' , ' CurrentVersion' , JVer);
354+ InstallJ := true;
355+ if Length( JVer ) > 0 then
356+ begin
357+ if CompareVersion(JVer, ' 1.6' ) >= 0 then
358+ begin
359+ InstallJ := false;
360+ end ;
361+ end ;
362+ Result := InstallJ;
289363end ;
0 commit comments