48 import java.util.ResourceBundle; |
48 import java.util.ResourceBundle; |
49 import java.util.Set; |
49 import java.util.Set; |
50 import java.util.concurrent.atomic.AtomicReference; |
50 import java.util.concurrent.atomic.AtomicReference; |
51 import java.util.regex.Pattern; |
51 import java.util.regex.Pattern; |
52 import java.util.stream.Stream; |
52 import java.util.stream.Stream; |
|
53 import static jdk.jpackage.internal.OverridableResource.createResource; |
53 |
54 |
54 import static jdk.jpackage.internal.StandardBundlerParam.*; |
55 import static jdk.jpackage.internal.StandardBundlerParam.*; |
55 |
56 |
56 public class WindowsAppImageBuilder extends AbstractAppImageBuilder { |
57 public class WindowsAppImageBuilder extends AbstractAppImageBuilder { |
57 |
58 |
263 validateValueAndPut(data, "LEGAL_COPYRIGHT", COPYRIGHT, params); |
264 validateValueAndPut(data, "LEGAL_COPYRIGHT", COPYRIGHT, params); |
264 data.put("ORIGINAL_FILENAME", getLauncherName(params)); |
265 data.put("ORIGINAL_FILENAME", getLauncherName(params)); |
265 validateValueAndPut(data, "PRODUCT_NAME", APP_NAME, params); |
266 validateValueAndPut(data, "PRODUCT_NAME", APP_NAME, params); |
266 validateValueAndPut(data, "PRODUCT_VERSION", VERSION, params); |
267 validateValueAndPut(data, "PRODUCT_VERSION", VERSION, params); |
267 |
268 |
268 try (Writer w = Files.newBufferedWriter( |
269 createResource(EXECUTABLE_PROPERTIES_TEMPLATE, params) |
269 getConfig_ExecutableProperties(params).toPath(), |
270 .setCategory(I18N.getString("resource.executable-properties-template")) |
270 StandardCharsets.UTF_8)) { |
271 .setSubstitutionData(data) |
271 String content = preprocessTextResource( |
272 .saveToFile(getConfig_ExecutableProperties(params)); |
272 getConfig_ExecutableProperties(params).getName(), |
|
273 I18N.getString("resource.executable-properties-template"), |
|
274 EXECUTABLE_PROPERTIES_TEMPLATE, data, |
|
275 VERBOSE.fetchFrom(params), |
|
276 RESOURCE_DIR.fetchFrom(params)); |
|
277 w.write(content); |
|
278 } |
|
279 } |
273 } |
280 |
274 |
281 private void createLauncherForEntryPoint( |
275 private void createLauncherForEntryPoint( |
282 Map<String, ? super Object> params) throws IOException { |
276 Map<String, ? super Object> params) throws IOException { |
283 |
277 |
284 File icon = ICON_ICO.fetchFrom(params); |
|
285 File iconTarget = getConfig_AppIcon(params); |
278 File iconTarget = getConfig_AppIcon(params); |
286 |
279 |
287 InputStream in = locateResource( |
280 createResource(TEMPLATE_APP_ICON, params) |
288 iconTarget.getName(), |
281 .setCategory("icon") |
289 "icon", |
282 .setExternal(ICON_ICO.fetchFrom(params)) |
290 TEMPLATE_APP_ICON, |
283 .saveToFile(iconTarget); |
291 icon, |
|
292 VERBOSE.fetchFrom(params), |
|
293 RESOURCE_DIR.fetchFrom(params)); |
|
294 |
|
295 Files.copy(in, iconTarget.toPath(), |
|
296 StandardCopyOption.REPLACE_EXISTING); |
|
297 |
284 |
298 writeCfgFile(params, root.resolve( |
285 writeCfgFile(params, root.resolve( |
299 getLauncherCfgName(params)).toFile()); |
286 getLauncherCfgName(params)).toFile()); |
300 |
287 |
301 prepareExecutableProperties(params); |
288 prepareExecutableProperties(params); |