--- old/src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WindowsAppImageBuilder.java 2019-12-13 13:34:30.964055000 -0500 +++ new/src/jdk.incubator.jpackage/windows/classes/jdk/incubator/jpackage/internal/WindowsAppImageBuilder.java 2019-12-13 13:34:29.970014800 -0500 @@ -152,11 +152,6 @@ return "app/" + APP_NAME.fetchFrom(params) +".cfg"; } - private File getConfig_AppIcon(Map params) { - return new File(getConfigRoot(params), - APP_NAME.fetchFrom(params) + ".ico"); - } - private File getConfig_ExecutableProperties( Map params) { return new File(getConfigRoot(params), @@ -180,8 +175,6 @@ @Override public void prepareApplicationFiles(Map params) throws IOException { - Map originalParams = new HashMap<>(params); - try { IOUtils.writableOutputDir(root); IOUtils.writableOutputDir(binDir); @@ -191,7 +184,7 @@ AppImageFile.save(root, params); // create the .exe launchers - createLauncherForEntryPoint(params); + createLauncherForEntryPoint(params, null); // copy the jars copyApplication(params); @@ -207,8 +200,8 @@ List> entryPoints = StandardBundlerParam.ADD_LAUNCHERS.fetchFrom(params); for (Map entryPoint : entryPoints) { - createLauncherForEntryPoint( - AddLauncherArguments.merge(originalParams, entryPoint)); + createLauncherForEntryPoint(AddLauncherArguments.merge(params, + entryPoint, ICON.getID(), ICON_ICO.getID()), params); } } @@ -272,15 +265,18 @@ .saveToFile(getConfig_ExecutableProperties(params)); } - private void createLauncherForEntryPoint( - Map params) throws IOException { + private void createLauncherForEntryPoint(Map params, + Map mainParams) throws IOException { - File iconTarget = getConfig_AppIcon(params); - - createResource(TEMPLATE_APP_ICON, params) - .setCategory("icon") - .setExternal(ICON_ICO.fetchFrom(params)) - .saveToFile(iconTarget); + var iconResource = createIconResource(TEMPLATE_APP_ICON, ICON_ICO, params, + mainParams); + Path iconTarget = null; + if (iconResource != null) { + iconTarget = binDir.resolve(APP_NAME.fetchFrom(params) + ".ico"); + if (null == iconResource.saveToFile(iconTarget)) { + iconTarget = null; + } + } writeCfgFile(params, root.resolve( getLauncherCfgName(params)).toFile()); @@ -315,8 +311,8 @@ launcher.setWritable(true); - if (iconTarget.exists()) { - iconSwap(iconTarget.getAbsolutePath(), + if (iconTarget != null) { + iconSwap(iconTarget.toAbsolutePath().toString(), launcher.getAbsolutePath()); } @@ -336,9 +332,6 @@ executableFile.toFile().setReadOnly(); } } - - Files.copy(iconTarget.toPath(), - binDir.resolve(APP_NAME.fetchFrom(params) + ".ico")); } private void copyApplication(Map params)