33 import jdk.packager.internal.Platform; |
33 import jdk.packager.internal.Platform; |
34 import jdk.packager.internal.StandardBundlerParam; |
34 import jdk.packager.internal.StandardBundlerParam; |
35 import jdk.packager.internal.UnsupportedPlatformException; |
35 import jdk.packager.internal.UnsupportedPlatformException; |
36 import jdk.packager.internal.builders.windows.WindowsAppImageBuilder; |
36 import jdk.packager.internal.builders.windows.WindowsAppImageBuilder; |
37 import jdk.packager.internal.resources.windows.WinResources; |
37 import jdk.packager.internal.resources.windows.WinResources; |
38 |
|
39 import jdk.packager.internal.JLinkBundlerHelper; |
38 import jdk.packager.internal.JLinkBundlerHelper; |
|
39 import jdk.packager.internal.Arguments; |
|
40 import jdk.packager.internal.builders.AbstractAppImageBuilder; |
40 |
41 |
41 import java.io.ByteArrayOutputStream; |
42 import java.io.ByteArrayOutputStream; |
42 import java.io.File; |
43 import java.io.File; |
43 import java.io.IOException; |
44 import java.io.IOException; |
44 import java.io.PrintStream; |
45 import java.io.PrintStream; |
45 import java.text.MessageFormat; |
46 import java.text.MessageFormat; |
46 import java.util.Arrays; |
47 import java.util.Arrays; |
47 import java.util.Collection; |
48 import java.util.Collection; |
48 import java.util.Map; |
49 import java.util.Map; |
49 import java.util.ResourceBundle; |
50 import java.util.ResourceBundle; |
50 import jdk.packager.internal.Arguments; |
|
51 |
51 |
52 import static jdk.packager.internal.windows.WindowsBundlerParam.*; |
52 import static jdk.packager.internal.windows.WindowsBundlerParam.*; |
53 import jdk.packager.internal.builders.AbstractAppImageBuilder; |
|
54 import static jdk.packager.internal.windows.WinMsiBundler.WIN_APP_IMAGE; |
53 import static jdk.packager.internal.windows.WinMsiBundler.WIN_APP_IMAGE; |
55 |
54 |
56 public class WinAppBundler extends AbstractImageBundler { |
55 public class WinAppBundler extends AbstractImageBundler { |
57 |
56 |
58 private static final ResourceBundle I18N = |
57 private static final ResourceBundle I18N = |
157 private static boolean usePredefineAppName(Map<String, ? super Object> p) { |
156 private static boolean usePredefineAppName(Map<String, ? super Object> p) { |
158 return (PREDEFINED_APP_IMAGE.fetchFrom(p) != null); |
157 return (PREDEFINED_APP_IMAGE.fetchFrom(p) != null); |
159 } |
158 } |
160 |
159 |
161 private static String appName; |
160 private static String appName; |
162 private synchronized static String getAppName(Map<String, ? super Object> p) { |
161 private synchronized static String getAppName( |
|
162 Map<String, ? super Object> p) { |
163 // If we building from predefined app image, then we should use names |
163 // If we building from predefined app image, then we should use names |
164 // from image and not from CLI. |
164 // from image and not from CLI. |
165 if (usePredefineAppName(p)) { |
165 if (usePredefineAppName(p)) { |
166 if (appName == null) { |
166 if (appName == null) { |
167 // Use WIN_APP_IMAGE here, since we already copy pre-defined image to WIN_APP_IMAGE |
167 // Use WIN_APP_IMAGE here, since we already copy pre-defined |
168 File appImageDir = new File(WIN_APP_IMAGE.fetchFrom(p).toString() + "\\app"); |
168 // image to WIN_APP_IMAGE |
169 File [] files = appImageDir.listFiles((File dir, String name) -> name.endsWith(".cfg")); |
169 File appImageDir = new File( |
|
170 WIN_APP_IMAGE.fetchFrom(p).toString() + "\\app"); |
|
171 File [] files = appImageDir.listFiles( |
|
172 (File dir, String name) -> name.endsWith(".cfg")); |
170 if (files == null || files.length != 1) { |
173 if (files == null || files.length != 1) { |
171 throw new RuntimeException(MessageFormat.format( |
174 throw new RuntimeException(MessageFormat.format( |
172 I18N.getString("error.cannot-find-cfg"), |
175 I18N.getString("error.cannot-find-cfg"), |
173 appImageDir)); |
176 appImageDir)); |
174 } else { |
177 } else { |