Skip to content

Commit 80643c6

Browse files
committed
2 parents 4d8c3ef + e165fe2 commit 80643c6

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

setup/DirectPrintServer.iss

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ Source: "Files\PrintServer.jar"; DestDir: "{app}"; Flags: ignoreversion
100100
Source: "Files\prunmgr.exe"; DestDir: "{app}"; Flags: ignoreversion
101101
Source: "Files\prunsrv.exe"; DestDir: "{app}"; Flags: ignoreversion
102102
Source: "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
126128
Name: "{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()
129132
Filename: "{app}\install.cmd"; Parameters: "{code:GetUserName} {code:GetPassword}"; WorkingDir: "{app}"; Flags: runhidden; StatusMsg: "{cm:InstallingService}"; Components: autostart\service
130133
Filename: "{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;
289363
end;

0 commit comments

Comments
 (0)