jdeploy-installer 3.0.0-alpha.6 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
@@ -6,6 +6,18 @@ var classPath = "{{CLASSPATH}}";
|
|
|
6
6
|
var port = "0";
|
|
7
7
|
var warPath = "";
|
|
8
8
|
var javaVersionString = "11";
|
|
9
|
+
var tryJavaHomeFirst = false;
|
|
10
|
+
var javafx = false;
|
|
11
|
+
var bundleType = 'jre';
|
|
12
|
+
if ('{{JAVAFX}}' === 'true') {
|
|
13
|
+
javafx = true;
|
|
14
|
+
}
|
|
15
|
+
if ('{{JDK}}' === 'true') {
|
|
16
|
+
bundleType = 'jdk';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
var jdk = (bundleType === 'jdk');
|
|
20
|
+
var jdkProvider = 'zulu';
|
|
9
21
|
|
|
10
22
|
|
|
11
23
|
function njreWrap() {
|
|
@@ -34,11 +46,17 @@ function njreWrap() {
|
|
|
34
46
|
}
|
|
35
47
|
|
|
36
48
|
function download (dir, url) {
|
|
49
|
+
if (url.indexOf("?") > 0 || jdkProvider === 'zulu') {
|
|
50
|
+
var destName = bundleType + ".zip";
|
|
51
|
+
} else {
|
|
52
|
+
destName = path.basename(url);
|
|
53
|
+
}
|
|
54
|
+
|
|
37
55
|
return new Promise((resolve, reject) => {
|
|
38
56
|
createDir(dir)
|
|
39
57
|
.then(() => fetch(url))
|
|
40
58
|
.then(response => {
|
|
41
|
-
const destFile = path.join(dir,
|
|
59
|
+
const destFile = path.join(dir, destName)
|
|
42
60
|
const destStream = fs.createWriteStream(destFile)
|
|
43
61
|
response.body.pipe(destStream).on('finish', () => resolve(destFile))
|
|
44
62
|
})
|
|
@@ -86,17 +104,20 @@ function njreWrap() {
|
|
|
86
104
|
fs.mkdirSync(jdeployDir);
|
|
87
105
|
}
|
|
88
106
|
|
|
89
|
-
var jreDir = path.join(jdeployDir,
|
|
107
|
+
var jreDir = path.join(jdeployDir, bundleType);
|
|
90
108
|
if (!fs.existsSync(jreDir)) {
|
|
91
109
|
fs.mkdirSync(jreDir);
|
|
92
110
|
}
|
|
93
|
-
|
|
94
|
-
|
|
111
|
+
var vs = javaVersionString;
|
|
112
|
+
if (javafx) {
|
|
113
|
+
vs += 'fx';
|
|
114
|
+
}
|
|
115
|
+
jreDir = path.join(jreDir, vs);
|
|
95
116
|
if (!fs.existsSync(jreDir)) {
|
|
96
117
|
fs.mkdirSync(jreDir);
|
|
97
118
|
}
|
|
98
119
|
const newFile = path.join(jreDir, file.split(path.sep).slice(-1)[0])
|
|
99
|
-
|
|
120
|
+
//console.log("Copying file "+file+" to "+newFile);
|
|
100
121
|
fs.copyFile(file, newFile, err => {
|
|
101
122
|
if (err) reject(err)
|
|
102
123
|
|
|
@@ -109,6 +130,7 @@ function njreWrap() {
|
|
|
109
130
|
}
|
|
110
131
|
|
|
111
132
|
function extractZip (file, dir) {
|
|
133
|
+
//console.log("Extracting "+file+" to "+dir);
|
|
112
134
|
return new Promise((resolve, reject) => {
|
|
113
135
|
yauzl.open(file, { lazyEntries: true }, (err, zipFile) => {
|
|
114
136
|
if (err) reject(err)
|
|
@@ -156,8 +178,10 @@ function njreWrap() {
|
|
|
156
178
|
}
|
|
157
179
|
|
|
158
180
|
function extract (file) {
|
|
159
|
-
|
|
181
|
+
var dirString = jdk? 'jdk' : 'jre';
|
|
160
182
|
|
|
183
|
+
const dir = path.join(path.dirname(file), dirString)
|
|
184
|
+
//console.log("About to extract "+file+" to "+dir);
|
|
161
185
|
return createDir(dir).then(() => {
|
|
162
186
|
return path.extname(file) === '.zip'
|
|
163
187
|
? extractZip(file, dir)
|
|
@@ -197,9 +221,14 @@ function njreWrap() {
|
|
|
197
221
|
* // Handle the error
|
|
198
222
|
* })
|
|
199
223
|
*/
|
|
200
|
-
function install (version =
|
|
201
|
-
const { openjdk_impl = 'hotspot', release = 'latest', type = 'jre' } = options
|
|
224
|
+
function install (version = 11, options = {}) {
|
|
225
|
+
const { openjdk_impl = 'hotspot', release = 'latest', type = 'jre', javafx = false, provider = 'zulu' } = options
|
|
202
226
|
options = { ...options, openjdk_impl, release, type }
|
|
227
|
+
|
|
228
|
+
if (provider === 'zulu') {
|
|
229
|
+
return installZulu(version, options);
|
|
230
|
+
}
|
|
231
|
+
|
|
203
232
|
let url = 'https://api.adoptopenjdk.net/v2/info/releases/openjdk' + version + '?'
|
|
204
233
|
|
|
205
234
|
if (!options.os) {
|
|
@@ -224,9 +253,12 @@ function njreWrap() {
|
|
|
224
253
|
}
|
|
225
254
|
}
|
|
226
255
|
if (!options.arch) {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
256
|
+
if (options.os == 'mac') {
|
|
257
|
+
// For now, for compatibility reasons use x64 always
|
|
258
|
+
options.arch = 'x64';
|
|
259
|
+
} else if (/^ppc64|s390x|x32|x64$/g.test(process.arch)) options.arch = process.arch
|
|
260
|
+
else if (process.arch === 'ia32') options.arch = 'x32'
|
|
261
|
+
else return Promise.reject(new Error('Unsupported architecture'))
|
|
230
262
|
}
|
|
231
263
|
|
|
232
264
|
Object.keys(options).forEach(key => { url += key + '=' + options[key] + '&' })
|
|
@@ -241,6 +273,50 @@ function njreWrap() {
|
|
|
241
273
|
.then(extract)
|
|
242
274
|
}
|
|
243
275
|
|
|
276
|
+
function installZulu(version = 11, options = {}) {
|
|
277
|
+
const { type = 'jre', javafx = false } = options
|
|
278
|
+
var q = {
|
|
279
|
+
|
|
280
|
+
java_version: version,
|
|
281
|
+
ext: 'zip',
|
|
282
|
+
bundle_type: type,
|
|
283
|
+
javafx: ''+javafx,
|
|
284
|
+
arch: 'x86',
|
|
285
|
+
hw_bitness: '64',
|
|
286
|
+
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
var zuluBaseURL = "https://api.azul.com/zulu/download/community/v1.0/bundles/latest/binary?"
|
|
290
|
+
if (!options.os) {
|
|
291
|
+
switch (process.platform) {
|
|
292
|
+
|
|
293
|
+
case 'darwin':
|
|
294
|
+
q.os = 'macos'
|
|
295
|
+
break
|
|
296
|
+
case 'linux':
|
|
297
|
+
q.os = 'linux'
|
|
298
|
+
break
|
|
299
|
+
|
|
300
|
+
case 'win32':
|
|
301
|
+
case 'win64':
|
|
302
|
+
q.os = 'windows'
|
|
303
|
+
break
|
|
304
|
+
default:
|
|
305
|
+
return Promise.reject(new Error('Unsupported operating system'))
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
var url = zuluBaseURL;
|
|
311
|
+
Object.keys(q).forEach(key => { url += key + '=' + q[key] + '&' })
|
|
312
|
+
const tmpdir = path.join(os.tmpdir(), 'njre')
|
|
313
|
+
//console.log("Downloading "+url);
|
|
314
|
+
return download(tmpdir, url)
|
|
315
|
+
.then(move)
|
|
316
|
+
.then(extract)
|
|
317
|
+
|
|
318
|
+
}
|
|
319
|
+
|
|
244
320
|
return {install:install};
|
|
245
321
|
|
|
246
322
|
|
|
@@ -271,8 +347,6 @@ function getJavaVersion(binPath) {
|
|
|
271
347
|
return false;
|
|
272
348
|
}
|
|
273
349
|
var stdout = javaVersionProc.stderr;
|
|
274
|
-
//console.log(javaVersionProc);
|
|
275
|
-
//console.log("stdout is "+stdout);
|
|
276
350
|
var regexp = /version "(.*?)"/;
|
|
277
351
|
var match = regexp.exec(stdout);
|
|
278
352
|
var parts = match[1].split('.');
|
|
@@ -286,7 +360,6 @@ function getJavaVersion(binPath) {
|
|
|
286
360
|
}
|
|
287
361
|
});
|
|
288
362
|
versionStr = versionStr.replace('_', '');
|
|
289
|
-
//console.log("Java version string "+versionStr)
|
|
290
363
|
return parseFloat(versionStr);
|
|
291
364
|
} catch (e) {
|
|
292
365
|
return false;
|
|
@@ -298,6 +371,66 @@ var getDirectories = dirPath => fs.readdirSync(dirPath).filter(
|
|
|
298
371
|
file => fs.statSync(path.join(dirPath, file)).isDirectory()
|
|
299
372
|
);
|
|
300
373
|
|
|
374
|
+
function getJavaHomeInPath(basepath) {
|
|
375
|
+
|
|
376
|
+
var dirs = null;
|
|
377
|
+
try {
|
|
378
|
+
dirs = getDirectories(basepath);
|
|
379
|
+
} catch (e) {
|
|
380
|
+
return null;
|
|
381
|
+
}
|
|
382
|
+
if (dirs && dirs.length > 0) {
|
|
383
|
+
basepath = path.join(basepath, dirs[0]);
|
|
384
|
+
if (os.platform() != 'darwin') {
|
|
385
|
+
return basepath;
|
|
386
|
+
}
|
|
387
|
+
if (fs.existsSync(path.join(basepath, 'Contents', 'Home'))) {
|
|
388
|
+
return path.join(basepath, 'Contents', 'Home');
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
var adapterDirectories = getDirectories(basepath).filter(subdir => {
|
|
392
|
+
return subdir.match(/^zulu/) && fs.existsSync(path.join(basepath, subdir, 'Contents', 'Home'));
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
if (adapterDirectories && adapterDirectories.length > 0) {
|
|
396
|
+
return path.join(basepath, adapterDirectories[0], 'Contents', 'Home');
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
function findSupportedRuntime(javaVersion, jdk, javafx) {
|
|
403
|
+
var jdeployDir = path.join(os.homedir(), ".jdeploy");
|
|
404
|
+
|
|
405
|
+
// First check for the full-meal deal
|
|
406
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jdk', javaVersion+'fx', 'jdk'));
|
|
407
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
|
408
|
+
return _javaHomePath;
|
|
409
|
+
}
|
|
410
|
+
if (!javafx) {
|
|
411
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jdk', javaVersion, 'jdk'));
|
|
412
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
|
413
|
+
return _javaHomePath;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
if (!jdk) {
|
|
418
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jre', javaVersion+'fx', 'jre'));
|
|
419
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
|
420
|
+
return _javaHomePath;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
if (!jdk && !javafx) {
|
|
425
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jre', javaVersion, 'jre'));
|
|
426
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
|
427
|
+
return _javaHomePath;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return null;
|
|
431
|
+
|
|
432
|
+
}
|
|
433
|
+
|
|
301
434
|
function getEmbeddedJavaHome() {
|
|
302
435
|
var _platform = os.platform();
|
|
303
436
|
var _driver = '';
|
|
@@ -308,14 +441,18 @@ function getEmbeddedJavaHome() {
|
|
|
308
441
|
default:
|
|
309
442
|
fail('unsupported platform: ' + _platform);
|
|
310
443
|
}
|
|
444
|
+
var vs = javaVersionString;
|
|
445
|
+
if (javafx) {
|
|
446
|
+
vs += 'fx';
|
|
447
|
+
}
|
|
448
|
+
var typeDir = jdk ? 'jdk' : 'jre';
|
|
311
449
|
|
|
312
|
-
var jreDir = path.join(os.homedir(), '.jdeploy', 'jre',
|
|
313
|
-
|
|
450
|
+
var jreDir = path.join(os.homedir(), '.jdeploy', 'jre', vs, 'jre');
|
|
314
451
|
try {
|
|
315
|
-
|
|
452
|
+
var out = jreDir + path.sep + getDirectories(jreDir)[0] + (_driver ? (path.sep + _driver) : '');
|
|
453
|
+
return out;
|
|
316
454
|
} catch (e) {
|
|
317
|
-
|
|
318
|
-
return jreDir;
|
|
455
|
+
return null;
|
|
319
456
|
}
|
|
320
457
|
}
|
|
321
458
|
|
|
@@ -339,46 +476,60 @@ function javaVersionMatch(v1, v2) {
|
|
|
339
476
|
}
|
|
340
477
|
|
|
341
478
|
var done = false;
|
|
342
|
-
if (
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
479
|
+
if (tryJavaHomeFirst) {
|
|
480
|
+
if (env['JAVA_HOME']) {
|
|
481
|
+
var javaHomeVersion = getJavaVersion(path.join(env['JAVA_HOME'], 'bin'));
|
|
482
|
+
if (javaVersionMatch(javaHomeVersion, targetJavaVersion)) {
|
|
483
|
+
done = true;
|
|
484
|
+
env['PATH'] = path.join(env['JAVA_HOME'], 'bin') + path.delimiter + env['PATH'];
|
|
485
|
+
run(env['JAVA_HOME']);
|
|
348
486
|
|
|
487
|
+
}
|
|
349
488
|
}
|
|
350
|
-
}
|
|
351
489
|
|
|
352
|
-
if (!done) {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
490
|
+
if (!done) {
|
|
491
|
+
var javaVersion = getJavaVersion();
|
|
492
|
+
if (javaVersionMatch(javaVersion, targetJavaVersion)) {
|
|
493
|
+
done = true;
|
|
494
|
+
run();
|
|
495
|
+
}
|
|
357
496
|
}
|
|
358
497
|
}
|
|
359
498
|
|
|
360
|
-
if (!done) {
|
|
361
499
|
|
|
362
|
-
|
|
363
|
-
var javaVersion = getJavaVersion(path.join(_javaHome, 'bin'));
|
|
364
|
-
if (javaVersionMatch(javaVersion, targetJavaVersion)) {
|
|
500
|
+
if (!done) {
|
|
365
501
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
502
|
+
var _javaHome = findSupportedRuntime(javaVersionString, bundleType === 'jdk', javafx);
|
|
503
|
+
if (_javaHome && fs.existsSync(_javaHome)) {
|
|
504
|
+
var javaVersion = getJavaVersion(path.join(_javaHome, 'bin'));
|
|
505
|
+
if (javaVersionMatch(javaVersion, targetJavaVersion)) {
|
|
506
|
+
env['PATH'] = path.join(_javaHome, 'bin') + path.delimiter + env['PATH'];
|
|
507
|
+
env['JAVA_HOME'] = _javaHome;
|
|
508
|
+
done = true;
|
|
509
|
+
run(_javaHome);
|
|
510
|
+
}
|
|
370
511
|
}
|
|
512
|
+
|
|
371
513
|
}
|
|
372
514
|
|
|
373
515
|
if (!done) {
|
|
374
516
|
console.log("Downloading java runtime environment for version "+targetJavaVersion);
|
|
375
|
-
njre.install(targetJavaVersion).then(function(dir) {
|
|
376
|
-
|
|
377
|
-
if (
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
517
|
+
njre.install(targetJavaVersion, {type: bundleType, javafx: javafx}).then(function(dir) {
|
|
518
|
+
var _javaHome = getJavaHomeInPath(dir);
|
|
519
|
+
if (_javaHome == null)
|
|
520
|
+
|
|
521
|
+
if (!_javaHome || !fs.existsSync(_javaHome)) {
|
|
522
|
+
throw new Error("After install, could not find java home at "+_javaHome);
|
|
523
|
+
}
|
|
524
|
+
env['JAVA_HOME'] = _javaHome;
|
|
525
|
+
|
|
526
|
+
var javaBinary = path.join(_javaHome, 'bin', 'java');
|
|
527
|
+
if (!fs.existsSync(javaBinary)) {
|
|
528
|
+
javaBinary += '.exe';
|
|
529
|
+
|
|
381
530
|
}
|
|
531
|
+
fs.chmodSync(javaBinary, 0755);
|
|
532
|
+
|
|
382
533
|
env['PATH'] = path.join(env['JAVA_HOME'], 'bin') + path.delimiter + env['PATH'];
|
|
383
534
|
|
|
384
535
|
run(env['JAVA_HOME']);
|
|
@@ -428,13 +579,11 @@ function run(_javaHome) {
|
|
|
428
579
|
env['PATH'] = env['JAVA_HOME'] + path.sep + 'bin' + path.delimiter + env['PATH'];
|
|
429
580
|
}
|
|
430
581
|
|
|
582
|
+
} else {
|
|
583
|
+
env['JAVA_HOME'] = _javaHome;
|
|
584
|
+
cmd = _javaHome + path.sep + 'bin' + path.sep + 'java';
|
|
431
585
|
}
|
|
432
586
|
|
|
433
|
-
|
|
434
|
-
var javaVersion = getJavaVersion();
|
|
435
|
-
|
|
436
|
-
//console.log("Java version is "+getJavaVersion());
|
|
437
|
-
|
|
438
587
|
javaArgs.forEach(function(arg) {
|
|
439
588
|
cmd += ' "'+arg+'"';
|
|
440
589
|
});
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"url": "https://github.com/shannah/jdeploy.git",
|
|
12
12
|
"directory": "installer"
|
|
13
13
|
},
|
|
14
|
-
"version": "3.0.
|
|
14
|
+
"version": "3.0.1",
|
|
15
15
|
"jdeploy": {
|
|
16
16
|
"jar": "target/jdeploy-installer-1.0-SNAPSHOT.jar",
|
|
17
17
|
"bundles": [
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
],
|
|
22
22
|
"macAppBundleId": "HRNMHC7527.ca.weblite.jdeploy.installer",
|
|
23
23
|
"codesign": true,
|
|
24
|
-
"notarize": false
|
|
24
|
+
"notarize": false,
|
|
25
|
+
"fork": false
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
28
|
"shelljs": "^0.8.4"
|