JDK-8215453: remove unused BundlerParams and fix misleading messages JDK-8200758-branch
authorherrick
Tue, 18 Dec 2018 16:57:57 -0500
branchJDK-8200758-branch
changeset 57078 db003bfc5bf7
parent 57077 8f9cf6ad59f0
child 57079 c53a2eca0f57
JDK-8215453: remove unused BundlerParams and fix misleading messages Reviewed-by: almatvee
src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppBundler.java
src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppImageBuilder.java
src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java
src/jdk.jpackage/share/classes/jdk/jpackage/internal/AbstractAppImageBuilder.java
src/jdk.jpackage/share/classes/jdk/jpackage/internal/BundleParams.java
src/jdk.jpackage/share/classes/jdk/jpackage/internal/DeployParams.java
src/jdk.jpackage/share/classes/jdk/jpackage/internal/StandardBundlerParam.java
src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources.properties
src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_ja.properties
src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_zh_CN.properties
src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WinAppBundler.java
src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WindowsAppImageBuilder.java
--- a/src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppBundler.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppBundler.java	Tue Dec 18 16:57:57 2018 -0500
@@ -44,8 +44,6 @@
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
             "jdk.jpackage.internal.resources.LinuxResources");
 
-    private static final String EXECUTABLE_NAME = "JavaAppLauncher";
-
     public static final BundlerParamInfo<File> ICON_PNG =
             new StandardBundlerParam<>(
             I18N.getString("param.icon-png.name"),
@@ -215,7 +213,6 @@
                 ARGUMENTS,
                 CLASSPATH,
                 JVM_OPTIONS,
-                JVM_PROPERTIES,
                 MAIN_CLASS,
                 MAIN_JAR,
                 PREFERENCES_ID,
--- a/src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppImageBuilder.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxAppImageBuilder.java	Tue Dec 18 16:57:57 2018 -0500
@@ -54,7 +54,6 @@
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
         "jdk.jpackage.internal.resources.LinuxResources");
 
-    private static final String EXECUTABLE_NAME = "JavaAppLauncher";
     private static final String LIBRARY_NAME = "libapplauncher.so";
 
     private final Path root;
--- a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java	Tue Dec 18 16:57:57 2018 -0500
@@ -65,7 +65,6 @@
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
             "jdk.jpackage.internal.resources.MacResources");
 
-    private static final String EXECUTABLE_NAME = "JavaAppLauncher";
     private static final String LIBRARY_NAME = "libapplauncher.dylib";
     private static final String TEMPLATE_BUNDLE_ICON = "GenericApp.icns";
     private static final String OS_TYPE_CODE = "APPL";
@@ -572,17 +571,6 @@
             newline = "\n";
         }
 
-        Map<String, String> jvmProps = JVM_PROPERTIES.fetchFrom(params);
-        for (Map.Entry<String, String> entry : jvmProps.entrySet()) {
-            sb.append(newline)
-                    .append("    <string>-D")
-                    .append(entry.getKey())
-                    .append("=")
-                    .append(entry.getValue())
-                    .append("</string>");
-            newline = "\n";
-        }
-
         data.put("DEPLOY_JVM_OPTIONS", sb.toString());
 
         sb = new StringBuilder();
--- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/AbstractAppImageBuilder.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/AbstractAppImageBuilder.java	Tue Dec 18 16:57:57 2018 -0500
@@ -249,10 +249,6 @@
             out.println("--module-path");
             out.println(getAppDir().relativize(modsDir));
         }
-        Map<String, String> jvmProps = JVM_PROPERTIES.fetchFrom(params);
-        for (Map.Entry<String, String> property : jvmProps.entrySet()) {
-            out.println("-D" + property.getKey() + "=" + property.getValue());
-        }
 
         out.println();
         out.println("[ArgOptions]");
--- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/BundleParams.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/BundleParams.java	Tue Dec 18 16:57:57 2018 -0500
@@ -164,10 +164,6 @@
         putUnlessNullOrEmpty(JVM_OPTIONS.getID(), jvmargs);
     }
 
