18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package jdk.jpackage.internal;
27
28 import java.io.File;
29 import java.io.FileOutputStream;
30 import java.io.IOException;
31 import java.io.InputStream;
32 import java.io.OutputStream;
33 import java.io.OutputStreamWriter;
34 import java.io.UncheckedIOException;
35 import java.io.Writer;
36 import java.io.BufferedWriter;
37 import java.io.FileWriter;
38 import java.nio.file.Files;
39 import java.nio.file.Path;
40 import java.nio.file.StandardCopyOption;
41 import java.nio.file.attribute.PosixFilePermission;
42 import java.text.MessageFormat;
43 import java.util.HashMap;
44 import java.util.List;
45 import java.util.Map;
46 import java.util.Objects;
47 import java.util.ResourceBundle;
48 import java.util.Set;
49 import java.util.concurrent.atomic.AtomicReference;
50 import java.util.regex.Pattern;
51 import java.util.stream.Stream;
52
53 import static jdk.jpackage.internal.StandardBundlerParam.*;
54
55 public class WindowsAppImageBuilder extends AbstractAppImageBuilder {
56
57 static {
314 data.put(key, "");
315 return;
316 }
317 data.put(key, value);
318 }
319
320 protected void prepareExecutableProperties(
321 Map<String, ? super Object> params) throws IOException {
322 Map<String, String> data = new HashMap<>();
323
324 // mapping Java parameters in strings for version resource
325 validateValueAndPut(data, "COMPANY_NAME", VENDOR, params);
326 validateValueAndPut(data, "FILE_DESCRIPTION", DESCRIPTION, params);
327 validateValueAndPut(data, "FILE_VERSION", VERSION, params);
328 data.put("INTERNAL_NAME", getLauncherName(params));
329 validateValueAndPut(data, "LEGAL_COPYRIGHT", COPYRIGHT, params);
330 data.put("ORIGINAL_FILENAME", getLauncherName(params));
331 validateValueAndPut(data, "PRODUCT_NAME", APP_NAME, params);
332 validateValueAndPut(data, "PRODUCT_VERSION", VERSION, params);
333
334 try (Writer w = new BufferedWriter(
335 new FileWriter(getConfig_ExecutableProperties(params)))) {
336 String content = preprocessTextResource(
337 getConfig_ExecutableProperties(params).getName(),
338 I18N.getString("resource.executable-properties-template"),
339 EXECUTABLE_PROPERTIES_TEMPLATE, data,
340 VERBOSE.fetchFrom(params),
341 RESOURCE_DIR.fetchFrom(params));
342 w.write(content);
343 }
344 }
345
346 private void createLauncherForEntryPoint(
347 Map<String, ? super Object> p) throws IOException {
348
349 File launcherIcon = ICON_ICO.fetchFrom(p);
350 File icon = launcherIcon != null ?
351 launcherIcon : ICON_ICO.fetchFrom(params);
352 File iconTarget = getConfig_AppIcon(p);
353
354 InputStream in = locateResource(
355 APP_NAME.fetchFrom(params) + ".ico",
|
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package jdk.jpackage.internal;
27
28 import java.io.File;
29 import java.io.FileOutputStream;
30 import java.io.IOException;
31 import java.io.InputStream;
32 import java.io.OutputStream;
33 import java.io.OutputStreamWriter;
34 import java.io.UncheckedIOException;
35 import java.io.Writer;
36 import java.io.BufferedWriter;
37 import java.io.FileWriter;
38 import java.nio.charset.StandardCharsets;
39 import java.nio.file.Files;
40 import java.nio.file.Path;
41 import java.nio.file.StandardCopyOption;
42 import java.nio.file.attribute.PosixFilePermission;
43 import java.text.MessageFormat;
44 import java.util.HashMap;
45 import java.util.List;
46 import java.util.Map;
47 import java.util.Objects;
48 import java.util.ResourceBundle;
49 import java.util.Set;
50 import java.util.concurrent.atomic.AtomicReference;
51 import java.util.regex.Pattern;
52 import java.util.stream.Stream;
53
54 import static jdk.jpackage.internal.StandardBundlerParam.*;
55
56 public class WindowsAppImageBuilder extends AbstractAppImageBuilder {
57
58 static {
315 data.put(key, "");
316 return;
317 }
318 data.put(key, value);
319 }
320
321 protected void prepareExecutableProperties(
322 Map<String, ? super Object> params) throws IOException {
323 Map<String, String> data = new HashMap<>();
324
325 // mapping Java parameters in strings for version resource
326 validateValueAndPut(data, "COMPANY_NAME", VENDOR, params);
327 validateValueAndPut(data, "FILE_DESCRIPTION", DESCRIPTION, params);
328 validateValueAndPut(data, "FILE_VERSION", VERSION, params);
329 data.put("INTERNAL_NAME", getLauncherName(params));
330 validateValueAndPut(data, "LEGAL_COPYRIGHT", COPYRIGHT, params);
331 data.put("ORIGINAL_FILENAME", getLauncherName(params));
332 validateValueAndPut(data, "PRODUCT_NAME", APP_NAME, params);
333 validateValueAndPut(data, "PRODUCT_VERSION", VERSION, params);
334
335 try (Writer w = Files.newBufferedWriter(
336 getConfig_ExecutableProperties(params).toPath(),
337 StandardCharsets.UTF_8)) {
338 String content = preprocessTextResource(
339 getConfig_ExecutableProperties(params).getName(),
340 I18N.getString("resource.executable-properties-template"),
341 EXECUTABLE_PROPERTIES_TEMPLATE, data,
342 VERBOSE.fetchFrom(params),
343 RESOURCE_DIR.fetchFrom(params));
344 w.write(content);
345 }
346 }
347
348 private void createLauncherForEntryPoint(
349 Map<String, ? super Object> p) throws IOException {
350
351 File launcherIcon = ICON_ICO.fetchFrom(p);
352 File icon = launcherIcon != null ?
353 launcherIcon : ICON_ICO.fetchFrom(params);
354 File iconTarget = getConfig_AppIcon(p);
355
356 InputStream in = locateResource(
357 APP_NAME.fetchFrom(params) + ".ico",
|