-    public void setJvmProperties(Map<String, String> jvmProperties) {
-        putUnlessNullOrEmpty(JVM_PROPERTIES.getID(), jvmProperties);
-    }
-
     public void setArguments(List<String> arguments) {
         putUnlessNullOrEmpty(ARGUMENTS.getID(), arguments);
     }
--- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/DeployParams.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/DeployParams.java	Tue Dec 18 16:57:57 2018 -0500
@@ -87,10 +87,6 @@
     // (in theory string can contain spaces and need to be escaped
     List<String> jvmargs = new LinkedList<>();
 
-    // list of jvm properties (can also be passed as VM args
-    // but keeping them separate make it a bit more convinient
-    Map<String, String> properties = new LinkedHashMap<>();
-
     // raw arguments to the bundler
     Map<String, ? super Object> bundlerArguments = new LinkedHashMap<>();
 
@@ -134,10 +130,6 @@
         jvmargs.add(v);
     }
 
-    void addJvmProperty(String n, String v) {
-        properties.put(n, v);
-    }
-
     void setArguments(List<String> args) {
         this.arguments = args;
     }
@@ -459,7 +451,6 @@
     }
 
     static final Set<String> multi_args = new TreeSet<>(Arrays.asList(
-            StandardBundlerParam.JVM_PROPERTIES.getID(),
             StandardBundlerParam.JVM_OPTIONS.getID(),
             StandardBundlerParam.ARGUMENTS.getID(),
             StandardBundlerParam.MODULE_PATH.getID(),
@@ -515,7 +506,6 @@
         bundleParams.setDescription(description);
         bundleParams.setTitle(title);
 
-        bundleParams.setJvmProperties(properties);
         bundleParams.setJvmargs(jvmargs);
         bundleParams.setArguments(arguments);
 
--- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/StandardBundlerParam.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/StandardBundlerParam.java	Tue Dec 18 16:57:57 2018 -0500
@@ -290,31 +290,6 @@
                     (s, p) -> Arrays.asList(s.split("\n\n"))
             );
 
-    @SuppressWarnings("unchecked")
-    static final StandardBundlerParam<Map<String, String>> JVM_PROPERTIES =
-            new StandardBundlerParam<>(
-                    I18N.getString("param.jvm-system-properties.name"),
-                    I18N.getString("param.jvm-system-properties.description"),
-                    "jvmProperties",
-                    (Class<Map<String, String>>) (Object) Map.class,
-                    params -> Collections.emptyMap(),
-                    (s, params) -> {
-                        Map<String, String> map = new HashMap<>();
-                        try {
-                            Properties p = new Properties();
-                            p.load(new StringReader(s));
-                            for (Map.Entry<Object,
-                                    Object> entry : p.entrySet()) {
-                                map.put((String)entry.getKey(),
-                                        (String)entry.getValue());
-                            }
-                        } catch (IOException e) {
-                            e.printStackTrace();
-                        }
-                        return map;
-                    }
-            );
-
     static final StandardBundlerParam<String> TITLE =
             new StandardBundlerParam<>(
                     I18N.getString("param.title.name"),
@@ -852,25 +827,41 @@
     }
 
     private static RelativeFileSet getMainJar(
-            String moduleName, Map<String, ? super Object> params) {
+            String mainJarValue, Map<String, ? super Object> params) {
         for (RelativeFileSet rfs : APP_RESOURCES_LIST.fetchFrom(params)) {
             File appResourcesRoot = rfs.getBaseDirectory();
-            File mainJarFile = new File(appResourcesRoot, moduleName);
+            File mainJarFile = new File(appResourcesRoot, mainJarValue);
 
             if (mainJarFile.exists()) {
                 return new RelativeFileSet(appResourcesRoot,
                      new LinkedHashSet<>(Collections.singletonList(
                      mainJarFile)));
             }
-            else {
+            mainJarFile = new File(mainJarValue);
+            if (mainJarFile.exists()) {
+                // absolute path for main-jar may fail is only legal if
+                // path is within the appResourceRoot directory
+                try {
+                    return new RelativeFileSet(appResourcesRoot,
+                         new LinkedHashSet<>(Collections.singletonList(
+                         mainJarFile)));
+                } catch (Exception e) {
+                    // if not within, RelativeFileSet constructor throws a
+                    // RuntimeException, but the IllegalArgumentException
+                    // below contains a more explicit error message.
+                }
+            } else {
                 List<Path> modulePath = MODULE_PATH.fetchFrom(params);
-                Path modularJarPath = JLinkBundlerHelper.findPathOfModule(
-                        modulePath, moduleName);
-
-                if (modularJarPath != null && Files.exists(modularJarPath)) {
-                    return new RelativeFileSet(appResourcesRoot,
-                            new LinkedHashSet<>(Collections.singletonList(
-                            modularJarPath.toFile())));
+                modulePath.removeAll(getDefaultModulePath());
+                if (!modulePath.isEmpty()) {
+                    Path modularJarPath = JLinkBundlerHelper.findPathOfModule(
+                            modulePath, mainJarValue);
+                    if (modularJarPath != null &&
+                            Files.exists(modularJarPath)) {
+                        return new RelativeFileSet(appResourcesRoot,
+                                new LinkedHashSet<>(Collections.singletonList(
+                                modularJarPath.toFile())));
+                    }
                 }
             }
         }
@@ -878,7 +869,7 @@
         throw new IllegalArgumentException(
                 new ConfigException(MessageFormat.format(I18N.getString(
                         "error.main-jar-does-not-exist"),
-                        moduleName), I18N.getString(
+                        mainJarValue), I18N.getString(
                         "error.main-jar-does-not-exist.advice")));
     }
 
--- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources.properties	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources.properties	Tue Dec 18 16:57:57 2018 -0500
@@ -57,7 +57,7 @@
 \    Generate an application installer:\n\
 \        jpackage create-installer -i inputdir -o outputdir \\\n\
 \            -n "Installer Name" -c package.ClassName -j MyJar.jar\n\
-\        jpackage create-inataller -o outputdir -n "Installer Name" \\\n\
+\        jpackage create-installer -o outputdir -n "Installer Name" \\\n\
               --app-image <app image dir>\n\
 \    Generate a JRE installer:\n\
 \        jpackage create-jre-installer -name <jre-name> -output outputdir\n\
@@ -72,19 +72,21 @@
 \          option for the current platform to the output stream, and exit\n\
 \  --version -v\n\
 \          Print the product version to the output stream and exit\n\
-\  --output -o <output dir>\n\
-\          Name of the directory where generated output file is placed\n\
-\  --input -i <input dir>\n\
-\          Name of the input directory that contains the files to package\n\
+\  --output -o <output path>\n\
+\          Path where generated output file is placed\n\
+\          (absolute path or relative to the current directory)\n\
+\  --input -i <input path>\n\
+\          Path of the input directory that contains the files to package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --files -f <input files>\n\
 \          A {0} separated list of files in the input dir to be packaged\n\
 \          If omitted, all files in the input directory will be packaged.\n\
 \  --name -n <application name>\n\
 \          Name of the application\n\
-\  --main-jar -j <main jar name>\n\
+\  --main-jar -j <main jar file>\n\
 \          The main JAR of the application\n\
-\          This JAR should have the main-class, and is relative\n\
-\          to the assembled application directory.\n\
+\          (specified as a path relative to the input path)\n\
+\          This JAR should contain the main-class.\n\
 \  --class -c <class name>\n\
 \          Qualified name of the application class to execute\n\
 \  --app-version <version string>\n\
@@ -92,8 +94,9 @@
 \  --arguments -a <main class arguments>\n\
 \          Command line arguments to pass to the main class if no\n\
 \          arguments are specified by the launcher\n\
-\  --icon <icon file name>\n\
-\          Icon of the application bundle\n\
+\  --icon <icon file path>\n\
+\          Path of the icon of the application bundle\n\
+\          (absolute path or relative to the current directory)\n\
 \  --singleton\n\
 \          Prevents multiple instances of the application from launching\n\
 \          (see SingleInstanceService API for more details)\n\
@@ -108,23 +111,30 @@
 \  --jvm-args <java vm arguments>\n\
 \          JVM flags and options to pass to the application\n\
 \  --file-associations <file path>\n\
-\          Properties file that contains list of key,value pairs that\n\
-\          describe a file association\n\
-\          "extension", "mime-type", "icon", and "description"\n\
-\          can be used as keys for the association.\n\
+\          Path to a Properties file that contains list of key, value pairs\n\
+\          (absolute path or relative to the current directory)\n\
+\          The keys "extension", "mime-type", "icon", and "description"\n\
+\          can be used to describe the association.\n\
 \  --secondary-launcher <file path>\n\
-\          Properties file that contains a collection of options\n\
-\          for a secondary launcher\n\
+\          Path to a Properties file that contains list of key, value pairs\n\
+\          (absolute path or relative to the current directory)\n\
+\          The keys  "name" (required), "version", "module", "class",\n\
+\          "icon", "arguments", "jvm-args", "win-menu",\n\
+\          "win-shortcut", and "win-console" can be used to describe\n\
+\          the secondary launcher.\n\
 \  --build-root <file path>\n\
-\          Directory in which to use and place temporary files\n\
+\          Path of the directory used to create temporary files\n\
+\          (absolute path or relative to the current directory)\n\
 \  --runtime-image <file path>\n\
-\          Location of the predefined runtime image that is used to build\n\
+\          Path of the predefined runtime image that is used to build\n\
 \          an application image and installable package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --app-image <file path>\n\
 \          Location of the predefined application image that is used\n\
 \          to build an installable package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --install-dir <file path>\n\
-\          Installation directory of the application\n\
+\          Absolute path of the installation directory of the application\n\
 \          This option is ignored on Windows, use --win-dir-chooser to\n\
 \          provide user the ability to choose the installation directory.\n\
 \  --license-file <file name>\n\
@@ -147,6 +157,7 @@
 \          and be located on the module path.\n\
 \  --module-path -p <module path>\n\
 \          Path JLink looks in for modules when packaging the Java Runtime\n\
+\          (absolute path or relative to the current directory)\n\
 \  --add-modules <module list>\n\
 \          A {0} separated list of modules to add to JImage creation,\n\
 \          including possible services\n\
@@ -172,7 +183,8 @@
 \          Note that the key is the string shown to\n\
 \          the user and the value is the ID of the category.\n\
 \  --mac-app-store-entitlements <file path>\n\
-\          File location of a custom mac app store entitlements file\n\
+\          Path of a custom mac app store entitlements file\n\
+\          (absolute path or relative to the current directory)\n\
 \  --mac-bundle-signing-prefix <prefix string>\n\
 \          When signing the application bundle, this value is prefixed to all\n\
 \          components that need to be signed that don't have\n\
@@ -181,7 +193,8 @@
 \          User name portion of the typical\n\
 \          "Mac Developer ID Application: <user name>" signing key\n\
 \  --mac-signing-keychain <file path>\n\
-\          Location of the keychain to use\n\
+\          Path of the keychain to use\n\
+\          (absolute path or relative to the current directory)\n\
 \          If not specified, the standard keychains are used.\n\
 
 MSG_Help_linux=\nThe following options are valid for Linux platforms:\n\
--- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_ja.properties	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_ja.properties	Tue Dec 18 16:57:57 2018 -0500
@@ -57,7 +57,7 @@
 \    Generate an application installer:\n\
 \        jpackage create-installer -i inputdir -o outputdir \\\n\
 \            -n "Installer Name" -c package.ClassName -j MyJar.jar\n\
-\        jpackage create-inataller -o outputdir -n "Installer Name" \\\n\
+\        jpackage create-installer -o outputdir -n "Installer Name" \\\n\
               --app-image <app image dir>\n\
 \    Generate a JRE installer:\n\
 \        jpackage create-jre-installer -name <jre-name> -output outputdir\n\
@@ -72,19 +72,21 @@
 \          option for the current platform to the output stream, and exit\n\
 \  --version -v\n\
 \          Print the product version to the output stream and exit\n\
-\  --output -o <output dir>\n\
-\          Name of the directory where generated output file is placed\n\
-\  --input -i <input dir>\n\
-\          Name of the input directory that contains the files to package\n\
+\  --output -o <output path>\n\
+\          Path where generated output file is placed\n\
+\          (absolute path or relative to the current directory)\n\
+\  --input -i <input path>\n\
+\          Path of the input directory that contains the files to package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --files -f <input files>\n\
 \          A {0} separated list of files in the input dir to be packaged\n\
 \          If omitted, all files in the input directory will be packaged.\n\
 \  --name -n <application name>\n\
 \          Name of the application\n\
-\  --main-jar -j <main jar name>\n\
+\  --main-jar -j <main jar file>\n\
 \          The main JAR of the application\n\
-\          This JAR should have the main-class, and is relative\n\
-\          to the assembled application directory.\n\
+\          (specified as a path relative to the input path)\n\
+\          This JAR should contain the main-class.\n\
 \  --class -c <class name>\n\
 \          Qualified name of the application class to execute\n\
 \  --app-version <version string>\n\
@@ -92,8 +94,9 @@
 \  --arguments -a <main class arguments>\n\
 \          Command line arguments to pass to the main class if no\n\
 \          arguments are specified by the launcher\n\
-\  --icon <icon file name>\n\
-\          Icon of the application bundle\n\
+\  --icon <icon file path>\n\
+\          Path of the icon of the application bundle\n\
+\          (absolute path or relative to the current directory)\n\
 \  --singleton\n\
 \          Prevents multiple instances of the application from launching\n\
 \          (see SingleInstanceService API for more details)\n\
@@ -108,23 +111,30 @@
 \  --jvm-args <java vm arguments>\n\
 \          JVM flags and options to pass to the application\n\
 \  --file-associations <file path>\n\
-\          Properties file that contains list of key,value pairs that\n\
-\          describe a file association\n\
-\          "extension", "mime-type", "icon", and "description"\n\
-\          can be used as keys for the association.\n\
+\          Path to a Properties file that contains list of key, value pairs\n\
+\          (absolute path or relative to the current directory)\n\
+\          The keys "extension", "mime-type", "icon", and "description"\n\
+\          can be used to describe the association.\n\
 \  --secondary-launcher <file path>\n\
-\          Properties file that contains a collection of options\n\
-\          for a secondary launcher\n\
+\          Path to a Properties file that contains list of key, value pairs\n\
+\          (absolute path or relative to the current directory)\n\
+\          The keys  "name" (required), "version", "module", "class",\n\
+\          "icon", "arguments", "jvm-args", "win-menu",\n\
+\          "win-shortcut", and "win-console" can be used to describe\n\
+\          the secondary launcher.\n\
 \  --build-root <file path>\n\
-\          Directory in which to use and place temporary files\n\
+\          Path of the directory used to create temporary files\n\
+\          (absolute path or relative to the current directory)\n\
 \  --runtime-image <file path>\n\
-\          Location of the predefined runtime image that is used to build\n\
+\          Path of the predefined runtime image that is used to build\n\
 \          an application image and installable package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --app-image <file path>\n\
 \          Location of the predefined application image that is used\n\
 \          to build an installable package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --install-dir <file path>\n\
-\          Installation directory of the application\n\
+\          Absolute path of the installation directory of the application\n\
 \          This option is ignored on Windows, use --win-dir-chooser to\n\
 \          provide user the ability to choose the installation directory.\n\
 \  --license-file <file name>\n\
@@ -147,6 +157,7 @@
 \          and be located on the module path.\n\
 \  --module-path -p <module path>\n\
 \          Path JLink looks in for modules when packaging the Java Runtime\n\
+\          (absolute path or relative to the current directory)\n\
 \  --add-modules <module list>\n\
 \          A {0} separated list of modules to add to JImage creation,\n\
 \          including possible services\n\
@@ -172,7 +183,8 @@
 \          Note that the key is the string shown to\n\
 \          the user and the value is the ID of the category.\n\
 \  --mac-app-store-entitlements <file path>\n\
-\          File location of a custom mac app store entitlements file\n\
+\          Path of a custom mac app store entitlements file\n\
+\          (absolute path or relative to the current directory)\n\
 \  --mac-bundle-signing-prefix <prefix string>\n\
 \          When signing the application bundle, this value is prefixed to all\n\
 \          components that need to be signed that don't have\n\
@@ -181,7 +193,8 @@
 \          User name portion of the typical\n\
 \          "Mac Developer ID Application: <user name>" signing key\n\
 \  --mac-signing-keychain <file path>\n\
-\          Location of the keychain to use\n\
+\          Path of the keychain to use\n\
+\          (absolute path or relative to the current directory)\n\
 \          If not specified, the standard keychains are used.\n\
 
 MSG_Help_linux=\nThe following options are valid for Linux platforms:\n\
--- a/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_zh_CN.properties	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/share/classes/jdk/jpackage/internal/resources/HelpResources_zh_CN.properties	Tue Dec 18 16:57:57 2018 -0500
@@ -57,7 +57,7 @@
 \    Generate an application installer:\n\
 \        jpackage create-installer -i inputdir -o outputdir \\\n\
 \            -n "Installer Name" -c package.ClassName -j MyJar.jar\n\
-\        jpackage create-inataller -o outputdir -n "Installer Name" \\\n\
+\        jpackage create-installer -o outputdir -n "Installer Name" \\\n\
               --app-image <app image dir>\n\
 \    Generate a JRE installer:\n\
 \        jpackage create-jre-installer -name <jre-name> -output outputdir\n\
@@ -72,19 +72,21 @@
 \          option for the current platform to the output stream, and exit\n\
 \  --version -v\n\
 \          Print the product version to the output stream and exit\n\
-\  --output -o <output dir>\n\
-\          Name of the directory where generated output file is placed\n\
-\  --input -i <input dir>\n\
-\          Name of the input directory that contains the files to package\n\
+\  --output -o <output path>\n\
+\          Path where generated output file is placed\n\
+\          (absolute path or relative to the current directory)\n\
+\  --input -i <input path>\n\
+\          Path of the input directory that contains the files to package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --files -f <input files>\n\
 \          A {0} separated list of files in the input dir to be packaged\n\
 \          If omitted, all files in the input directory will be packaged.\n\
 \  --name -n <application name>\n\
 \          Name of the application\n\
-\  --main-jar -j <main jar name>\n\
+\  --main-jar -j <main jar file>\n\
 \          The main JAR of the application\n\
-\          This JAR should have the main-class, and is relative\n\
-\          to the assembled application directory.\n\
+\          (specified as a path relative to the input path)\n\
+\          This JAR should contain the main-class.\n\
 \  --class -c <class name>\n\
 \          Qualified name of the application class to execute\n\
 \  --app-version <version string>\n\
@@ -92,8 +94,9 @@
 \  --arguments -a <main class arguments>\n\
 \          Command line arguments to pass to the main class if no\n\
 \          arguments are specified by the launcher\n\
-\  --icon <icon file name>\n\
-\          Icon of the application bundle\n\
+\  --icon <icon file path>\n\
+\          Path of the icon of the application bundle\n\
+\          (absolute path or relative to the current directory)\n\
 \  --singleton\n\
 \          Prevents multiple instances of the application from launching\n\
 \          (see SingleInstanceService API for more details)\n\
@@ -108,23 +111,30 @@
 \  --jvm-args <java vm arguments>\n\
 \          JVM flags and options to pass to the application\n\
 \  --file-associations <file path>\n\
-\          Properties file that contains list of key,value pairs that\n\
-\          describe a file association\n\
-\          "extension", "mime-type", "icon", and "description"\n\
-\          can be used as keys for the association.\n\
+\          Path to a Properties file that contains list of key, value pairs\n\
+\          (absolute path or relative to the current directory)\n\
+\          The keys "extension", "mime-type", "icon", and "description"\n\
+\          can be used to describe the association.\n\
 \  --secondary-launcher <file path>\n\
-\          Properties file that contains a collection of options\n\
-\          for a secondary launcher\n\
+\          Path to a Properties file that contains list of key, value pairs\n\
+\          (absolute path or relative to the current directory)\n\
+\          The keys  "name" (required), "version", "module", "class",\n\
+\          "icon", "arguments", "jvm-args", "win-menu",\n\
+\          "win-shortcut", and "win-console" can be used to describe\n\
+\          the secondary launcher.\n\
 \  --build-root <file path>\n\
-\          Directory in which to use and place temporary files\n\
+\          Path of the directory used to create temporary files\n\
+\          (absolute path or relative to the current directory)\n\
 \  --runtime-image <file path>\n\
-\          Location of the predefined runtime image that is used to build\n\
+\          Path of the predefined runtime image that is used to build\n\
 \          an application image and installable package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --app-image <file path>\n\
 \          Location of the predefined application image that is used\n\
 \          to build an installable package\n\
+\          (absolute path or relative to the current directory)\n\
 \  --install-dir <file path>\n\
-\          Installation directory of the application\n\
+\          Absolute path of the installation directory of the application\n\
 \          This option is ignored on Windows, use --win-dir-chooser to\n\
 \          provide user the ability to choose the installation directory.\n\
 \  --license-file <file name>\n\
@@ -147,6 +157,7 @@
 \          and be located on the module path.\n\
 \  --module-path -p <module path>\n\
 \          Path JLink looks in for modules when packaging the Java Runtime\n\
+\          (absolute path or relative to the current directory)\n\
 \  --add-modules <module list>\n\
 \          A {0} separated list of modules to add to JImage creation,\n\
 \          including possible services\n\
@@ -172,7 +183,8 @@
 \          Note that the key is the string shown to\n\
 \          the user and the value is the ID of the category.\n\
 \  --mac-app-store-entitlements <file path>\n\
-\          File location of a custom mac app store entitlements file\n\
+\          Path of a custom mac app store entitlements file\n\
+\          (absolute path or relative to the current directory)\n\
 \  --mac-bundle-signing-prefix <prefix string>\n\
 \          When signing the application bundle, this value is prefixed to all\n\
 \          components that need to be signed that don't have\n\
@@ -181,7 +193,8 @@
 \          User name portion of the typical\n\
 \          "Mac Developer ID Application: <user name>" signing key\n\
 \  --mac-signing-keychain <file path>\n\
-\          Location of the keychain to use\n\
+\          Path of the keychain to use\n\
+\          (absolute path or relative to the current directory)\n\
 \          If not specified, the standard keychains are used.\n\
 
 MSG_Help_linux=\nThe following options are valid for Linux platforms:\n\
--- a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WinAppBundler.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WinAppBundler.java	Tue Dec 18 16:57:57 2018 -0500
@@ -301,7 +301,6 @@
                 CLASSPATH,
                 ICON_ICO,
                 JVM_OPTIONS,
-                JVM_PROPERTIES,
                 MAIN_CLASS,
                 MAIN_JAR,
                 PREFERENCES_ID,
--- a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WindowsAppImageBuilder.java	Tue Dec 18 15:10:45 2018 -0500
+++ b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WindowsAppImageBuilder.java	Tue Dec 18 16:57:57 2018 -0500
@@ -60,7 +60,6 @@
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
             "jdk.jpackage.internal.resources.WinResources");
 
-    private final static String EXECUTABLE_NAME = "WinLauncher.exe";
     private final static String LIBRARY_NAME = "applauncher.dll";
     private final static String REDIST_MSVCR = "vcruntimeVS_VER.dll";
     private final static String REDIST_MSVCP = "msvcpVS_VER.dll";