8212048: Cleanup source code and fix issues discussed in preliminary review JDK-8200758-branch
authorherrick
Wed, 17 Oct 2018 13:50:11 -0400
branchJDK-8200758-branch
changeset 56982 e094d5483bd6
parent 56963 eaca4369b068
child 56983 01decb67d4f0
8212048: Cleanup source code and fix issues discussed in preliminary review Reviewed-by: almatvee
src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceImpl.java
src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceListener.java
src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceNewActivation.java
src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceService.java
src/jdk.packager.services/share/classes/module-info.java
src/jdk.packager/linux/classes/jdk/packager/internal/builders/linux/LinuxAppImageBuilder.java
src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxAppBundler.java
src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxDebBundler.java
src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxRpmBundler.java
src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_ja.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_zh_CN.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_ja.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_zh_CN.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_ja.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_zh_CN.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_ja.properties
src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_zh_CN.properties
src/jdk.packager/linux/native/launcher/launcher.cpp
src/jdk.packager/macosx/classes/jdk/packager/internal/builders/mac/MacAppImageBuilder.java
src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppBundler.java
src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppStoreBundler.java
src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacBaseInstallerBundler.java
src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacCertificate.java
src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacDmgBundler.java
src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacPkgBundler.java
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_ja.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_zh_CN.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_ja.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_zh_CN.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_ja.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_zh_CN.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_ja.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_zh_CN.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_ja.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_zh_CN.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_ja.properties
src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_zh_CN.properties
src/jdk.packager/macosx/native/library/MacPlatform.mm
src/jdk.packager/share/classes/jdk/packager/Main.java
src/jdk.packager/share/classes/jdk/packager/internal/AbstractBundler.java
src/jdk.packager/share/classes/jdk/packager/internal/AbstractImageBundler.java
src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java
src/jdk.packager/share/classes/jdk/packager/internal/BasicBundlers.java
src/jdk.packager/share/classes/jdk/packager/internal/BundlerParamInfo.java
src/jdk.packager/share/classes/jdk/packager/internal/Bundlers.java
src/jdk.packager/share/classes/jdk/packager/internal/CLIHelp.java
src/jdk.packager/share/classes/jdk/packager/internal/CommonParams.java
src/jdk.packager/share/classes/jdk/packager/internal/ConfigException.java
src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java
src/jdk.packager/share/classes/jdk/packager/internal/EnumeratedBundlerParam.java
src/jdk.packager/share/classes/jdk/packager/internal/IOUtils.java
src/jdk.packager/share/classes/jdk/packager/internal/InvalidBundlerParamException.java
src/jdk.packager/share/classes/jdk/packager/internal/JLinkBundlerHelper.java
src/jdk.packager/share/classes/jdk/packager/internal/JPackagerToolProvider.java
src/jdk.packager/share/classes/jdk/packager/internal/JavaPackagerToolProvider.java
src/jdk.packager/share/classes/jdk/packager/internal/JreUtils.java
src/jdk.packager/share/classes/jdk/packager/internal/Log.java
src/jdk.packager/share/classes/jdk/packager/internal/ModFile.java
src/jdk.packager/share/classes/jdk/packager/internal/Module.java
src/jdk.packager/share/classes/jdk/packager/internal/ModuleManager.java
src/jdk.packager/share/classes/jdk/packager/internal/PackagerException.java
src/jdk.packager/share/classes/jdk/packager/internal/Param.java
src/jdk.packager/share/classes/jdk/packager/internal/Platform.java
src/jdk.packager/share/classes/jdk/packager/internal/RedistributableModules.java
src/jdk.packager/share/classes/jdk/packager/internal/RelativeFileSet.java
src/jdk.packager/share/classes/jdk/packager/internal/SecondaryLauncherArguments.java
src/jdk.packager/share/classes/jdk/packager/internal/StandardBundlerParam.java
src/jdk.packager/share/classes/jdk/packager/internal/UnsupportedPlatformException.java
src/jdk.packager/share/classes/jdk/packager/internal/ValidOptions.java
src/jdk.packager/share/classes/jdk/packager/internal/builders/AbstractAppImageBuilder.java
src/jdk.packager/share/classes/jdk/packager/internal/bundlers/BundleParams.java
src/jdk.packager/share/classes/jdk/packager/internal/bundlers/Bundler.java
src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_ja.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_zh_CN.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_ja.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_zh_CN.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/Arguments.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_ja.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_zh_CN.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/CLIHelp.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_ja.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_zh_CN.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_ja.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_zh_CN.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_ja.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_zh_CN.properties
src/jdk.packager/share/classes/jdk/packager/internal/resources/jre.module.list
src/jdk.packager/share/classes/jdk/packager/internal/resources/server.jre.list
src/jdk.packager/share/classes/jdk/packager/main/Main.java
src/jdk.packager/share/classes/module-info.java
src/jdk.packager/share/native/library/common/Exports.cpp
src/jdk.packager/share/native/library/common/Exports.h
src/jdk.packager/share/native/library/common/FilePath.cpp
src/jdk.packager/share/native/library/common/FilePath.h
src/jdk.packager/share/native/library/common/GenericPlatform.cpp
src/jdk.packager/share/native/library/common/GenericPlatform.h
src/jdk.packager/share/native/library/common/Helpers.cpp
src/jdk.packager/share/native/library/common/Helpers.h
src/jdk.packager/share/native/library/common/IniFile.cpp
src/jdk.packager/share/native/library/common/IniFile.h
src/jdk.packager/share/native/library/common/Java.cpp
src/jdk.packager/share/native/library/common/Java.h
src/jdk.packager/share/native/library/common/JavaTypes.cpp
src/jdk.packager/share/native/library/common/JavaTypes.h
src/jdk.packager/share/native/library/common/JavaVirtualMachine.cpp
src/jdk.packager/share/native/library/common/JavaVirtualMachine.h
src/jdk.packager/share/native/library/common/LinuxPlatform.cpp
src/jdk.packager/share/native/library/common/LinuxPlatform.h
src/jdk.packager/share/native/library/common/Lock.cpp
src/jdk.packager/share/native/library/common/Lock.h
src/jdk.packager/share/native/library/common/MacPlatform.h
src/jdk.packager/share/native/library/common/Macros.cpp
src/jdk.packager/share/native/library/common/Macros.h
src/jdk.packager/share/native/library/common/Messages.cpp
src/jdk.packager/share/native/library/common/Messages.h
src/jdk.packager/share/native/library/common/OrderedMap.h
src/jdk.packager/share/native/library/common/Package.cpp
src/jdk.packager/share/native/library/common/Package.h
src/jdk.packager/share/native/library/common/Platform.cpp
src/jdk.packager/share/native/library/common/Platform.h
src/jdk.packager/share/native/library/common/PlatformString.cpp
src/jdk.packager/share/native/library/common/PlatformString.h
src/jdk.packager/share/native/library/common/PlatformThread.cpp
src/jdk.packager/share/native/library/common/PlatformThread.h
src/jdk.packager/share/native/library/common/PosixPlatform.cpp
src/jdk.packager/share/native/library/common/PosixPlatform.h
src/jdk.packager/share/native/library/common/PropertyFile.cpp
src/jdk.packager/share/native/library/common/PropertyFile.h
src/jdk.packager/share/native/library/common/WindowsPlatform.cpp
src/jdk.packager/share/native/library/common/WindowsPlatform.h
src/jdk.packager/share/native/library/common/main.cpp
src/jdk.packager/unix/scripts/jpackager
src/jdk.packager/windows/classes/jdk/packager/internal/builders/windows/WindowsAppImageBuilder.java
src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_ja.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_zh_CN.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_ja.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_zh_CN.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinExeBundler.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinLauncher.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_ja.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_zh_CN.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_ja.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_zh_CN.properties
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.iss
src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.jre.iss
src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinAppBundler.java
src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinExeBundler.java
src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinMsiBundler.java
src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsBundlerParam.java
src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsRegistry.java
src/jdk.packager/windows/native/jpackager/IconSwap.cpp
src/jdk.packager/windows/native/jpackager/VersionInfoSwap.cpp
src/jdk.packager/windows/native/jpackager/javapackager.cpp
src/jdk.packager/windows/native/jpackager/javapackager.manifest
src/jdk.packager/windows/native/jpackager/javapackager.rc
src/jdk.packager/windows/native/jpackager/jpackager.cpp
src/jdk.packager/windows/native/jpackager/jpackager.manifest
src/jdk.packager/windows/native/jpackager/jpackager.rc
src/jdk.packager/windows/native/launcher/WinLauncher.cpp
--- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceImpl.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceImpl.java	Wed Oct 17 13:50:11 2018 -0400
@@ -50,11 +50,11 @@
 class SingleInstanceImpl {
 
     static final String SI_FILEDIR = getTmpDir() + File.separator
-                                                 + "si" + File.separator;
-    static final String SI_MAGICWORD = "javapackager.singleinstance.init";
-    static final String SI_ACK = "javapackager.singleinstance.ack";
-    static final String SI_STOP = "javapackager.singleinstance.stop";
-    static final String SI_EOF = "javapackager.singleinstance.EOF";
+           + "si" + File.separator;
+    static final String SI_MAGICWORD = "jpackager.singleinstance.init";
+    static final String SI_ACK = "jpackager.singleinstance.ack";
+    static final String SI_STOP = "jpackager.singleinstance.stop";
+    static final String SI_EOF = "jpackager.singleinstance.EOF";
 
     private final ArrayList<SingleInstanceListener> siListeners =
             new ArrayList<>();
@@ -118,7 +118,6 @@
                 siListeners.add(sil);
             }
         }
-
     }
 
     class SingleInstanceServer {
--- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceListener.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceListener.java	Wed Oct 17 13:50:11 2018 -0400
@@ -29,7 +29,7 @@
  * The {@code SingleInstanceListener} interface is used for implementing
  * Single Instance functionality for Java Packager.
  *
- * @since 10
+ * @since 12
  */
 public interface SingleInstanceListener {
 
--- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceNewActivation.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceNewActivation.java	Wed Oct 17 13:50:11 2018 -0400
@@ -27,7 +27,7 @@
 
 import java.util.Arrays;
 
-// This class is used for notifying Single Instance for Java Packager.
+// This class is used for notifying Single Instance for JPackager.
 
 public class SingleInstanceNewActivation {
 
--- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceService.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceService.java	Wed Oct 17 13:50:11 2018 -0400
@@ -38,9 +38,9 @@
 /**
  * The {@code SingleInstanceService} class provides public methods for using
  * Single Instance functionality for Java Packager. To use these methods,
- * the option named "-singleton" must be specified on javapackager command line.
+ * the option named "-singleton" must be specified on jpackager command line.
  *
- * @since 10
+ * @since 12
  */
 public class SingleInstanceService {
 
@@ -59,7 +59,7 @@
     static final String ENCODING_PLATFORM_NAME = "UTF-8";
     static final String ENCODING_UNICODE_NAME = "UTF-16LE";
 
-    static final String APP_ID_PREFIX = "javapackager.si.";
+    static final String APP_ID_PREFIX = "jpackager.si.";
 
     private SingleInstanceService() {}
 
--- a/src/jdk.packager.services/share/classes/module-info.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/module-info.java	Wed Oct 17 13:50:11 2018 -0400
@@ -27,7 +27,7 @@
  * Defines the services used by the jpackager tool.
  *
  * @moduleGraph
- * @since 11
+ * @since 12
  */
 module jdk.packager.services {
     exports jdk.packager.services.singleton;
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/builders/linux/LinuxAppImageBuilder.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/builders/linux/LinuxAppImageBuilder.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
 
 package jdk.packager.internal.builders.linux;
 
-
 import jdk.packager.internal.BundlerParamInfo;
 import jdk.packager.internal.IOUtils;
 import jdk.packager.internal.Log;
@@ -164,7 +163,7 @@
     }
 
 
-    //it is static for the sake of sharing with "installer" bundlers
+    // it is static for the sake of sharing with "installer" bundlers
     // that may skip calls to validate/bundle in this class!
     public static File getRootDir(File outDir, Map<String, ? super Object> p) {
         return new File(outDir, APP_FS_NAME.fetchFrom(p));
@@ -248,12 +247,8 @@
     }
 
     private void copyApplication() throws IOException {
-        List<RelativeFileSet> appResourcesList =
-                APP_RESOURCES_LIST.fetchFrom(params);
-        if (appResourcesList == null) {
-            throw new RuntimeException("Null app resources?");
-        }
-        for (RelativeFileSet appResources : appResourcesList) {
+        for (RelativeFileSet appResources :
+                APP_RESOURCES_LIST.fetchFrom(params)) {
             if (appResources == null) {
                 throw new RuntimeException("Null app resources?");
             }
@@ -264,9 +259,4 @@
         }
     }
 
-    @Override
-    protected String getCacheLocation(Map<String, ? super Object> params) {
-        return "$CACHEDIR/";
-    }
-
 }
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxAppBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxAppBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -40,8 +40,8 @@
 import jdk.packager.internal.bundlers.BundleParams;
 import jdk.packager.internal.builders.linux.LinuxAppImageBuilder;
 import jdk.packager.internal.resources.linux.LinuxResources;
-
 import jdk.packager.internal.JLinkBundlerHelper;
+import jdk.packager.internal.builders.AbstractAppImageBuilder;
 
 import java.io.File;
 import java.io.IOException;
@@ -54,13 +54,11 @@
 import java.util.ResourceBundle;
 
 import static jdk.packager.internal.StandardBundlerParam.*;
-import jdk.packager.internal.builders.AbstractAppImageBuilder;
 
 public class LinuxAppBundler extends AbstractImageBundler {
 
-    private static final ResourceBundle I18N =
-            ResourceBundle.getBundle(
-                    "jdk.packager.internal.resources.linux.LinuxAppBundler");
+    private static final ResourceBundle I18N = ResourceBundle.getBundle(
+            "jdk.packager.internal.resources.linux.LinuxAppBundler");
 
     protected static final String LINUX_BUNDLER_PREFIX =
             BUNDLER_PREFIX + "linux" + File.separator;
@@ -83,58 +81,6 @@
             },
             (s, p) -> new File(s));
 
-    public static final BundlerParamInfo<URL> RAW_EXECUTABLE_URL =
-            new StandardBundlerParam<>(
-            I18N.getString("param.raw-executable-url.name"),
-            I18N.getString("param.raw-executable-url.description"),
-            "linux.launcher.url",
-            URL.class,
-            params -> LinuxResources.class.getResource(EXECUTABLE_NAME),
-            (s, p) -> {
-                try {
-                    return new URL(s);
-                } catch (MalformedURLException e) {
-                    Log.info(e.toString());
-                    return null;
-                }
-            });
-
-    //Subsetting of JRE is restricted.
-    //JRE README defines what is allowed to strip:
-    //   http://www.oracle.com/technetwork/java/javase/jre-8-readme-2095710.html
-    //
-    public static final BundlerParamInfo<Rule[]> LINUX_JRE_RULES =
-            new StandardBundlerParam<>(
-            "",
-            "",
-            ".linux.runtime.rules",
-            Rule[].class,
-            params -> new Rule[]{
-                    Rule.prefixNeg("/bin"),
-                    Rule.prefixNeg("/plugin"),
-                    //Rule.prefixNeg("/lib/ext"), 
-                    //need some of jars there for https to work
-                    Rule.suffix("deploy.jar"), //take deploy.jar
-                    Rule.prefixNeg("/lib/deploy"),
-                    Rule.prefixNeg("/lib/desktop"),
-                    Rule.substrNeg("libnpjp2.so")
-            },
-            (s, p) ->  null
-    );
-
-    public static final BundlerParamInfo<RelativeFileSet> LINUX_RUNTIME =
-            new StandardBundlerParam<>(
-            I18N.getString("param.runtime.name"),
-            I18N.getString("param.runtime.description"),
-            BundleParams.PARAM_RUNTIME,
-            RelativeFileSet.class,
-            params -> JreUtils.extractJreAsRelativeFileSet(
-                    System.getProperty("java.home"),
-                    LINUX_JRE_RULES.fetchFrom(params)),
-            (s, p) -> JreUtils.extractJreAsRelativeFileSet(s,
-                    LINUX_JRE_RULES.fetchFrom(p))
-    );
-
     public static final BundlerParamInfo<String> LINUX_INSTALL_DIR =
             new StandardBundlerParam<>(
             I18N.getString("param.linux-install-dir.name"),
@@ -196,7 +142,7 @@
         return true;
     }
 
-    //it is static for the sake of sharing with "installer" bundlers
+    // it is static for the sake of sharing with "installer" bundlers
     // that may skip calls to validate/bundle in this class!
     public static File getRootDir(File outDir, Map<String, ? super Object> p) {
         return new File(outDir, APP_FS_NAME.fetchFrom(p));
@@ -228,10 +174,6 @@
                 return predefined;
             }
             return rootDirectory;
-        } catch (IOException ex) {
-            Log.info("Exception: "+ex);
-            Log.debug(ex);
-            return null;
         } catch (Exception ex) {
             Log.info("Exception: "+ex);
             Log.debug(ex);
@@ -251,10 +193,6 @@
                 StandardBundlerParam.copyPredefinedRuntimeImage(p, appBuilder);
             }
             return rootDirectory;
-        } catch (IOException ex) {
-            Log.info("Exception: "+ex);
-            Log.debug(ex);
-            return null;
         } catch (Exception ex) {
             Log.info("Exception: "+ex);
             Log.debug(ex);
@@ -327,11 +265,9 @@
                 CLASSPATH,
                 JVM_OPTIONS,
                 JVM_PROPERTIES,
-                LINUX_RUNTIME,
                 MAIN_CLASS,
                 MAIN_JAR,
                 PREFERENCES_ID,
-                PRELOADER_CLASS,
                 VERSION,
                 VERBOSE
         );
@@ -345,8 +281,6 @@
     
     @Override    
     public boolean supported() {
-        // TODO: check that it really works on Solaris (in case we need it)
-        return (Platform.getPlatform() == Platform.LINUX) ||
-                (Platform.getPlatform() == Platform.SOLARIS);
+        return (Platform.getPlatform() == Platform.LINUX);
     }
 }
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxDebBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxDebBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -66,8 +66,8 @@
     // Debian rules for package naming are used here
     // https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
     //
-    // Package names must consist only of lower case letters (a-z), digits (0-9),
-    // plus (+) and minus (-) signs, and periods (.).
+    // Package names must consist only of lower case letters (a-z),
+    // digits (0-9), plus (+) and minus (-) signs, and periods (.).
     // They must be at least two characters long and
     // must start with an alphanumeric character.
     //
@@ -191,9 +191,9 @@
                         for (RelativeFileSet rfs :
                                 APP_RESOURCES_LIST.fetchFrom(params)) {
                             if (rfs.contains(licFileStr)) {
-                                return new String(IOUtils.readFully(
+                                return new String(Files.readAllBytes((
                                         new File(rfs.getBaseDirectory(),
-                                                 licFileStr)));
+                                        licFileStr)).toPath()));
                             }
                         }
                     }
@@ -378,7 +378,7 @@
                     outdir.getAbsolutePath()));
         }
 
-        //we want to create following structure
+        // we want to create following structure
         //   <package-name>
         //        DEBIAN
         //          control   (file with main package details)
@@ -431,7 +431,7 @@
     /*
      * set permissions with a string like "rwxr-xr-x"
      *
-     * This cannot be directly backport to 22u which is unfortunately built with 1.6
+     * This cannot be directly backport to 22u which is built with 1.6
      */
     private void setPermissions(File file, String permissions) {
         Set<PosixFilePermission> filePermissions =
@@ -550,7 +550,7 @@
         File iconTarget = getConfig_IconFile(rootDir, params);
         File icon = ICON_PNG.fetchFrom(params);
         if (!Arguments.CREATE_JRE_INSTALLER.fetchFrom(params)) {
-            //  prepare installer icon
+            // prepare installer icon
             if (icon == null || !icon.exists()) {
                 fetchResource(LinuxAppBundler.LINUX_BUNDLER_PREFIX
                         + iconTarget.getName(),
@@ -598,7 +598,7 @@
                 w.close();
             }
 
-            //prepare installer icon
+            // prepare installer icon
             iconTarget = getConfig_IconFile(rootDir, secondaryLauncher);
             icon = ICON_PNG.fetchFrom(secondaryLauncher);
             if (icon == null || !icon.exists()) {
@@ -619,7 +619,7 @@
                         DROP_IN_RESOURCES_ROOT.fetchFrom(params));
             }
 
-            //postinst copying of desktop icon
+            // postinst copying of desktop icon
             installScripts.append(
                     "        xdg-desktop-menu install --novendor ");
             installScripts.append(LINUX_INSTALL_DIR.fetchFrom(params));
@@ -672,11 +672,11 @@
                 }
 
                 String description = FA_DESCRIPTION.fetchFrom(assoc);
-                File faIcon = FA_ICON.fetchFrom(assoc); //TODO FA_ICON_PNG
+                File faIcon = FA_ICON.fetchFrom(assoc);
                 List<String> extensions = FA_EXTENSIONS.fetchFrom(assoc);
                 if (extensions == null) {
                     Log.info(I18N.getString(
-                            "message.creating-association-with-null-extension"));
+                          "message.creating-association-with-null-extension"));
                 }
 
                 List<String> mimes = FA_CONTENT_TYPE.fetchFrom(assoc);
@@ -752,7 +752,7 @@
                                 .append(dashMime)
                                 .append("\n");
 
-                        //x dg-icon-resource uninstall --context mimetypes
+                        // x dg-icon-resource uninstall --context mimetypes
                         // --size 64 awesomeapp_fa_1.png
                         // application-x.vnd-awesome
                         deregistrations.append(
@@ -800,7 +800,7 @@
             w.write(content);
             w.close();
         }
-        //prepare control file
+        // prepare control file
         Writer w = new BufferedWriter(new FileWriter(
                 getConfig_ControlFile(params)));
         String content = preprocessTextResource(
@@ -841,7 +841,8 @@
         w.close();
         setPermissions(getConfig_PrermFile(params), "rwxr-xr-x");
 
-        w = new BufferedWriter(new FileWriter(getConfig_PostinstallFile(params)));
+        w = new BufferedWriter(new FileWriter(
+                getConfig_PostinstallFile(params)));
         content = preprocessTextResource(
                 LinuxAppBundler.LINUX_BUNDLER_PREFIX
                         + getConfig_PostinstallFile(params).getName(),
@@ -964,7 +965,7 @@
 
         outFile.getParentFile().mkdirs();
 
-        //run dpkg
+        // run dpkg
         ProcessBuilder pb = new ProcessBuilder(
                 "fakeroot", TOOL_DPKG, "-b",
                 FULL_PACKAGE_NAME.fetchFrom(params),
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxRpmBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxRpmBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -144,7 +144,7 @@
                     if (params.containsKey(VENDOR.getID())) {
                         vendor = VENDOR.fetchFrom(params);
                     } else {
-                        vendor = "javapackager";
+                        vendor = "jpackager";
                     }
                     String appName = APP_FS_NAME.fetchFrom(params);
 
@@ -160,7 +160,8 @@
 
     private final static String DEFAULT_ICON = "javalogo_white_32.png";
     private final static String DEFAULT_SPEC_TEMPLATE = "template.spec";
-    private final static String DEFAULT_DESKTOP_FILE_TEMPLATE = "template.desktop";
+    private final static String DEFAULT_DESKTOP_FILE_TEMPLATE =
+            "template.desktop";
 
     public final static String TOOL_RPMBUILD = "rpmbuild";
     public final static double TOOL_RPMBUILD_MIN_VERSION = 4.0d;
@@ -202,8 +203,8 @@
                     I18N.getString("error.parameters-null"),
                     I18N.getString("error.parameters-null.advice"));
 
-            //run basic validation to ensure requirements are met
-            //we are not interested in return code, only possible exception
+            // run basic validation to ensure requirements are met
+            // we are not interested in return code, only possible exception
             APP_BUNDLER.fetchFrom(p).doValidate(p);
 
             // validate license file, if used, exists in the proper place
@@ -225,7 +226,7 @@
                 }
             }
 
-            //validate presense of required tools
+            // validate presense of required tools
             if (!testTool(TOOL_RPMBUILD, TOOL_RPMBUILD_MIN_VERSION)){
                 throw new ConfigException(
                     MessageFormat.format(
@@ -332,7 +333,7 @@
                             imageDir.getAbsolutePath()));
                 }
             } catch (IOException ex) {
-                //noinspection ReturnInsideFinallyBlock
+                // noinspection ReturnInsideFinallyBlock
                 Log.debug(ex.getMessage());
                 return null;
             }
@@ -409,7 +410,7 @@
         File rootDir =
             LinuxAppBundler.getRootDir(RPM_IMAGE_DIR.fetchFrom(params), params);
 
-        //prepare installer icon
+        // prepare installer icon
         File iconTarget = getConfig_IconFile(rootDir, params);
         File icon = LinuxAppBundler.ICON_PNG.fetchFrom(params);
         if (!Arguments.CREATE_JRE_INSTALLER.fetchFrom(params)) {
@@ -442,7 +443,7 @@
                     data.get("APPLICATION_FS_NAME"));
             secondaryLauncherData.put("DESKTOP_MIMES", "");
 
-            //prepare desktop shortcut
+            // prepare desktop shortcut
             Writer w = new BufferedWriter(new FileWriter(
                     getConfig_DesktopShortcutFile(rootDir, secondaryLauncher)));
             String content = preprocessTextResource(
@@ -456,7 +457,7 @@
             w.write(content);
             w.close();
 
-            //prepare installer icon
+            // prepare installer icon
             iconTarget = getConfig_IconFile(rootDir, secondaryLauncher);
             icon = LinuxAppBundler.ICON_PNG.fetchFrom(secondaryLauncher);
             if (icon == null || !icon.exists()) {
@@ -477,7 +478,7 @@
                         DROP_IN_RESOURCES_ROOT.fetchFrom(params));
             }
 
-            //post copying of desktop icon
+            // post copying of desktop icon
             installScripts.append("xdg-desktop-menu install --novendor ");
             installScripts.append(LINUX_INSTALL_DIR.fetchFrom(params));
             installScripts.append("/");
@@ -487,7 +488,7 @@
                     "APPLICATION_LAUNCHER_FILENAME"));
             installScripts.append(".desktop\n");
 
-            //preun cleanup of desktop icon
+            // preun cleanup of desktop icon
             removeScripts.append("xdg-desktop-menu uninstall --novendor ");
             removeScripts.append(LINUX_INSTALL_DIR.fetchFrom(params));
             removeScripts.append("/");
@@ -600,7 +601,8 @@
                         // --size 64 awesomeapp_fa_1.png
                         // application-x.vnd-awesome
                         registrations.append(
-                                "xdg-icon-resource install --context mimetypes --size ")
+                                "xdg-icon-resource install "
+                                + "--context mimetypes --size ")
                                 .append(size)
                                 .append(" ")
                                 .append(LINUX_INSTALL_DIR.fetchFrom(params))
@@ -616,7 +618,8 @@
                         // --size 64 awesomeapp_fa_1.png
                         // application-x.vnd-awesome
                         deregistrations.append(
-                                "xdg-icon-resource uninstall --context mimetypes --size ")
+                                "xdg-icon-resource uninstall "
+                                + "--context mimetypes --size ")
                                 .append(size)
                                 .append(" ")
                                 .append(LINUX_INSTALL_DIR.fetchFrom(params))
@@ -659,7 +662,7 @@
             w.close();
         }
 
-        //prepare spec file
+        // prepare spec file
         Writer w = new BufferedWriter(
                 new FileWriter(getConfig_SpecFile(params)));
         String content = preprocessTextResource(
@@ -688,7 +691,8 @@
                 APP_FS_NAME.fetchFrom(params));
         data.put("INSTALLATION_DIRECTORY", LINUX_INSTALL_DIR.fetchFrom(params));
         data.put("XDG_PREFIX", XDG_FILE_PREFIX.fetchFrom(params));
-        data.put("DEPLOY_BUNDLE_CATEGORY", CATEGORY.fetchFrom(params)); //TODO rpm categories
+        data.put("DEPLOY_BUNDLE_CATEGORY", CATEGORY.fetchFrom(params));
+        // TODO rpm categories
         data.put("APPLICATION_DESCRIPTION", DESCRIPTION.fetchFrom(params));
         data.put("APPLICATION_SUMMARY", TITLE.fetchFrom(params));
         data.put("APPLICATION_LICENSE_TYPE", LICENSE_TYPE.fetchFrom(params));
@@ -732,13 +736,11 @@
         ProcessBuilder pb = new ProcessBuilder(
                 TOOL_RPMBUILD,
                 "-bb", getConfig_SpecFile(params).getAbsolutePath(),
-//                "--define", "%__jar_repack %{nil}",
-//debug: improves build time (but will require unpack to install?)
                 "--define", "%_sourcedir "
                         + RPM_IMAGE_DIR.fetchFrom(params).getAbsolutePath(),
-                //save result to output dir
+                // save result to output dir
                 "--define", "%_rpmdir " + outdir.getAbsolutePath(),
-                //do not use other system directories to build as current user
+                // do not use other system directories to build as current user
                 "--define", "%_topdir " + broot.getAbsolutePath()
         );
         pb = pb.directory(RPM_IMAGE_DIR.fetchFrom(params));
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,28 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
 param.icon-png.name=.png Icon
 param.icon-png.description=Icon for the application, in PNG format.
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.icon-png.name=.png\u30A2\u30A4\u30B3\u30F3
 param.icon-png.description=PNG\u5F62\u5F0F\u3067\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u3002
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.icon-png.name=.png \u56FE\u6807
 param.icon-png.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u56FE\u6807, \u91C7\u7528 PNG \u683C\u5F0F\u3002
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,15 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Linux Application Image
 bundler.description=A Directory based image of a linux Application with an optionally co-bundled JRE.  Used as a base for the Installer bundlers.
 
-param.raw-executable-url.name=Launcher URL
-param.raw-executable-url.description=Override the packager default launcher with a custom launcher.
-
 param.icon-png.name=.png Icon
 param.icon-png.description=Icon for the application, in PNG format.
 
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle.  The default value is the current JRE running the bundler.  A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
 param.linux-install-dir.name=Linux Installation Directory
 param.linux-install-dir.description=Installation directory of the application on Linux.
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,15 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Linux\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8
 bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BLinux\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30E9\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
 
-param.raw-executable-url.name=\u30E9\u30F3\u30C1\u30E3URL
-param.raw-executable-url.description=\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E9\u30F3\u30C1\u30E3\u3092\u30AB\u30B9\u30BF\u30E0\u30FB\u30E9\u30F3\u30C1\u30E3\u3067\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u3002
-
 param.icon-png.name=.png\u30A2\u30A4\u30B3\u30F3
 param.icon-png.description=PNG\u5F62\u5F0F\u3067\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u3002
 
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
 error.parameters-null=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30DE\u30C3\u30D7\u304Cnull\u3067\u3059\u3002
 error.parameters-null.advice=\u975Enull\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30DE\u30C3\u30D7\u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002
 error.no-linux-resources=Java\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u306FLinux\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,15 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Linux \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF
 bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 linux \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840\u3002
 
-param.raw-executable-url.name=\u542F\u52A8\u7A0B\u5E8F URL
-param.raw-executable-url.description=\u4F7F\u7528\u5B9A\u5236\u542F\u52A8\u7A0B\u5E8F\u8986\u76D6\u6253\u5305\u7A0B\u5E8F\u9ED8\u8BA4\u542F\u52A8\u7A0B\u5E8F\u3002
-
 param.icon-png.name=.png \u56FE\u6807
 param.icon-png.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u56FE\u6807, \u91C7\u7528 PNG \u683C\u5F0F\u3002
 
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
 error.parameters-null=\u53C2\u6570\u6620\u5C04\u4E3A\u7A7A\u503C\u3002
 error.parameters-null.advice=\u8BF7\u4F20\u5165\u975E\u7A7A\u53C2\u6570\u6620\u5C04\u3002
 error.no-linux-resources=Java \u6253\u5305\u7A0B\u5E8F\u4E0D\u652F\u6301 Linux\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=DEB Installer
 bundler.description=Linux Debian Bundle.
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=DEB\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9
 bundler.description=Linux Debian\u30D0\u30F3\u30C9\u30EB\u3002
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=DEB \u5B89\u88C5\u7A0B\u5E8F
 bundler.description=Linux Debian \u5305\u3002
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=RPM Bundle
 bundler.description=Redhat Package Manager (RPM) bundler.
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=RPM\u30D0\u30F3\u30C9\u30EB
 bundler.description=RedHat Package Manager (RPM)\u306E\u30D0\u30F3\u30C9\u30E9\u3002
 
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=RPM \u5305
 bundler.description=Redhat Package Manager (RPM) \u6253\u5305\u7A0B\u5E8F\u3002
 
--- a/src/jdk.packager/linux/native/launcher/launcher.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/native/launcher/launcher.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -70,12 +70,14 @@
         start_launcher start = (start_launcher)dlsym(library, "start_launcher");
         stop_launcher stop = (stop_launcher)dlsym(library, "stop_launcher");
 
-        if (start(argc, argv) == true) {
-            result = 0;
-
-            if (stop != NULL) {
+        if (start != NULL && stop != NULL) {
+            if (start(argc, argv) == true) {
+                result = 0;
                 stop();
             }
+        } else {
+            fprintf(stderr,
+              "cannot find start_launcher and stop_launcher in libpackager.so");
         }
 
         dlclose(library);
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/builders/mac/MacAppImageBuilder.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/builders/mac/MacAppImageBuilder.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,17 +25,14 @@
 
 package jdk.packager.internal.builders.mac;
 
-
 import jdk.packager.internal.BundlerParamInfo;
 import jdk.packager.internal.IOUtils;
 import jdk.packager.internal.Log;
 import jdk.packager.internal.Platform;
 import jdk.packager.internal.RelativeFileSet;
 import jdk.packager.internal.StandardBundlerParam;
-
 import jdk.packager.internal.Arguments;
 import jdk.packager.internal.resources.mac.MacResources;
-
 import jdk.packager.internal.builders.AbstractAppImageBuilder;
 
 import java.io.BufferedWriter;
@@ -71,7 +68,6 @@
 import static jdk.packager.internal.mac.MacBaseInstallerBundler.*;
 import static jdk.packager.internal.mac.MacAppBundler.*;
 
-
 public class MacAppImageBuilder extends AbstractAppImageBuilder {
 
     private static final ResourceBundle I18N =
@@ -100,54 +96,6 @@
 
     private static List<String> keyChains;
 
-    private static Map<String, String> getMacCategories() {
-        Map<String, String> map = new HashMap<>();
-        map.put("Business", "public.app-category.business");
-        map.put("Developer Tools", "public.app-category.developer-tools");
-        map.put("Education", "public.app-category.education");
-        map.put("Entertainment", "public.app-category.entertainment");
-        map.put("Finance", "public.app-category.finance");
-        map.put("Games", "public.app-category.games");
-        map.put("Graphics & Design", "public.app-category.graphics-design");
-        map.put("Healthcare & Fitness",
-                "public.app-category.healthcare-fitness");
-        map.put("Lifestyle", "public.app-category.lifestyle");
-        map.put("Medical", "public.app-category.medical");
-        map.put("Music", "public.app-category.music");
-        map.put("News", "public.app-category.news");
-        map.put("Photography", "public.app-category.photography");
-        map.put("Productivity", "public.app-category.productivity");
-        map.put("Reference", "public.app-category.reference");
-        map.put("Social Networking", "public.app-category.social-networking");
-        map.put("Sports", "public.app-category.sports");
-        map.put("Travel", "public.app-category.travel");
-        map.put("Utilities", "public.app-category.utilities");
-        map.put("Video", "public.app-category.video");
-        map.put("Weather", "public.app-category.weather");
-
-        map.put("Action Games", "public.app-category.action-games");
-        map.put("Adventure Games", "public.app-category.adventure-games");
-        map.put("Arcade Games", "public.app-category.arcade-games");
-        map.put("Board Games", "public.app-category.board-games");
-        map.put("Card Games", "public.app-category.card-games");
-        map.put("Casino Games", "public.app-category.casino-games");
-        map.put("Dice Games", "public.app-category.dice-games");
-        map.put("Educational Games", "public.app-category.educational-games");
-        map.put("Family Games", "public.app-category.family-games");
-        map.put("Kids Games", "public.app-category.kids-games");
-        map.put("Music Games", "public.app-category.music-games");
-        map.put("Puzzle Games", "public.app-category.puzzle-games");
-        map.put("Racing Games", "public.app-category.racing-games");
-        map.put("Role Playing Games", "public.app-category.role-playing-games");
-        map.put("Simulation Games", "public.app-category.simulation-games");
-        map.put("Sports Games", "public.app-category.sports-games");
-        map.put("Strategy Games", "public.app-category.strategy-games");
-        map.put("Trivia Games", "public.app-category.trivia-games");
-        map.put("Word Games", "public.app-category.word-games");
-
-        return map;
-    }
-
     public static final BundlerParamInfo<Boolean>
             MAC_CONFIGURE_LAUNCHER_IN_PLIST = new StandardBundlerParam<>(
                     I18N.getString("param.configure-launcher-in-plist"),
@@ -243,7 +191,7 @@
             (s, p) -> new File(s));
     
     public static final StandardBundlerParam<Boolean> SIGN_BUNDLE  =
-    new StandardBundlerParam<>(
+            new StandardBundlerParam<>(
             I18N.getString("param.sign-bundle.name"),
             I18N.getString("param.sign-bundle.description"),
             Arguments.CLIOptions.MAC_SIGN.getId(),
@@ -322,11 +270,6 @@
         }
     }
 
-    @Override
-    protected String getCacheLocation(Map<String, ? super Object> params) {
-        return "$CACHEDIR/";
-    }
-
     public static boolean validCFBundleVersion(String v) {
         // CFBundleVersion (String - iOS, OS X) specifies the build version
         // number of the bundle, which identifies an iteration (released or
@@ -618,21 +561,16 @@
             newline = "\n";
         }
 
-        String preloader = PRELOADER_CLASS.fetchFrom(params);
-        if (preloader != null) {
-            sb.append(newline)
-                    .append("    <string>-Djavafx.preloader=")
-                    .append(preloader)
-                    .append("</string>");
-        }
-
         data.put("DEPLOY_JVM_OPTIONS", sb.toString());
 
         sb = new StringBuilder();
         List<String> args = ARGUMENTS.fetchFrom(params);
-        newline = ""; //So we don't add unneccessary extra line after last append
+        newline = "";
+        // So we don't add unneccessary extra line after last append
+
         for (String o : args) {
-            sb.append(newline).append("    <string>").append(o).append("</string>");
+            sb.append(newline).append("    <string>").append(o).append(
+                    "</string>");
             newline = "\n";
         }
         data.put("DEPLOY_ARGUMENTS", sb.toString());
@@ -663,10 +601,9 @@
             }
 
             List<String> mimeTypes = FA_CONTENT_TYPE.fetchFrom(fileAssociation);
-            String itemContentType = MAC_CF_BUNDLE_IDENTIFIER.fetchFrom(params) +
-                    "." + ((extensions == null || extensions.isEmpty())
-                    ? "mime"
-                    : extensions.get(0));
+            String itemContentType = MAC_CF_BUNDLE_IDENTIFIER.fetchFrom(params)
+                    + "." + ((extensions == null || extensions.isEmpty())
+                    ? "mime" : extensions.get(0));
             String description = FA_DESCRIPTION.fetchFrom(fileAssociation);
             File icon = FA_ICON.fetchFrom(fileAssociation); //TODO FA_ICON_ICNS
 
@@ -697,7 +634,6 @@
                     .append("\n");
 
             if (icon != null && icon.exists()) {
-                //?
                 bundleDocumentTypes
                         .append("      <key>CFBundleTypeIconFile</key>\n")
                         .append("      <string>")
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -37,7 +37,6 @@
 import jdk.packager.internal.UnsupportedPlatformException;
 import jdk.packager.internal.builders.mac.MacAppImageBuilder;
 import jdk.packager.internal.resources.mac.MacResources;
-
 import jdk.packager.internal.JLinkBundlerHelper;
 
 import java.io.File;
@@ -309,7 +308,7 @@
         }
     }
 
-    //to be used by chained bundlers, e.g. by EXE bundler to avoid
+    // to be used by chained bundlers, e.g. by EXE bundler to avoid
     // skipping validation if p.type does not include "image"
     public boolean doValidate(Map<String, ? super Object> p)
             throws UnsupportedPlatformException, ConfigException {
@@ -516,26 +515,4 @@
         return Platform.getPlatform() == Platform.MAC;
     }
 
-//    private void createLauncherForEntryPoint(Map<String, ? super Object> p,
-//            File rootDirectory) throws IOException {
-//        prepareConfigFiles(p);
-//
-//        if (LAUNCHER_CFG_FORMAT.fetchFrom(p).equals(CFG_FORMAT_PROPERTIES)) {
-//            writeCfgFile(p, rootDirectory);
-//        } else {
-//            writeCfgFile(p, new File(rootDirectory, getLauncherCfgName(p)),
-//                    "$APPDIR/PlugIns/Java.runtime");
-//        }
-//
-//        // Copy executable root folder
-//        File executableFile = new File(rootDirectory,
-//                "Contents/MacOS/" + getLauncherName(p));
-//        IOUtils.copyFromURL(
-//                RAW_EXECUTABLE_URL.fetchFrom(p),
-//                executableFile);
-//        executableFile.setExecutable(true, false);
-//
-//    }
-//
-
 }
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppStoreBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppStoreBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -161,9 +161,6 @@
         // icns needs @2 versions, so load in the @2 default
         p.put(DEFAULT_ICNS_ICON.getID(), TEMPLATE_BUNDLE_ICON_HIDPI);
 
-        // next we need to change the jdk/jre stripping to strip gstreamer
-//        p.put(MAC_RULES.getID(), createMacAppStoreRuntimeRules(p));
-
         // now we create the app
         File appImageDir = APP_IMAGE_BUILD_ROOT.fetchFrom(p);
         try {
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacBaseInstallerBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacBaseInstallerBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -59,7 +59,7 @@
             ResourceBundle.getBundle(
                 "jdk.packager.internal.resources.mac.MacBaseInstallerBundler");
 
-    //This could be generalized more to be for any type of Image Bundler
+    // This could be generalized more to be for any type of Image Bundler
     public static final BundlerParamInfo<MacAppBundler> APP_BUNDLER =
             new StandardBundlerParam<>(
             I18N.getString("param.app-bundler.name"),
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacCertificate.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacCertificate.java	Wed Oct 17 13:50:11 2018 -0400
@@ -26,6 +26,8 @@
 package jdk.packager.internal.mac;
 
 import jdk.packager.internal.IOUtils;
+import jdk.packager.internal.Log;
+
 import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
@@ -119,10 +121,8 @@
             DateFormat df = new SimpleDateFormat(
                     "MMM dd kk:mm:ss yyyy z", Locale.ENGLISH);
             result = df.parse(output);
-        }
-        catch (IOException ioe) {
-        }
-        catch (ParseException ex) {
+        } catch (IOException | ParseException ex) {
+            Log.debug(ex);
         }
 
         return result;
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacDmgBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacDmgBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -28,15 +28,15 @@
 import jdk.packager.internal.*;
 import jdk.packager.internal.IOUtils;
 import jdk.packager.internal.resources.mac.MacResources;
+import jdk.packager.internal.Arguments;
 
 import java.io.*;
+import java.nio.file.Files;
 import java.text.MessageFormat;
 import java.util.*;
-import jdk.packager.internal.Arguments;
 
 import static jdk.packager.internal.StandardBundlerParam.*;
 
-
 public class MacDmgBundler extends MacBaseInstallerBundler {
 
     private static final ResourceBundle I18N =
@@ -63,7 +63,6 @@
         baseResourceLoader = MacResources.class;
     }
 
-    //@Override
     public File bundle(Map<String, ? super Object> params, File outdir) {
         Log.info(MessageFormat.format(I18N.getString("message.building-dmg"),
                 APP_NAME.fetchFrom(params)));
@@ -216,12 +215,12 @@
 
             if (licFile == null) {
                 // this is NPE protection,
-                // validate should have caught it's absence
-                // so we don't complain or throw an error
+                // validate should have already caught it's absence
+                Log.error("Licence file is null");
                 return;
             }
 
-            byte[] licenseContentOriginal = IOUtils.readFully(licFile);
+            byte[] licenseContentOriginal = Files.readAllBytes(licFile.toPath());
             String licenseInBase64 =
                     Base64.getEncoder().encodeToString(licenseContentOriginal);
 
@@ -287,14 +286,14 @@
         // In theory we need to extract name from results of attach command
         // However, this will be a problem for customization as name will
         // possibly change every time and developer will not be able to fix it
-        // As we are using tmp dir chance we get "different" namr are low =>
+        // As we are using tmp dir chance we get "different" name are low =>
         // Use fixed name we used for bundle
         prepareDMGSetupScript(APP_NAME.fetchFrom(params), params);
 
         return true;
     }
 
-    //name of post-image script
+    // name of post-image script
     private File getConfig_Script(Map<String, ? super Object> params) {
         return new File(CONFIG_ROOT.fetchFrom(params),
                 APP_NAME.fetchFrom(params) + "-post-image.sh");
@@ -314,7 +313,7 @@
             }
         }
 
-        //generic find attempt
+        // generic find attempt
         try {
             ProcessBuilder pb = new ProcessBuilder("xcrun", "-find", "SetFile");
             Process p = pb.start();
@@ -364,7 +363,7 @@
 
         String hdiUtilVerbosityFlag = Log.isDebug() ? "-verbose" : "-quiet";
 
-        //create temp image
+        // create temp image
         ProcessBuilder pb = new ProcessBuilder(
                 hdiutil,
                 "create",
@@ -376,7 +375,7 @@
                 "-format", "UDRW");
         IOUtils.exec(pb, ECHO_MODE.fetchFrom(p));
 
-        //mount temp image
+        // mount temp image
         pb = new ProcessBuilder(
                 hdiutil,
                 "attach",
@@ -388,7 +387,7 @@
         File mountedRoot =
                 new File(imagesRoot.getAbsolutePath(), APP_NAME.fetchFrom(p));
 
-        //volume icon
+        // volume icon
         File volumeIconFile = new File(mountedRoot, ".VolumeIcon.icns");
         IOUtils.copyFile(getConfig_VolumeIcon(p),
                 volumeIconFile);
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacPkgBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacPkgBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -161,7 +161,6 @@
         baseResourceLoader = MacResources.class;
     }
 
-    // @Override
     public File bundle(Map<String, ? super Object> params, File outdir) {
         Log.info(MessageFormat.format(I18N.getString("message.building-pkg"),
                 APP_NAME.fetchFrom(params)));
@@ -374,10 +373,10 @@
             // this is NPE protection, validate should have caught it's absence
             // so we don't complain or throw an error
             if (licFile != null) {
-                out.println("<license" +
-                        " file=\"" + licFile.getAbsolutePath() + "\"" +
-                        " mime-type=\"text/rtf\"" +
-                        "/>");
+                out.println("<license"
+                        + " file=\"" + licFile.getAbsolutePath() + "\""
+                        + " mime-type=\"text/rtf\""
+                        + "/>");
             }
         }
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac Application Image
 bundler.description=A Directory based image of a mac Application with an optionally co-bundled JRE.  Used as a base for the Installer bundlers
 
@@ -34,9 +60,6 @@
 param.default-icon-icns=Default Icon
 param.default-icon-icns.description=The Default Icon for when a user does not specify an icns file.
 
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle.  The default value is the current JRE running the bundler.  A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
 param.sign-bundle.name=Sign Bundle
 param.sign-bundle.description=Request that the bundle be signed.
 
@@ -74,4 +97,4 @@
 message.using-custom-resource-from-classpath=Using custom package resource {0} (loaded from {1})
 message.using-default-resource-from-classpath=Using default package resource {0} (add {1} to the class path to customize)
 message.ignoring.symlink=Warning: codesign is skipping the symlink {0}
-message.keychain.error=Error: unable to get keychain list.
\ No newline at end of file
+message.keychain.error=Error: unable to get keychain list.
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8
 bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BMac\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
 
@@ -34,9 +60,6 @@
 param.default-icon-icns=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3
 param.default-icon-icns.description=\u30E6\u30FC\u30B6\u30FC\u304C\u30A2\u30A4\u30B3\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3002
 
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
 param.images-root.name=
 param.images-root.description=
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF
 bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840
 
@@ -34,9 +60,6 @@
 param.default-icon-icns=\u9ED8\u8BA4\u56FE\u6807
 param.default-icon-icns.description=\u7528\u6237\u672A\u6307\u5B9A icns \u6587\u4EF6\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u56FE\u6807\u3002
 
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
 param.images-root.name=
 param.images-root.description=
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac Application Image
 bundler.description=A Directory based image of a mac Application with an optionally co-bundled JRE.  Used as a base for the Installer bundlers
 
@@ -34,9 +60,6 @@
 param.default-icon-icns=Default Icon
 param.default-icon-icns.description=The Default Icon for when a user does not specify an icns file.
 
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle.  The default value is the current JRE running the bundler.  A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
 error.cannot-create-output-dir=Output directory {0} cannot be created.
 error.cannot-write-to-output-dir=Output directory {0} is not writable.
 error.invalid-cfbundle-version=Invalid CFBundleVersion - ''{0}''
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -34,9 +34,6 @@
 param.default-icon-icns=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3
 param.default-icon-icns.description=\u30E6\u30FC\u30B6\u30FC\u304C\u30A2\u30A4\u30B3\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3002
 
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
 error.cannot-create-output-dir=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002
 error.cannot-write-to-output-dir=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u66F8\u8FBC\u307F\u4E0D\u53EF\u3067\u3059\u3002
 error.invalid-cfbundle-version=CFBundleVersion - ''{0}''\u304C\u7121\u52B9\u3067\u3059
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF
 bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840
 
@@ -34,9 +60,6 @@
 param.default-icon-icns=\u9ED8\u8BA4\u56FE\u6807
 param.default-icon-icns.description=\u7528\u6237\u672A\u6307\u5B9A icns \u6587\u4EF6\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u56FE\u6807\u3002
 
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
 error.cannot-create-output-dir=\u65E0\u6CD5\u521B\u5EFA\u8F93\u51FA\u76EE\u5F55 {0}\u3002
 error.cannot-write-to-output-dir=\u8F93\u51FA\u76EE\u5F55 {0} \u4E0D\u53EF\u5199\u3002
 error.invalid-cfbundle-version=\u65E0\u6548\u7684 CFBundleVersion - ''{0}''
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac App Store Ready Bundler
 bundler.description=Creates a binary bundle ready for deployment into the Mac App Store."
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac App Store\u306E\u6E96\u5099\u5B8C\u4E86\u30D0\u30F3\u30C9\u30E9
 bundler.description=Mac App Store\u3078\u306E\u30C7\u30D7\u30ED\u30A4\u30E1\u30F3\u30C8\u6E96\u5099\u5B8C\u4E86\u306E\u30D0\u30A4\u30CA\u30EA\u30FB\u30D0\u30F3\u30C9\u30EB\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002"
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=\u652F\u6301 Mac App Store \u7684\u6253\u5305\u7A0B\u5E8F
 bundler.description=\u521B\u5EFA\u53EF\u90E8\u7F72\u5230 Mac App Store \u4E2D\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6\u5305\u3002"
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac App Store
 bundler.description=Creates a binary bundle ready for deployment into the Mac App Store.
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac App Store
 bundler.description=Mac App Store\u3078\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u6e96\u5099\u5b8c\u4e86\u306e\u30d0\u30a4\u30ca\u30ea\u30fb\u30d0\u30f3\u30c9\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Mac App Store
 bundler.description=\u521b\u5efa\u53ef\u90e8\u7f72\u5230 Mac App Store \u4e2d\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u5305\u3002
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=DMG Installer
 bundler.description=Mac DMG Installer Bundle
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=DMG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9
 bundler.description=Mac DMG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=DMG \u5B89\u88C5\u7A0B\u5E8F
 bundler.description=Mac DMG \u5B89\u88C5\u7A0B\u5E8F\u5305
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=PKG Installer
 bundler.description=Mac PKG Installer Bundle.
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=PKG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9
 bundler.description=Mac PKG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB\u3002
 
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=PKG \u5B89\u88C5\u7A0B\u5E8F
 bundler.description=Mac PKG \u5B89\u88C5\u7A0B\u5E8F\u5305\u3002
 
--- a/src/jdk.packager/macosx/native/library/MacPlatform.mm	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/native/library/MacPlatform.mm	Wed Oct 17 13:50:11 2018 -0400
@@ -47,18 +47,15 @@
 #import <Cocoa/Cocoa.h>
 #endif //__OBJC__
 
-#define MAC_PACKAGER_TMP_DIR "/Library/Application Support/Oracle/Java/Packager/tmp"
-
-//--------------------------------------------------------------------------------------------------
+#define MAC_PACKAGER_TMP_DIR \
+        "/Library/Application Support/Oracle/Java/Packager/tmp"
 
 NSString* StringToNSString(TString Value) {
     NSString* result = [NSString stringWithCString:Value.c_str()
-                                          encoding:[NSString defaultCStringEncoding]];
+            encoding:[NSString defaultCStringEncoding]];
     return result;
 }
 
-//--------------------------------------------------------------------------------------------------
-
 MacPlatform::MacPlatform(void) : Platform(), GenericPlatform(), PosixPlatform() {
 }
 
@@ -91,30 +88,38 @@
         printf("Unable to reactivate another instance, PID is undefined");
         return;
     }
-    NSRunningApplication* app = [NSRunningApplication runningApplicationWithProcessIdentifier: singleInstanceProcessId];
+    NSRunningApplication* app =
+            [NSRunningApplication runningApplicationWithProcessIdentifier:
+            singleInstanceProcessId];
     if (app != nil) {
         [app activateWithOptions: NSApplicationActivateIgnoringOtherApps];
     } else {
-        printf("Unable to reactivate another instance PID: %d", singleInstanceProcessId);
+        printf("Unable to reactivate another instance PID: %d",
+                singleInstanceProcessId);
     }
 }
 
-TCHAR* MacPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) {
+TCHAR* MacPlatform::ConvertStringToFileSystemString(TCHAR* Source,
+        bool &release) {
     TCHAR* result = NULL;
     release = false;
-    CFStringRef StringRef = CFStringCreateWithCString(kCFAllocatorDefault, Source, kCFStringEncodingUTF8);
+    CFStringRef StringRef = CFStringCreateWithCString(kCFAllocatorDefault,
+            Source, kCFStringEncodingUTF8);
 
     if (StringRef != NULL) {
         @try {
-            CFIndex length = CFStringGetMaximumSizeOfFileSystemRepresentation(StringRef);
+            CFIndex length =
+                    CFStringGetMaximumSizeOfFileSystemRepresentation(StringRef);
             result = new char[length + 1];
-
-            if (CFStringGetFileSystemRepresentation(StringRef, result, length)) {
-                release = true;
-            }
-            else {
-                delete[] result;
-                result = NULL;
+            if (result != NULL) {
+                if (CFStringGetFileSystemRepresentation(StringRef,
+                        result, length)) {
+                    release = true;
+                }
+                else {
+                    delete[] result;
+                    result = NULL;
+                }
             }
         }
         @finally {
@@ -125,26 +130,31 @@
     return result;
 }
 
-TCHAR* MacPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) {
+TCHAR* MacPlatform::ConvertFileSystemStringToString(TCHAR* Source,
+        bool &release) {
     TCHAR* result = NULL;
     release = false;
-    CFStringRef StringRef = CFStringCreateWithFileSystemRepresentation(kCFAllocatorDefault, Source);
+    CFStringRef StringRef = CFStringCreateWithFileSystemRepresentation(
+            kCFAllocatorDefault, Source);
 
     if (StringRef != NULL) {
         @try {
             CFIndex length = CFStringGetLength(StringRef);
 
             if (length > 0) {
-                CFIndex maxSize = CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8);
+                CFIndex maxSize = CFStringGetMaximumSizeForEncoding(
+                        length, kCFStringEncodingUTF8);
 
                 result = new char[maxSize + 1];
-
-                if (CFStringGetCString(StringRef, result, maxSize, kCFStringEncodingUTF8) == true) {
-                    release = true;
-                }
-                else {
-                    delete[] result;
-                    result = NULL;
+                if (result != NULL) {
+                    if (CFStringGetCString(StringRef, result, maxSize,
+                            kCFStringEncodingUTF8) == true) {
+                        release = true;
+                    }
+                    else {
+                        delete[] result;
+                        result = NULL;
+                    }
                 }
             }
         }
@@ -163,14 +173,16 @@
 TString MacPlatform::GetPackageRootDirectory() {
     NSBundle *mainBundle = [NSBundle mainBundle];
     NSString *mainBundlePath = [mainBundle bundlePath];
-    NSString *contentsPath = [mainBundlePath stringByAppendingString:@"/Contents"];
+    NSString *contentsPath =
+            [mainBundlePath stringByAppendingString:@"/Contents"];
     TString result = [contentsPath UTF8String];
     return result;
 }
 
 TString MacPlatform::GetAppDataDirectory() {
     TString result;
-    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(
+           NSApplicationSupportDirectory, NSUserDomainMask, YES);
     NSString *applicationSupportDirectory = [paths firstObject];
     result = [applicationSupportDirectory UTF8String];
     return result;
@@ -180,11 +192,11 @@
     TString result;
 
     // first try lib/, then lib/jli
-    result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+    result = FilePath::IncludeTrailingSeparator(RuntimePath) +
              _T("Contents/Home/lib/libjli.dylib");
 
     if (FilePath::FileExists(result) == false) {
-        result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+        result = FilePath::IncludeTrailingSeparator(RuntimePath) +
                  _T("Contents/Home/lib/jli/libjli.dylib");
 
         if (FilePath::FileExists(result) == false) {
@@ -203,8 +215,10 @@
     return result;
 }
 
-void AppendPListArrayToIniFile(NSDictionary *infoDictionary, IniFile *result, TString Section) {
-    NSString *sectionKey = [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()];
+void AppendPListArrayToIniFile(NSDictionary *infoDictionary,
+        IniFile *result, TString Section) {
+    NSString *sectionKey =
+        [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()];
     NSDictionary *array = [infoDictionary objectForKey:sectionKey];
 
     for (id option in array) {
@@ -221,11 +235,13 @@
     }
 }
 
-void AppendPListDictionaryToIniFile(NSDictionary *infoDictionary, IniFile *result, TString Section, bool FollowSection = true) {
+void AppendPListDictionaryToIniFile(NSDictionary *infoDictionary,
+        IniFile *result, TString Section, bool FollowSection = true) {
     NSDictionary *dictionary = NULL;
 
     if (FollowSection == true) {
-        NSString *sectionKey = [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()];
+        NSString *sectionKey = [NSString stringWithUTF8String:PlatformString(
+                Section).toMultibyte()];
         dictionary = [infoDictionary objectForKey:sectionKey];
     }
     else {
@@ -235,7 +251,8 @@
     for (id key in dictionary) {
         id option = [dictionary valueForKey:key];
 
-        if ([key isKindOfClass:[NSString class]] && [option isKindOfClass:[NSString class]]) {
+        if ([key isKindOfClass:[NSString class]] &&
+                    [option isKindOfClass:[NSString class]]) {
             TString name = [key UTF8String];
             TString value = [option UTF8String];
             result->Append(Section, name, value);
@@ -243,14 +260,15 @@
     }
 }
 
-// Convert parts of the info.plist to the INI format the rest of the packager uses unless
-// a packager config file exists.
+// Convert parts of the info.plist to the INI format the rest of the packager
+// uses unless a packager config file exists.
 ISectionalPropertyContainer* MacPlatform::GetConfigFile(TString FileName) {
     IniFile* result = new IniFile();
 
     if (UsePListForConfigFile() == false) {
         if (result->LoadFromFile(FileName) == false) {
-            // New property file format was not found, attempt to load old property file format.
+            // New property file format was not found,
+            // attempt to load old property file format.
             Helpers::LoadOldConfigFile(FileName, result);
         }
     }
@@ -260,20 +278,26 @@
         std::map<TString, TString> keys = GetKeys();
 
         // Packager options.
-        AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPLICATION], false);
+        AppendPListDictionaryToIniFile(infoDictionary, result,
+                keys[CONFIG_SECTION_APPLICATION], false);
 
         // jvmargs
-        AppendPListArrayToIniFile(infoDictionary, result, keys[CONFIG_SECTION_JVMOPTIONS]);
+        AppendPListArrayToIniFile(infoDictionary, result,
+                keys[CONFIG_SECTION_JVMOPTIONS]);
 
         // jvmuserargs
-        AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_JVMUSEROPTIONS]);
+        AppendPListDictionaryToIniFile(infoDictionary, result,
+                keys[CONFIG_SECTION_JVMUSEROPTIONS]);
 
         // Generate AppCDS Cache
-        AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPCDSJVMOPTIONS]);
-        AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS]);
+        AppendPListDictionaryToIniFile(infoDictionary, result,
+                keys[CONFIG_SECTION_APPCDSJVMOPTIONS]);
+        AppendPListDictionaryToIniFile(infoDictionary, result,
+                keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS]);
 
         // args
-        AppendPListArrayToIniFile(infoDictionary, result, keys[CONFIG_SECTION_ARGOPTIONS]);
+        AppendPListArrayToIniFile(infoDictionary, result,
+                keys[CONFIG_SECTION_ARGOPTIONS]);
     }
 
     return result;
@@ -281,7 +305,8 @@
 
 TString GetModuleFileNameOSX() {
     Dl_info module_info;
-    if (dladdr(reinterpret_cast<void*>(GetModuleFileNameOSX), &module_info) == 0) {
+    if (dladdr(reinterpret_cast<void*>(GetModuleFileNameOSX),
+            &module_info) == 0) {
         // Failed to find the symbol we asked for.
         return std::string();
     }
@@ -311,7 +336,10 @@
 
 TPlatformNumber MacPlatform::GetMemorySize() {
     unsigned long long memory = [[NSProcessInfo processInfo] physicalMemory];
-    TPlatformNumber result = memory / 1048576; // Convert from bytes to megabytes.
+
+    // Convert from bytes to megabytes.
+    TPlatformNumber result = memory / 1048576;
+
     return result;
 }
 
@@ -322,28 +350,50 @@
         return GenericPlatform::GetKeys();
     }
     else {
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION,            _T("app.version")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY,        _T("JVMMainJarName")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY,     _T("JVMMainModuleName")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINCLASSNAME_KEY,  _T("JVMMainClassName")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_CLASSPATH_KEY,      _T("JVMAppClasspath")));
-        keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY,              _T("CFBundleName")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_ID_KEY,         _T("JVMPreferencesID")));
-        keys.insert(std::map<TString, TString>::value_type(JVM_RUNTIME_KEY,           _T("JVMRuntime")));
-        keys.insert(std::map<TString, TString>::value_type(PACKAGER_APP_DATA_DIR,     _T("CFBundleIdentifier")));
+        keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION,
+                _T("app.version")));
+        keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY,
+                _T("JVMMainJarName")));
+        keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY,
+                _T("JVMMainModuleName")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_MAINCLASSNAME_KEY, _T("JVMMainClassName")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_CLASSPATH_KEY, _T("JVMAppClasspath")));
+        keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY,
+                _T("CFBundleName")));
+        keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_ID_KEY,
+                _T("JVMPreferencesID")));
+        keys.insert(std::map<TString, TString>::value_type(JVM_RUNTIME_KEY,
+                _T("JVMRuntime")));
+        keys.insert(std::map<TString, TString>::value_type(PACKAGER_APP_DATA_DIR,
+                _T("CFBundleIdentifier")));
 
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY,         _T("app.splash")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY,         _T("app.memory")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG,          _T("app.debug")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_APPLICATION_INSTANCE,   _T("app.application.instance")));
+        keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY,
+                _T("app.splash")));
+        keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY,
+                _T("app.memory")));
+        keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG,
+                _T("app.debug")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_APPLICATION_INSTANCE, _T("app.application.instance")));
 
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPLICATION,    _T("Application")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMOPTIONS,     _T("JVMOptions")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS, _T("JVMUserOverrideOptions")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS, _T("AppCDSGenerateCacheJVMOptions")));
-        keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_ARGOPTIONS,     _T("ArgOptions")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_SECTION_APPLICATION, _T("Application")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_SECTION_JVMOPTIONS, _T("JVMOptions")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS,
+                _T("JVMUserOverrideOptions")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS,
+                _T("AppCDSGenerateCacheJVMOptions")));
+        keys.insert(std::map<TString, TString>::value_type(
+                CONFIG_SECTION_ARGOPTIONS, _T("ArgOptions")));
     }
 
     return keys;
@@ -375,20 +425,20 @@
 }
 #endif //DEBUG
 
-//--------------------------------------------------------------------------------------------------
-
 class UserDefaults {
 private:
     OrderedMap<TString, TString> FData;
     TString FDomainName;
 
-    bool ReadDictionary(NSDictionary *Items, OrderedMap<TString, TString> &Data) {
+    bool ReadDictionary(NSDictionary *Items, OrderedMap<TString,
+           TString> &Data) {
         bool result = false;
 
         for (id key in Items) {
             id option = [Items valueForKey:key];
 
-            if ([key isKindOfClass:[NSString class]] && [option isKindOfClass:[NSString class]]) {
+            if ([key isKindOfClass:[NSString class]] &&
+                    [option isKindOfClass:[NSString class]]) {
                 TString name = [key UTF8String];
                 TString value = [option UTF8String];
 
@@ -402,7 +452,8 @@
     }
 
     // Open and read the defaults file specified by domain.
-    bool ReadPreferences(NSDictionary *Defaults, std::list<TString> Keys, OrderedMap<TString, TString> &Data) {
+    bool ReadPreferences(NSDictionary *Defaults, std::list<TString> Keys,
+            OrderedMap<TString, TString> &Data) {
         bool result = false;
 
         if (Keys.size() > 0 && Defaults != NULL) {
@@ -457,13 +508,12 @@
     }
 };
 
-//--------------------------------------------------------------------------------------------------
-
 MacJavaUserPreferences::MacJavaUserPreferences(void) : JavaUserPreferences() {
 }
 
 TString toLowerCase(TString Value) {
-    // Use Cocoa's lowercase method because it is better than the ones provided by C/C++.
+    // Use Cocoa's lowercase method because it is better than
+    // the ones provided by C/C++.
     NSString *temp = StringToNSString(Value);
     temp = [temp lowercaseString];
     TString result = [temp UTF8String];
@@ -485,15 +535,18 @@
     return result;
 }
 
-// 1. If the path is fewer than three components (Example: one/two/three) then the domain is the
+// 1. If the path is fewer than three components (Example: one/two/three)
+//    then the domain is the
 //    default domain "com.apple.java.util.prefs" stored in the plist file
 //    ~/Library/Preferences/com.apple.java.util.prefs.plist
 //
 //    For example: If AppID = "hello", the path is "hello/JVMUserOptions and the
-//    plist file is ~/Library/Preferences/com.apple.java.util.prefs.plist containing the contents:
+//    plist file is ~/Library/Preferences/com.apple.java.util.prefs.plist
+//    containing the contents:
 //
 //    <?xml version="1.0" encoding="UTF-8"?>
-//    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+//    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
+//            "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 //    <plist version="1.0">
 //    <dict>
 //      <key>/</key>
@@ -513,12 +566,15 @@
 // 2. If the path is three or more, the first three become the domain name (even
 //    if shared across applicaitons) and the remaining become individual keys.
 //
-//    For example: If AppID = "com/hello/foo", the path is "hello/JVMUserOptions and the
-//    domain is "com.hello.foo" stored in the plist file ~/Library/Preferences/com.hello.foo.plist
+//    For example: If AppID = "com/hello/foo", the path is
+//            "hello/JVMUserOptions and the
+//    domain is "com.hello.foo" stored in the plist file
+//            ~/Library/Preferences/com.hello.foo.plist
 //    containing the contents:
 //
 //    <?xml version="1.0" encoding="UTF-8"?>
-//    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+//    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
+//            "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 //    <plist version="1.0">
 //    <dict>
 //      <key>/com/hello/foo/</key>
@@ -534,12 +590,14 @@
 //
 // NOTE: To change these values use the command line utility "defaults":
 // Example: defaults read com.apple.java.util.prefs /
-// Since OS 10.9 Mavericks the defaults are cashed so directly modifying the files is not recommended.
+// Since OS 10.9 Mavericks the defaults are cashed so directly modifying
+// the files is not recommended.
 bool MacJavaUserPreferences::Load(TString Appid) {
     bool result = false;
 
     if (Appid.empty() == false) {
-        // This is for backwards compatability. Older packaged applications have an
+        // This is for backwards compatability.
+        // Older packaged applications have an
         // app.preferences.id that is delimited by period (".") rather than
         // slash ("/") so convert to newer style.
         TString path = Helpers::ReplaceString(Appid, _T("."), _T("/"));
@@ -548,12 +606,14 @@
         TString domainName;
         std::list<TString> keys = Split(path, _T("/"));
 
-        // If there are less than three parts to the path then use the default preferences file.
+        // If there are less than three parts to the path then use
+        // the default preferences file.
         if (keys.size() < 3) {
             domainName = _T("com.apple.java.util.prefs");
 
             // Append slash to the end of each key.
-            for (std::list<TString>::iterator iterator = keys.begin(); iterator != keys.end(); iterator++) {
+            for (std::list<TString>::iterator iterator = keys.begin();
+                    iterator != keys.end(); iterator++) {
                 TString item = *iterator;
                 item = item + _T("/");
                 *iterator = item;
@@ -563,7 +623,8 @@
             keys.push_front(_T("/"));
         }
         else {
-            // Remove the first three keys and use them for the root key and the preferencesID.
+            // Remove the first three keys and use them for the
+            // root key and the preferencesID.
             TString one = keys.front();
             keys.pop_front();
             TString two = keys.front();
@@ -574,14 +635,16 @@
             domainName = toLowerCase(domainName);
 
             // Append slash to the end of each key.
-            for (std::list<TString>::iterator iterator = keys.begin(); iterator != keys.end(); iterator++) {
+            for (std::list<TString>::iterator iterator = keys.begin();
+                    iterator != keys.end(); iterator++) {
                 TString item = *iterator;
                 item = item + _T("/");
                 *iterator = item;
             }
 
             // The root key is /one/two/three/
-            TString key = TString("/") + one + TString("/") + two + TString("/") + three + TString("/");
+            TString key = TString("/") + one + TString("/") + two
+                    + TString("/") + three + TString("/");
             keys.push_front(key);
         }
 
@@ -596,6 +659,5 @@
     return result;
 }
 
-//--------------------------------------------------------------------------------------------------
 
 #endif //MAC
--- a/src/jdk.packager/share/classes/jdk/packager/Main.java	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package jdk.packager;
-
-import jdk.packager.internal.Arguments;
-import jdk.packager.internal.Log;
-import jdk.packager.internal.CLIHelp;
-import java.io.PrintWriter;
-import java.util.ResourceBundle;
-
-public class Main {
-
-    private static final ResourceBundle bundle =
-            ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle");
-
-    private static final String version = bundle.getString("MSG_Version")
-            + " " + System.getProperty("java.version") + "\n";
-
-    public static void main(String... args) throws Exception {
-        // Create logger with default system.out and system.err
-        Log.Logger logger = new Log.Logger(false);
-        Log.setLogger(logger);
-
-        int status = run(args);
-        System.exit(status);
-    }
-
-    public static int run(PrintWriter out, PrintWriter err, String... args)
-            throws Exception {
-        // Create logger with provided streams
-        Log.Logger logger = new Log.Logger(false);
-        logger.setPrintWriter(out, err);
-        Log.setLogger(logger);
-
-        int status = run(args);
-        Log.flush();
-        return status;
-    }
-
-    public static int run(String... args) throws Exception {
-        if (args.length == 0) {
-            CLIHelp.showHelp(true);
-        } else if (hasHelp(args)){
-            CLIHelp.showHelp(false);
-        } else if (args.length == 1 && args[0].equals("--version")) {
-            Log.info(version);
-        } else {
-            try {
-                Arguments arguments = new Arguments(args);
-                arguments.processArguments();
-            } catch (Exception e) {
-                if (Arguments.verbose()) {
-                    throw e;
-                } else {
-                    Log.error(e.getMessage());
-                    if (e.getCause() != null && e.getCause() != e) {
-                        Log.error(e.getCause().getMessage());
-                    }
-                    return -1;
-                }
-            }
-        }
-
-        return 0;
-    }
-
-    private static boolean hasHelp(String[] args) {
-        for (String a : args) {
-            if ("--help".equals(a) || "-h".equals(a)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/AbstractBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/AbstractBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,10 +25,10 @@
 
 package jdk.packager.internal;
 
-
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.StandardCopyOption;
@@ -37,7 +37,6 @@
 import java.util.Map;
 import java.util.ResourceBundle;
 
-
 public abstract class AbstractBundler implements Bundler {
 
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
@@ -59,15 +58,18 @@
 
     protected Class baseResourceLoader = null;
 
-    protected void fetchResource(
-            String publicName, String category,
+    protected void fetchResource(String publicName, String category,
             String defaultName, File result, boolean verbose, File publicRoot)
             throws IOException {
         InputStream is = streamResource(publicName, category,
                 defaultName, verbose, publicRoot);
         if (is != null) {
-            Files.copy(is, result.toPath(),
-                    StandardCopyOption.REPLACE_EXISTING);
+            try {
+                Files.copy(is, result.toPath(),
+                        StandardCopyOption.REPLACE_EXISTING);
+            } finally {
+                is.close();
+            }
         } else {
             if (verbose) {
                 Log.info(MessageFormat.format(I18N.getString(
@@ -78,14 +80,17 @@
         }
     }
 
-    protected void fetchResource(
-            String publicName, String category,
+    protected void fetchResource(String publicName, String category,
             File defaultFile, File result, boolean verbose, File publicRoot)
             throws IOException {
         InputStream is = streamResource(publicName, category,
                 null, verbose, publicRoot);
         if (is != null) {
-            Files.copy(is, result.toPath());
+            try {
+                Files.copy(is, result.toPath());
+            } finally {
+                is.close();
+            }
         } else {
             IOUtils.copyFile(defaultFile, result);
             if (verbose) {
@@ -106,7 +111,8 @@
             if (publicRoot != null) {
                 File publicResource = new File(publicRoot, publicName);
                 if (publicResource.exists() && publicResource.isFile()) {
-                    is = new FileInputStream(publicResource);
+                    is = new BufferedInputStream(
+                            new FileInputStream(publicResource));
                 }
             } else {
                 is = baseResourceLoader.getClassLoader().getResourceAsStream(
@@ -117,17 +123,19 @@
         if (is == null && defaultName != null) {
             is = baseResourceLoader.getResourceAsStream(defaultName);
         }
-        String msg = null;
-        if (custom) {
-            msg = MessageFormat.format(I18N.getString(
-                    "message.using-custom-resource-from-classpath"),
-                    category == null ? "" : "[" + category + "] ", publicName);
-        } else if (is != null) {
-            msg = MessageFormat.format(I18N.getString(
-                    "message.using-default-resource-from-classpath"),
-                    category == null ? "" : "[" + category + "] ", publicName);
-        }
         if (verbose && is != null) {
+            String msg = null;
+            if (custom) {
+                msg = MessageFormat.format(I18N.getString(
+                        "message.using-custom-resource-from-classpath"),
+                        category == null ?
+                        "" : "[" + category + "] ", publicName);
+            } else {
+                msg = MessageFormat.format(I18N.getString(
+                        "message.using-default-resource-from-classpath"),
+                        category == null ?
+                        "" : "[" + category + "] ", publicName);
+            }
             Log.info(msg);
         }
         return is;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/AbstractImageBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/AbstractImageBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -33,12 +33,14 @@
 
 import static jdk.packager.internal.StandardBundlerParam.*;
 
-
 /**
  * Common utility methods used by app image bundlers.
  */
 public abstract class AbstractImageBundler extends AbstractBundler {
 
+    private final static String JAVA_VERSION_SPEC =
+        "java version \"((\\d+).(\\d+).(\\d+).(\\d+))(-(.*))?(\\+[^\"]*)?\"";
+
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
             "jdk.packager.internal.resources.AbstractImageBundler");
 
@@ -83,8 +85,7 @@
             params.put(".runtime.version.patch", "0");
             params.put(".runtime.version.modifiers", matcher.group(7));
         } else {
-            Pattern newVersionMatcher = Pattern.compile(
-                   "java version \"((\\d+).(\\d+).(\\d+).(\\d+))(-(.*))?(\\+[^\"]*)?\"");
+            Pattern newVersionMatcher = Pattern.compile(JAVA_VERSION_SPEC);
             matcher = newVersionMatcher.matcher(versionOutput);
             if (matcher.find()) {
                 params.put(".runtime.version", matcher.group(1));
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java	Wed Oct 17 13:50:11 2018 -0400
@@ -24,6 +24,9 @@
  */
 package jdk.packager.internal;
 
+import jdk.packager.internal.bundlers.Bundler;
+import jdk.packager.internal.bundlers.BundleParams;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -47,8 +50,6 @@
 import java.util.stream.Stream;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import jdk.packager.internal.bundlers.Bundler;
-import jdk.packager.internal.bundlers.BundleParams;
 
 public class Arguments {
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
@@ -221,7 +222,6 @@
         FILES ("files", "f", OptionCategories.PROPERTY, () -> {
               context().files = new ArrayList<>();
               String files = popArg();
-              // TODO: should we split using ' '(space) ?
               context().files.addAll(
                       Arrays.asList(files.split(File.pathSeparator)));
         }),
@@ -541,8 +541,8 @@
 
             if (!hasAppImage && !hasMainJar && !hasMainModule &&
                     !hasMainClass && !jreInstaller) {
-                Log.info("ERROR: Main jar, main class, main module, or app-image "
-                        + "must be specified.");
+                Log.info("ERROR: Main jar, main class, main module, "
+                        + "or app-image must be specified.");
             } else if (!hasMainModule && !hasMainClass) {
                 // try to get main-class from manifest
                 String mainClass = getMainClassFromManifest();
--- a/src/jdk.packager/share/classes/jdk/packager/internal/BasicBundlers.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/BasicBundlers.java	Wed Oct 17 13:50:11 2018 -0400
@@ -32,8 +32,8 @@
 import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
- * A basic bundlers collection that loads the OpenJFX default bundlers.
- * Loads the bundlers common to OpenJFX.
+ * A basic bundlers collection that loads the default bundlers.
+ * Loads the common bundlers common.
  * <UL>
  *     <LI>Windows file image</LI>
  *     <LI>Mac .app</LI>
--- a/src/jdk.packager/share/classes/jdk/packager/internal/BundlerParamInfo.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/BundlerParamInfo.java	Wed Oct 17 13:50:11 2018 -0400
@@ -29,7 +29,6 @@
 import java.util.function.BiFunction;
 import java.util.function.Function;
 
-
 public class BundlerParamInfo<T> {
     /**
      * The user friendly name of the parameter
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Bundlers.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Bundlers.java	Wed Oct 17 13:50:11 2018 -0400
@@ -29,7 +29,6 @@
 import java.util.Iterator;
 import java.util.ServiceLoader;
 
-
 public interface Bundlers {
 
     /**
--- a/src/jdk.packager/share/classes/jdk/packager/internal/CLIHelp.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/CLIHelp.java	Wed Oct 17 13:50:11 2018 -0400
@@ -22,11 +22,11 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package jdk.packager.internal;
 
 import java.util.ResourceBundle;
 
-
 public class CLIHelp {
 
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
--- a/src/jdk.packager/share/classes/jdk/packager/internal/CommonParams.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/CommonParams.java	Wed Oct 17 13:50:11 2018 -0400
@@ -27,7 +27,6 @@
 
 import java.io.File;
 
-
 public abstract class CommonParams {
     File outdir;
     boolean verbose;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/ConfigException.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/ConfigException.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
 
 package jdk.packager.internal;
 
-
 public class ConfigException extends Exception {
     final String advice;
 
--- a/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java	Wed Oct 17 13:50:11 2018 -0400
@@ -27,7 +27,9 @@
 
 import jdk.packager.internal.bundlers.*;
 import jdk.packager.internal.bundlers.Bundler.BundleType;
+
 import java.io.File;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -60,7 +62,6 @@
     Boolean singleton;
 
     String applicationClass;
-    String preloader;
 
     List<Param> params;
     List<String> arguments; //unnamed arguments
@@ -69,47 +70,16 @@
     String addModules = null;
     String limitModules = null;
     Boolean stripNativeCommands = null;
-    Boolean detectmods = null;
     String modulePath = null;
     String module = null;
     String debugPort = null;
-    String srcdir;
-
-    int width;
-    int height;
-    String embeddedWidth = null;
-    String embeddedHeight = null;
-
-    String appName;
-    String codebase;
-
-    @Deprecated final boolean embedCertificates = false;
-    boolean allPermissions = false;
-    String updateMode = "background";
-    boolean isExtension = false;
-    boolean isSwingApp = false;
 
     boolean jreInstaller = false;
 
-    Boolean needShortcut = null;
-    Boolean needMenu = null;
-    Boolean needInstall = null;
-
     String outfile;
-    // if true then we cobundle js and image files needed
-    // for web deployment with the application
-    boolean includeDT;
 
-    String placeholder = "'javafx-app-placeholder'";
     String appId = null;
 
-    // didn't have a setter...
-    boolean offlineAllowed = true;
-
-    String jrePlatform = System.getProperty("java.version")+"+";
-    File javaRuntimeToUse = null;
-    boolean javaRuntimeWasSet = false;
-
     // list of jvm args
     // (in theory string can contain spaces and need to be escaped
     List<String> jvmargs = new LinkedList<>();
@@ -121,17 +91,6 @@
     // raw arguments to the bundler
     Map<String, ? super Object> bundlerArguments = new LinkedHashMap<>();
 
-    String fallbackApp = null;
-
-    public void setJavaRuntimeSource(File src) {
-        javaRuntimeToUse = src;
-        javaRuntimeWasSet = true;
-    }
-
-    public void setCodebase(String codebase) {
-        this.codebase = codebase;
-    }
-
     public void setId(String id) {
         this.id = id;
     }
@@ -172,43 +131,6 @@
         this.signBundle = signBundle;
     }
 
-    public void setJRE(String v) {
-        jrePlatform = v;
-    }
-
-    public void setSwingAppWithEmbeddedJavaFX(boolean v) {
-        isSwingApp = v;
-    }
-
-    public void setNeedInstall(boolean b) {
-        needInstall = b;
-    }
-
-    public void setOfflineAllowed(boolean b) {
-        offlineAllowed = b;
-    }
-
-    public void setNeedShortcut(Boolean b) {
-        needShortcut = b;
-    }
-
-    public void setEmbeddedDimensions(String w, String h) {
-        embeddedWidth = w;
-        embeddedHeight = h;
-    }
-
-    public void setFallback(String v) {
-        if (v == null) {
-            return;
-        }
-
-        if ("none".equals(v) || "null".equals(v)) {
-            fallbackApp = null;
-        } else {
-            fallbackApp = v;
-        }
-    }
-
     public void addJvmArg(String v) {
         jvmargs.add(v);
     }
@@ -217,14 +139,6 @@
         properties.put(n, v);
     }
 
-    public void setAllPermissions(boolean allPermissions) {
-        this.allPermissions = allPermissions;
-    }
-
-    public void setAppName(String appName) {
-        this.appName = appName;
-    }
-
     public void setArguments(List<String> args) {
         this.arguments = args;
     }
@@ -259,10 +173,6 @@
         return this.modulePath;
     }
 
-    public void setSrcdir(String srcdir) {
-        this.srcdir = srcdir;
-    }
-
     public void setModulePath(String value) {
         this.modulePath = value;
     }
@@ -279,26 +189,14 @@
         this.stripNativeCommands = value;
     }
 
-    public void setDetectModules(boolean value) {
-        this.detectmods = value;
-    }
-
     public void setDescription(String description) {
         this.description = description;
     }
 
-    public void setPlaceholder(String p) {
-        placeholder = p;
-    }
-
     public void setAppId(String id) {
         appId = id;
     }
 
-    public void setHeight(int height) {
-        this.height = height;
-    }
-
     public void setOutfile(String outfile) {
         this.outfile = outfile;
     }
@@ -307,18 +205,10 @@
         this.params = params;
     }
 
-    public void setPreloader(String preloader) {
-        this.preloader = preloader;
-    }
-
     public void setTitle(String title) {
         this.title = title;
     }
 
-    public void setUpdateMode(String updateMode) {
-        this.updateMode = updateMode;
-    }
-
     public void setVendor(String vendor) {
         this.vendor = vendor;
     }
@@ -327,22 +217,10 @@
         this.email = email;
     }
 
-    public void setWidth(int width) {
-        this.width = width;
-    }
-
-    public void setExtension(boolean isExtension) {
-        this.isExtension = isExtension;
-    }
-
     public void setApplicationClass(String applicationClass) {
         this.applicationClass = applicationClass;
     }
 
-    public void setIncludeDT(boolean doEmbed) {
-        includeDT = doEmbed;
-    }
-
     public void setJreInstaller(boolean value) {
         jreInstaller = value;
     }
@@ -362,13 +240,13 @@
     }
 
     // we need to expand as in some cases
-    // (most notably javapackager)
+    // (most notably jpackager)
     // we may get "." as filename and assumption is we include
     // everything in the given folder
     // (IOUtils.copyfiles() have recursive behavior)
     List<File> expandFileset(File root) {
         List<File> files = new LinkedList<>();
-        if (jdk.packager.internal.IOUtils.isNotSymbolicLink(root)) {
+        if (!Files.isSymbolicLink(root.toPath())) {
             if (root.isDirectory()) {
                 File[] children = root.listFiles();
                 if (children != null) {
@@ -412,43 +290,6 @@
                 baseDir, new LinkedHashSet<>(expandFileset(file))));
     }
 
-    public void addResource(File baseDir, String path, String type) {
-        addResource(baseDir, createFile(baseDir, path), type);
-    }
-
-    public void addResource(File baseDir, File file, String type) {
-        addResource(baseDir, file, "eager", type, null, null);
-    }
-
-    public void addResource(File baseDir, File file, String mode,
-            String type, String os, String arch) {
-        Set<File> singleFile = new LinkedHashSet<>();
-        singleFile.add(file);
-        if (baseDir == null) {
-            baseDir = file.getParentFile();
-        }
-        RelativeFileSet rfs = new RelativeFileSet(baseDir, singleFile);
-        rfs.setArch(arch);
-        rfs.setMode(mode);
-        rfs.setOs(os);
-        rfs.setType(parseTypeFromString(type, file));
-        resources.add(rfs);
-    }
-
-    private RelativeFileSet.Type parseTypeFromString(String type, File file) {
-        if (type == null) {
-            if (file.getName().endsWith(".jar")) {
-                return RelativeFileSet.Type.jar;
-            } else if (file.getName().endsWith(".jnlp")) {
-                return RelativeFileSet.Type.jnlp;
-            } else {
-                return RelativeFileSet.Type.UNKNOWN;
-            }
-        } else {
-            return RelativeFileSet.Type.valueOf(type);
-        }
-    }
-
     private static File createFile(final File baseDir, final String path) {
         final File testFile = new File(path);
         return testFile.isAbsolute() ?
@@ -482,12 +323,14 @@
                 throw new PackagerException("ERR_MissingArgument", "--class");
             }
             if (!hasMain) {
-                throw new PackagerException("ERR_MissingArgument", "--main-jar");
+                throw new PackagerException("ERR_MissingArgument",
+                        "--main-jar");
             }
         }
 
         // Validate app image if set
-        String appImage = (String)bundlerArguments.get(Arguments.CLIOptions.PREDEFINED_APP_IMAGE.getId());
+        String appImage = (String)bundlerArguments.get(
+                Arguments.CLIOptions.PREDEFINED_APP_IMAGE.getId());
         if (appImage != null) {
             File appImageDir = new File(appImage);
             if (!appImageDir.exists()) {
@@ -495,7 +338,8 @@
             }
 
             File appImageAppDir = new File(appImage + File.separator + "app");
-            File appImageRuntimeDir = new File(appImage + File.separator + "runtime");
+            File appImageRuntimeDir = new File(appImage
+                    + File.separator + "runtime");
             if (!appImageAppDir.exists() || !appImageRuntimeDir.exists()) {
                 throw new PackagerException("ERR_AppImageInvalid", appImage);
             }
@@ -553,8 +397,7 @@
             StandardBundlerParam.MODULE_PATH.getID(),
             StandardBundlerParam.ADD_MODULES.getID(),
             StandardBundlerParam.LIMIT_MODULES.getID(),
-            StandardBundlerParam.FILE_ASSOCIATIONS.getID(),
-            JLinkBundlerHelper.DETECT_MODULES.getID()
+            StandardBundlerParam.FILE_ASSOCIATIONS.getID()
     ));
 
     @SuppressWarnings("unchecked")
@@ -586,33 +429,11 @@
         String currentOS = System.getProperty("os.name").toLowerCase();
         String currentArch = getArch();
 
-        for (RelativeFileSet rfs : resources) {
-            String os = rfs.getOs();
-            String arch = rfs.getArch();
-            //skip resources for other OS
-            // and nativelib jars (we are including raw libraries)
-            if ((os == null || currentOS.contains(os.toLowerCase())) &&
-                    (arch == null ||
-                    currentArch.startsWith(arch.toLowerCase())) &&
-                    rfs.getType() != RelativeFileSet.Type.nativelib) {
-                if (rfs.getType() == RelativeFileSet.Type.license) {
-                    for (String s : rfs.getIncludedFiles()) {
-                        bundleParams.addLicenseFile(s);
-                    }
-                }
-            }
-        }
-
         bundleParams.setAppResourcesList(resources);
 
         bundleParams.setIdentifier(id);
 
-        if (javaRuntimeWasSet) {
-            bundleParams.setRuntime(javaRuntimeToUse);
-        }
         bundleParams.setApplicationClass(applicationClass);
-        bundleParams.setPrelaoderClass(preloader);
-        bundleParams.setName(this.appName);
         bundleParams.setAppVersion(version);
         bundleParams.setType(bundleType);
         bundleParams.setBundleFormat(targetFormat);
@@ -643,8 +464,6 @@
             bundleParams.setStripNativeCommands(stripNativeCommands);
         }
 
-        bundleParams.setSrcDir(srcdir);
-
         if (modulePath != null && !modulePath.isEmpty()) {
             bundleParams.setModulePath(modulePath);
         }
@@ -657,10 +476,6 @@
             bundleParams.setDebug(debugPort);
         }
 
-        if (detectmods != null) {
-            bundleParams.setDetectMods(detectmods);
-        }
-
         Map<String, String> paramsMap = new TreeMap<>();
         if (params != null) {
             for (Param p : params) {
--- a/src/jdk.packager/share/classes/jdk/packager/internal/EnumeratedBundlerParam.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/EnumeratedBundlerParam.java	Wed Oct 17 13:50:11 2018 -0400
@@ -52,7 +52,7 @@
  *
  */
 public class EnumeratedBundlerParam<T> extends BundlerParamInfo<T> {
-    // Not sure if this is the correct order, my idea is that from and IDE's
+    // Not sure if this is the correct order, my idea is that from IDE
     // perspective the string to display to the user is the key and then the
     // value is some type of object (although probably a String in most cases)
     private final Map<String, T> elements;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/IOUtils.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/IOUtils.java	Wed Oct 17 13:50:11 2018 -0400
@@ -37,7 +37,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-
 public class IOUtils {
 
     public static void deleteRecursive(File path) throws IOException {
@@ -166,7 +165,7 @@
         return foldersize;
     }
 
-    //run "launcher paramfile" in the directory where paramfile is kept
+    // run "launcher paramfile" in the directory where paramfile is kept
     public static void run(String launcher, File paramFile, boolean verbose)
             throws IOException {
         if (paramFile != null && paramFile.exists()) {
@@ -287,39 +286,4 @@
 
         return ret;
     }
-
-    // no good test if we are running pre-JRE7
-    // use heuristic approach
-    // "false positive" is better than wrong answer
-    public static boolean isNotSymbolicLink(File file) {
-        //no symlinks on windows
-        if (Platform.getPlatform() == Platform.WINDOWS) {
-            return true;
-        }
-        try {
-            if (file == null || file.getParent() == null) {
-                return false;
-            }
-            File file_canonical = new File(
-                    file.getParentFile().getCanonicalFile(), file.getName());
-            if (file_canonical.getCanonicalFile().equals(
-                       file_canonical.getAbsoluteFile())) {
-                return true;
-            }
-        } catch (IOException ioe) {}
-        return false;
-    }
-
-    public static byte[] readFully(File f) throws IOException {
-        InputStream inp = new FileInputStream(f);
-        // read fully into memory
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        byte[] buffer = new byte[1024];
-        int length;
-        while ((length = inp.read(buffer)) != -1) {
-            baos.write(buffer, 0, length);
-        }
-        baos.close();
-        return baos.toByteArray();
-    }
 }
--- a/src/jdk.packager/share/classes/jdk/packager/internal/InvalidBundlerParamException.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/InvalidBundlerParamException.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
 
 package jdk.packager.internal;
 
-
 public class InvalidBundlerParamException extends RuntimeException {
     public InvalidBundlerParamException(String message) {
         super(message);
--- a/src/jdk.packager/share/classes/jdk/packager/internal/JLinkBundlerHelper.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/JLinkBundlerHelper.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
 
 package jdk.packager.internal;
 
-
 import java.io.File;
 import java.io.IOException;
 import java.io.StringReader;
@@ -49,7 +48,6 @@
 import jdk.packager.internal.builders.AbstractAppImageBuilder;
 import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder;
 
-
 public final class JLinkBundlerHelper {
 
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
@@ -57,39 +55,11 @@
     private static final String JRE_MODULES_FILENAME =
             "jdk/packager/internal/resources/jre.list";
     private static final String SERVER_JRE_MODULES_FILENAME =
-            "jdk/packager/internal/resources/server.jre.list";
+            "jdk/packager/internal/resources/jre.module.list";
 
     private JLinkBundlerHelper() {}
 
     @SuppressWarnings("unchecked")
-    public static final BundlerParamInfo<Boolean> DETECT_MODULES =
-            new StandardBundlerParam<>(
-                    I18N.getString("param.detect-modules.name"),
-                    I18N.getString("param.detect-modules.description"),
-                    "detect-modules",
-                    Boolean.class,
-                    p -> Boolean.FALSE,
-                    (s, p) -> Boolean.valueOf(s));
-
-    @SuppressWarnings("unchecked")
-    public static final BundlerParamInfo<Map<String, String>> JLINK_OPTIONS =
-            new StandardBundlerParam<>(
-                    I18N.getString("param.jlink-options.name"),
-                    I18N.getString("param.jlink-options.description"),
-                    "jlinkOptions",
-                    (Class<Map<String, String>>) (Object) Map.class,
-                    p -> Collections.emptyMap(),
-                    (s, p) -> {
-                        try {
-                            Properties props = new Properties();
-                            props.load(new StringReader(s));
-                            return new LinkedHashMap<>((Map)props);
-                        } catch (IOException e) {
-                            return new LinkedHashMap<>();
-                        }
-                    });
-
-    @SuppressWarnings("unchecked")
     public static final BundlerParamInfo<String> JLINK_BUILDER =
             new StandardBundlerParam<>(
                     I18N.getString("param.jlink-builder.name"),
@@ -277,30 +247,30 @@
         Path outputDir = imageBuilder.getRoot();
         String excludeFileList = imageBuilder.getExcludeFileList();
         File mainJar = getMainJar(params);
-        Module.ModuleType mainJarType = Module.ModuleType.Unknown;
+        ModFile.ModType mainJarType = ModFile.ModType.Unknown;
 
         if (mainJar != null) {
-            mainJarType = new Module(mainJar).getModuleType();
+            mainJarType = new ModFile(mainJar).getModType();
         } else if (mainJar == null &&
                 StandardBundlerParam.MODULE.fetchFrom(params) == null) {
             // user specified only main class, all jars will be on the classpath
-            mainJarType = Module.ModuleType.UnnamedJar;
+            mainJarType = ModFile.ModType.UnnamedJar;
         }
 
         // Modules
 
         // The default for an unnamed jar is ALL_DEFAULT with the
         // non-redistributable modules removed.
-        if (mainJarType == Module.ModuleType.UnnamedJar) {
+        if (mainJarType == ModFile.ModType.UnnamedJar) {
             addModules.add(ModuleHelper.ALL_RUNTIME);
-        } else if (mainJarType == Module.ModuleType.Unknown ||
-                mainJarType == Module.ModuleType.ModularJar) {
+        } else if (mainJarType == ModFile.ModType.Unknown ||
+                mainJarType == ModFile.ModType.ModularJar) {
             String mainModule = getMainModule(params);
             addModules.add(mainModule);
 
             // Error if any of the srcfiles are modular jars.
             Set<String> modularJars =
-                    getResourceFileJarList(params, Module.JarType.ModularJar);
+                    getResourceFileJarList(params, ModFile.JarType.ModularJar);
 
             if (!modularJars.isEmpty()) {
                 throw new Exception(MessageFormat.format(I18N.getString(
@@ -415,7 +385,7 @@
     }
 
     private static Set<String> getResourceFileJarList(
-            Map<String, ? super Object> params, Module.JarType Query) {
+            Map<String, ? super Object> params, ModFile.JarType Query) {
         Set<String> files = new LinkedHashSet();
 
         String srcdir = StandardBundlerParam.SOURCE_DIR.fetchFrom(params);
@@ -432,19 +402,15 @@
                             break;
                         }
                         case ModularJar: {
-                            Module module = new Module(new File(filename));
-
-                            if (module.getModuleType() ==
-                                    Module.ModuleType.ModularJar) {
+                            ModFile mod = new ModFile(new File(filename));
+                            if (mod.getModType() == ModFile.ModType.ModularJar) {
                                 files.add(filename);
                             }
                             break;
                         }
                         case UnnamedJar: {
-                            Module module = new Module(new File(filename));
-
-                            if (module.getModuleType() ==
-                                    Module.ModuleType.UnnamedJar) {
+                            ModFile mod = new ModFile(new File(filename));
+                            if (mod.getModType() == ModFile.ModType.UnnamedJar) {
                                 files.add(filename);
                             }
                             break;
@@ -461,15 +427,15 @@
             List<Path> modulePath, Set<String> modules) {
         Set<String> result = new LinkedHashSet();
         ModuleManager mm = new ModuleManager(modulePath);
-        List<Module> lmodules =
+        List<ModFile> lmodfiles =
                 mm.getModules(EnumSet.of(ModuleManager.SearchType.ModularJar,
                         ModuleManager.SearchType.Jmod,
                         ModuleManager.SearchType.ExplodedModule));
 
-        HashMap<String, Module> validModules = new HashMap<>();
+        HashMap<String, ModFile> validModules = new HashMap<>();
 
-        for (Module module : lmodules) {
-            validModules.put(module.getModuleName(), module);
+        for (ModFile modFile : lmodfiles) {
+            validModules.put(modFile.getModName(), modFile);
         }
 
         for (String name : modules) {
@@ -541,14 +507,14 @@
         private static Set<String> getModuleNamesFromPath(List<Path> Value) {
                 Set<String> result = new LinkedHashSet();
                 ModuleManager mm = new ModuleManager(Value);
-                List<Module> modules =
+                List<ModFile> modFiles =
                         mm.getModules(
                                 EnumSet.of(ModuleManager.SearchType.ModularJar,
                                 ModuleManager.SearchType.Jmod,
                                 ModuleManager.SearchType.ExplodedModule));
 
-                for (Module module : modules) {
-                    result.add(module.getModuleName());
+                for (ModFile modFile : modFiles) {
+                    result.add(modFile.getModName());
                 }
 
                 return result;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/JPackagerToolProvider.java	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.packager.internal;
+
+import java.io.PrintWriter;
+import java.util.spi.ToolProvider;
+
+public class JPackagerToolProvider implements ToolProvider {
+
+    public String name() {
+        return "jpackager";
+    }
+
+    public synchronized int run(
+            PrintWriter out, PrintWriter err, String... args) {
+        try {
+            jdk.packager.main.Main.run(out, err, args);
+        } catch (Exception ignored) {
+            return 1;
+        }
+        return 0;
+    }
+}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/JavaPackagerToolProvider.java	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package jdk.packager.internal;
-
-import java.io.PrintWriter;
-import java.util.spi.ToolProvider;
-
-public class JavaPackagerToolProvider implements ToolProvider {
-
-    public String name() {
-        return "javapackager";
-    }
-
-    public synchronized int run(
-            PrintWriter out, PrintWriter err, String... args) {
-        try {
-            jdk.packager.Main.run(out, err, args);
-        } catch (Exception ignored) {
-            return 1;
-        }
-        return 0;
-    }
-}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/JreUtils.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/JreUtils.java	Wed Oct 17 13:50:11 2018 -0400
@@ -26,10 +26,10 @@
 package jdk.packager.internal;
 
 import java.io.File;
+import java.nio.file.Files;
 import java.util.HashSet;
 import java.util.Set;
 
-
 public class JreUtils {
 
     public static class Rule {
@@ -113,7 +113,7 @@
         File[] lst = root.listFiles();
         if (lst != null) {
             for (File f : lst) {
-                if ((acceptSymlinks || IOUtils.isNotSymbolicLink(f)) &&
+                if ((acceptSymlinks || !Files.isSymbolicLink(f.toPath())) &&
                         !shouldExclude(base, f, ruleset)) {
                     if (f.isDirectory()) {
                         walk(base, f, ruleset, files, acceptSymlinks);
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Log.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Log.java	Wed Oct 17 13:50:11 2018 -0400
@@ -30,7 +30,6 @@
 import java.io.PrintStream;
 import java.io.PrintWriter;
 
-
 public class Log {
     public static class Logger {
         private boolean verbose = false;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/ModFile.java	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.packager.internal;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+public final class ModFile {
+    private final String filename;
+    private final ModType moduleType;
+
+    public enum JarType {All, UnnamedJar, ModularJar}
+    public enum ModType {
+            Unknown, UnnamedJar, ModularJar, Jmod, ExplodedModule}
+
+    public ModFile(File aFile) {
+        super();
+        filename = aFile.getPath();
+        moduleType = getModType(aFile);
+    }
+
+    public String getModName() {
+        File file = new File(getFileName());
+        // do not try to remove extension for directories
+        return moduleType == ModType.ExplodedModule ?
+                file.getName() : getFileWithoutExtension(file.getName());
+    }
+
+    public String getFileName() {
+        return filename;
+    }
+
+    public ModType getModType() {
+        return moduleType;
+    }
+
+    private static ModType getModType(File aFile) {
+        ModType result = ModType.Unknown;
+        String filename = aFile.getAbsolutePath();
+
+        if (aFile.isFile()) {
+            if (filename.endsWith(".jmod")) {
+                result = ModType.Jmod;
+            }
+            else if (filename.endsWith(".jar")) {
+                JarType status = isModularJar(filename);
+
+                if (status == JarType.ModularJar) {
+                    result = ModType.ModularJar;
+                }
+                else if (status == JarType.UnnamedJar) {
+                    result = ModType.UnnamedJar;
+                }
+            }
+        }
+        else if (aFile.isDirectory()) {
+            File moduleInfo = new File(
+                    filename + File.separator + "module-info.class");
+
+            if (moduleInfo.exists()) {
+                result = ModType.ExplodedModule;
+            }
+        }
+
+        return result;
+    }
+
+    private static JarType isModularJar(String FileName) {
+        JarType result = JarType.All;
+
+        try {
+            ZipInputStream zip =
+                    new ZipInputStream(new FileInputStream(FileName));
+            result = JarType.UnnamedJar;
+
+            try {
+                for (ZipEntry entry = zip.getNextEntry(); entry != null;
+                        entry = zip.getNextEntry()) {
+                    if (entry.getName().matches("module-info.class")) {
+                        result = JarType.ModularJar;
+                        break;
+                    }
+                }
+
+                zip.close();
+            } catch (IOException ex) {
+            }
+        } catch (FileNotFoundException e) {
+        }
+
+        return result;
+    }
+
+    private static String getFileWithoutExtension(String FileName) {
+        return FileName.replaceFirst("[.][^.]+$", "");
+    }
+}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Module.java	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package jdk.packager.internal;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-
-public final class Module {
-    private final String filename;
-    private final ModuleType moduleType;
-
-    public enum JarType {All, UnnamedJar, ModularJar}
-    public enum ModuleType {
-            Unknown, UnnamedJar, ModularJar, Jmod, ExplodedModule}
-
-    public Module(File AFile) {
-        super();
-        filename = AFile.getPath();
-        moduleType = getModuleType(AFile);
-    }
-
-    public String getModuleName() {
-        File file = new File(getFileName());
-        // do not try to remove extension for directories
-        return moduleType == ModuleType.ExplodedModule ?
-                file.getName() : getFileWithoutExtension(file.getName());
-    }
-
-    public String getFileName() {
-        return filename;
-    }
-
-    public ModuleType getModuleType() {
-        return moduleType;
-    }
-
-    private static ModuleType getModuleType(File AFile) {
-        ModuleType result = ModuleType.Unknown;
-        String filename = AFile.getAbsolutePath();
-
-        if (AFile.isFile()) {
-            if (filename.endsWith(".jmod")) {
-                result = ModuleType.Jmod;
-            }
-            else if (filename.endsWith(".jar")) {
-                JarType status = isModularJar(filename);
-
-                if (status == JarType.ModularJar) {
-                    result = ModuleType.ModularJar;
-                }
-                else if (status == JarType.UnnamedJar) {
-                    result = ModuleType.UnnamedJar;
-                }
-            }
-        }
-        else if (AFile.isDirectory()) {
-            File moduleInfo = new File(
-                    filename + File.separator + "module-info.class");
-
-            if (moduleInfo.exists()) {
-                result = ModuleType.ExplodedModule;
-            }
-        }
-
-        return result;
-    }
-
-    private static JarType isModularJar(String FileName) {
-        JarType result = JarType.All;
-
-        try {
-            ZipInputStream zip =
-                    new ZipInputStream(new FileInputStream(FileName));
-            result = JarType.UnnamedJar;
-
-            try {
-                for (ZipEntry entry = zip.getNextEntry(); entry != null;
-                        entry = zip.getNextEntry()) {
-                    if (entry.getName().matches("module-info.class")) {
-                        result = JarType.ModularJar;
-                        break;
-                    }
-                }
-
-                zip.close();
-            } catch (IOException ex) {
-            }
-        } catch (FileNotFoundException e) {
-        }
-
-        return result;
-    }
-
-    private static String getFileWithoutExtension(String FileName) {
-        return FileName.replaceFirst("[.][^.]+$", "");
-    }
-}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/ModuleManager.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/ModuleManager.java	Wed Oct 17 13:50:11 2018 -0400
@@ -32,7 +32,6 @@
 import java.util.EnumSet;
 import java.util.List;
 
-
 public final class ModuleManager {
     private final List<String> folders = new ArrayList();
 
@@ -63,14 +62,14 @@
         }
     }
 
-    public List<Module> getModules() {
+    public List<ModFile> getModules() {
         return getModules(EnumSet.of(SearchType.UnnamedJar,
                 SearchType.ModularJar, SearchType.Jmod,
                 SearchType.ExplodedModule));
     }
 
-    public List<Module> getModules(EnumSet<SearchType> Search) {
-        List<Module> result = new ArrayList();
+    public List<ModFile> getModules(EnumSet<SearchType> Search) {
+        List<ModFile> result = new ArrayList();
 
         for (String folder : folders) {
             result.addAll(getAllModulesInDirectory(folder, Search));
@@ -79,36 +78,36 @@
         return result;
     }
 
-    private static List<Module> getAllModulesInDirectory(String Folder,
+    private static List<ModFile> getAllModulesInDirectory(String Folder,
             EnumSet<SearchType> Search) {
-        List<Module> result = new ArrayList();
+        List<ModFile> result = new ArrayList();
         File lfolder = new File(Folder);
         File[] files = lfolder.listFiles();
 
         for (File file : files) {
-            Module module = new Module(file);
+            ModFile modFile = new ModFile(file);
 
-            switch (module.getModuleType()) {
+            switch (modFile.getModType()) {
                 case Unknown:
                     break;
                 case UnnamedJar:
                     if (Search.contains(SearchType.UnnamedJar)) {
-                        result.add(module);
+                        result.add(modFile);
                     }
                     break;
                 case ModularJar:
                     if (Search.contains(SearchType.ModularJar)) {
-                        result.add(module);
+                        result.add(modFile);
                     }
                     break;
                 case Jmod:
                     if (Search.contains(SearchType.Jmod)) {
-                        result.add(module);
+                        result.add(modFile);
                     }
                     break;
                 case ExplodedModule:
                     if (Search.contains(SearchType.ExplodedModule)) {
-                        result.add(module);
+                        result.add(modFile);
                     }
                     break;
             }
--- a/src/jdk.packager/share/classes/jdk/packager/internal/PackagerException.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/PackagerException.java	Wed Oct 17 13:50:11 2018 -0400
@@ -28,7 +28,6 @@
 import java.text.MessageFormat;
 import java.util.ResourceBundle;
 
-
 public class PackagerException extends Exception {
     private static final ResourceBundle bundle =
             ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle");
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Param.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Param.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
 
 package jdk.packager.internal;
 
-
 public class Param {
     String name;
     String value;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Platform.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Platform.java	Wed Oct 17 13:50:11 2018 -0400
@@ -37,17 +37,17 @@
  *
  *  switch(platform) {
  *    case Platform.MAC: {
- *      //TODO Do something
+ *      // Do something
  *      break;
  *    }
  *    case Platform.WINDOWS:
  *    case Platform.LINUX: {
- *      //TODO Do something else
+ *      // Do something else
  *    }
  *  }
  *
  */
-public enum Platform {UNKNOWN, WINDOWS, LINUX, MAC, SOLARIS;
+public enum Platform {UNKNOWN, WINDOWS, LINUX, MAC;
     private static final Platform platform;
     private static final int majorVersion;
     private static final int minorVersion;
@@ -64,9 +64,6 @@
         else if (os.indexOf("mac") >= 0) {
             platform = Platform.MAC;
         }
-        else if (os.indexOf("sunos") >= 0 || os.indexOf("solaris") >= 0) {
-            platform = Platform.SOLARIS;
-        }
         else {
             platform = Platform.UNKNOWN;
         }
--- a/src/jdk.packager/share/classes/jdk/packager/internal/RedistributableModules.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/RedistributableModules.java	Wed Oct 17 13:50:11 2018 -0400
@@ -32,14 +32,10 @@
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.util.Optional;
-
-import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder;
-
 import java.lang.module.ModuleDescriptor;
 import java.lang.module.ModuleFinder;
 import java.lang.module.ModuleReference;
 import java.lang.module.ModuleReader;
-
 import java.nio.file.Path;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -47,6 +43,7 @@
 import java.util.NoSuchElementException;
 import java.util.Set;
 
+import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder;
 
 public final class RedistributableModules {
     private static final String JDK_PACKAGER_MODULE = "jdk.packager";
@@ -129,10 +126,10 @@
             Set<String> limitModules) {
         String result = "";
 
-        Module module = new Module(moduleFile);
+        ModFile modFile = new ModFile(moduleFile);
         ModuleFinder finder = AppRuntimeImageBuilder.moduleFinder(modulePath,
                 addModules, limitModules);
-        Optional<ModuleReference> mref = finder.find(module.getModuleName());
+        Optional<ModuleReference> mref = finder.find(modFile.getModName());
 
         if (mref.isPresent()) {
             ModuleDescriptor descriptor = mref.get().descriptor();
--- a/src/jdk.packager/share/classes/jdk/packager/internal/RelativeFileSet.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/RelativeFileSet.java	Wed Oct 17 13:50:11 2018 -0400
@@ -26,19 +26,12 @@
 package jdk.packager.internal;
 
 import java.io.File;
-
 import java.util.Collection;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
-
 public class RelativeFileSet {
 
-    public enum Type {
-        UNKNOWN, jnlp, jar, nativelib, icon, license, data
-    }
-
-    private Type type = Type.UNKNOWN;
     private String mode;
     private String os;
     private String arch;
@@ -47,7 +40,6 @@
     private Set<String> files = new LinkedHashSet<>();
 
     public RelativeFileSet(RelativeFileSet copy) {
-        type = copy.type;
         mode = copy.mode;
         os = copy.os;
         arch = copy.arch;
@@ -65,7 +57,7 @@
                         " does not belong to " + baseAbsolute);
             }
             if (!absolute.equals(baseAbsolute)) {
-                    // possible in javapackager case
+                    // possible in jpackager case
                 this.files.add(absolute.substring(baseAbsolute.length()+1));
             }
         }
@@ -102,7 +94,7 @@
         if (files.contains(requiredFile)) {
             return true;
         } else {
-            Log.debug("  RelativeFileSet does not contain [" + requiredFile + "]");
+            Log.debug("RelativeFileSet does not contain [" +requiredFile+ "]");
             return false;
         }
     }
@@ -123,14 +115,6 @@
         Log.verbose("\n========");
     }
 
-    public Type getType() {
-        return type;
-    }
-
-    public void setType(Type type) {
-        this.type = type;
-    }
-
     public String getMode() {
         return mode;
     }
--- a/src/jdk.packager/share/classes/jdk/packager/internal/SecondaryLauncherArguments.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/SecondaryLauncherArguments.java	Wed Oct 17 13:50:11 2018 -0400
@@ -74,7 +74,8 @@
         putUnlessNull(bundleParams,
                 Arguments.CLIOptions.WIN_SHORTCUT_HINT.getId(),
                 getOptionValue(CLIOptions.WIN_SHORTCUT_HINT));
-        putUnlessNull(bundleParams, Arguments.CLIOptions.WIN_CONSOLE_HINT.getId(),
+        putUnlessNull(bundleParams,
+                Arguments.CLIOptions.WIN_CONSOLE_HINT.getId(),
                 getOptionValue(CLIOptions.WIN_CONSOLE_HINT));
         putUnlessNull(bundleParams, Arguments.CLIOptions.SINGLETON.getId(),
                 getOptionValue(CLIOptions.SINGLETON));
--- a/src/jdk.packager/share/classes/jdk/packager/internal/StandardBundlerParam.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/StandardBundlerParam.java	Wed Oct 17 13:50:11 2018 -0400
@@ -26,6 +26,7 @@
 package jdk.packager.internal;
 
 import jdk.packager.internal.bundlers.BundleParams;
+import jdk.packager.internal.builders.AbstractAppImageBuilder;
 
 import java.io.File;
 import java.io.IOException;
@@ -55,7 +56,6 @@
 import java.util.jar.Manifest;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
-import jdk.packager.internal.builders.AbstractAppImageBuilder;
 
 public class StandardBundlerParam<T> extends BundlerParamInfo<T> {
 
@@ -146,7 +146,7 @@
                     (s, p) -> getMainJar(s, p)
             );
 
-    // TODO: remove it
+    // TODO: test CLASSPATH jar manifest Attributet 
     public static final StandardBundlerParam<String> CLASSPATH =
             new StandardBundlerParam<>(
                     I18N.getString("param.classpath.name"),
@@ -396,17 +396,6 @@
                     (s, p) -> s
             );
 
-    // TODO: remove it?
-    public static final StandardBundlerParam<String> PRELOADER_CLASS =
-            new StandardBundlerParam<>(
-                    I18N.getString("param.preloader.name"),
-                    I18N.getString("param.preloader.description"),
-                    "preloader",
-                    String.class,
-                    p -> null,
-                    null
-            );
-
     public static final StandardBundlerParam<Boolean> VERBOSE  =
             new StandardBundlerParam<>(
                     I18N.getString("param.verbose.name"),
--- a/src/jdk.packager/share/classes/jdk/packager/internal/UnsupportedPlatformException.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/UnsupportedPlatformException.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,5 +25,5 @@
 
 package jdk.packager.internal;
 
-
-public class UnsupportedPlatformException extends Exception {}
+public class UnsupportedPlatformException extends Exception {
+}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/ValidOptions.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/ValidOptions.java	Wed Oct 17 13:50:11 2018 -0400
@@ -22,6 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package jdk.packager.internal;
 
 import java.util.HashMap;
@@ -30,7 +31,6 @@
 import java.util.Set;
 import jdk.packager.internal.Arguments.CLIOptions;
 
-
 public class ValidOptions {
 
     private ValidOptions() {};
--- a/src/jdk.packager/share/classes/jdk/packager/internal/builders/AbstractAppImageBuilder.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/builders/AbstractAppImageBuilder.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,11 +25,11 @@
 
 package jdk.packager.internal.builders;
 
-
 import jdk.packager.internal.IOUtils;
-
 import jdk.packager.internal.Log;
 import jdk.packager.internal.StandardBundlerParam;
+import jdk.packager.internal.JLinkBundlerHelper;
+import jdk.packager.internal.ModFile;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -43,18 +43,16 @@
 import java.util.List;
 import java.util.Map;
 import java.util.ResourceBundle;
+import java.util.ArrayList;
 
 import static jdk.packager.internal.StandardBundlerParam.*;
 import static jdk.packager.internal.StandardBundlerParam.ARGUMENTS;
-import java.util.ArrayList;
-import jdk.packager.internal.JLinkBundlerHelper;
-import jdk.packager.internal.Module;
-
 
 public abstract class AbstractAppImageBuilder {
 
     private static final ResourceBundle I18N =
-            ResourceBundle.getBundle("jdk.packager.internal.resources.builders.AbstractAppImageBuilder");
+            ResourceBundle.getBundle(
+            "jdk.packager.internal.resources.builders.AbstractAppImageBuilder");
 
     //do not use file separator -
     // we use it for classpath lookup and there / are not platform specific
@@ -64,7 +62,8 @@
     private final Path root;
     protected List<String> excludeFileList = new ArrayList<>();
 
-    public AbstractAppImageBuilder(Map<String, Object> properties, Path root) throws IOException {
+    public AbstractAppImageBuilder(Map<String, Object> properties,
+            Path root) throws IOException {
         this.properties = properties;
         this.root = root;
         excludeFileList.add(".*\\.diz");
@@ -83,20 +82,11 @@
     }
 
     public String getExcludeFileList() {
-        String result = "";
-
-        for (String item : excludeFileList) {
-            if (!result.isEmpty()) {
-                result += ",";
-            }
-
-            result += item;
-        }
-
-        return result;
+        return String.join(",", excludeFileList);
     }
 
-    protected void copyEntry(Path appDir, File srcdir, String fname) throws IOException {
+    protected void copyEntry(Path appDir, File srcdir, String fname)
+            throws IOException {
         Path dest = appDir.resolve(fname);
         Files.createDirectories(dest.getParent());
         File src = new File(srcdir, fname);
@@ -108,8 +98,8 @@
     }
 
     protected InputStream locateResource(String publicName, String category,
-                                         String defaultName, File customFile,
-                                         boolean verbose, File publicRoot) throws IOException {
+            String defaultName, File customFile,
+            boolean verbose, File publicRoot) throws IOException {
         InputStream is = null;
         boolean customFromClasspath = false;
         boolean customFromFile = false;
@@ -131,29 +121,42 @@
         if (is == null && defaultName != null) {
             is = getResourceAsStream(defaultName);
         }
-        String msg = null;
-        if (customFromClasspath) {
-            msg = MessageFormat.format(I18N.getString("message.using-custom-resource-from-classpath"), category == null ? "" : "[" + category + "] ", publicName);
-        } else if (customFromFile) {
-            msg = MessageFormat.format(I18N.getString("message.using-custom-resource-from-file"), category == null ? "" : "[" + category + "] ", customFile.getAbsoluteFile());
-        } else if (is != null) {
-            msg = MessageFormat.format(I18N.getString("message.using-default-resource-from-classpath"), category == null ? "" : "[" + category + "] ", publicName);
-        } else {
-            msg = MessageFormat.format(I18N.getString("message.using-default-resource"), category == null ? "" : "[" + category + "] ", publicName);
-        }
         if (verbose) {
-            Log.info(msg);
+            String msg = null;
+            if (customFromClasspath) {
+                msg = MessageFormat.format(I18N.getString(
+                    "message.using-custom-resource-from-classpath"),
+                    category == null ? "" : "[" + category + "] ", publicName);
+            } else if (customFromFile) {
+                msg = MessageFormat.format(I18N.getString(
+                    "message.using-custom-resource-from-file"),
+                    category == null ? "" : "[" + category + "] ",
+                    customFile.getAbsoluteFile());
+            } else if (is != null) {
+                msg = MessageFormat.format(I18N.getString(
+                    "message.using-default-resource-from-classpath"),
+                    category == null ? "" : "[" + category + "] ", publicName);
+            } else {
+                msg = MessageFormat.format(I18N.getString(
+                    "message.using-default-resource"),
+                    category == null ? "" : "[" + category + "] ", publicName);
+            }
+            if (msg != null) {
+                Log.info(msg);
+            }
         }
         return is;
     }
 
 
     protected String preprocessTextResource(String publicName, String category,
-                                            String defaultName, Map<String, String> pairs,
-                                            boolean verbose, File publicRoot) throws IOException {
-        InputStream inp = locateResource(publicName, category, defaultName, null, verbose, publicRoot);
+            String defaultName, Map<String, String> pairs,
+            boolean verbose, File publicRoot) throws IOException {
+        InputStream inp = locateResource(publicName, category,
+                defaultName, null, verbose, publicRoot);
         if (inp == null) {
-            throw new RuntimeException("Module corrupt? No "+defaultName+" resource!");
+            throw new RuntimeException(
+                    "Module corrupt? No "+defaultName+" resource!");
         }
 
         try (InputStream is = inp) {
@@ -176,14 +179,15 @@
         }
     }
 
-    public void writeCfgFile(Map<String, ? super Object> params, File cfgFileName, String runtimeLocation) throws IOException {
+    public void writeCfgFile(Map<String, ? super Object> params,
+            File cfgFileName, String runtimeLocation) throws IOException {
         cfgFileName.delete();
 
         File mainJar = JLinkBundlerHelper.getMainJar(params);
-        Module.ModuleType mainJarType = Module.ModuleType.Unknown;
+        ModFile.ModType mainJarType = ModFile.ModType.Unknown;
 
         if (mainJar != null) {
-            mainJarType = new Module(mainJar).getModuleType();
+            mainJarType = new ModFile(mainJar).getModType();
         }
 
         String mainModule = StandardBundlerParam.MODULE.fetchFrom(params);
@@ -196,23 +200,28 @@
         out.println("app.preferences.id=" + PREFERENCES_ID.fetchFrom(params));
         out.println("app.runtime=" + runtimeLocation);
         out.println("app.identifier=" + IDENTIFIER.fetchFrom(params));
-        out.println("app.classpath=" + String.join(File.pathSeparator, CLASSPATH.fetchFrom(params).split("[ :;]")));
-        out.println("app.application.instance=" + (SINGLETON.fetchFrom(params) ? "single" : "multiple"));
+        out.println("app.classpath=" + String.join(File.pathSeparator,
+                CLASSPATH.fetchFrom(params).split("[ :;]")));
+        out.println("app.application.instance=" +
+                (SINGLETON.fetchFrom(params) ? "single" : "multiple"));
 
         // The main app is required to be a jar, modular or unnamed.
         if (mainModule != null && 
-                (mainJarType == Module.ModuleType.Unknown ||
-                mainJarType == Module.ModuleType.ModularJar)) {
+                (mainJarType == ModFile.ModType.Unknown ||
+                mainJarType == ModFile.ModType.ModularJar)) {
             out.println("app.mainmodule=" + mainModule);
         } else {
             String mainClass = JLinkBundlerHelper.getMainClass(params);
             // If the app is contained in an unnamed jar then launch it the
-            // legacy way and the main class string must be of the format com/foo/Main
+            // legacy way and the main class string must be
+            // of the format com/foo/Main
             if (mainJar != null) {
-                out.println("app.mainjar=" + mainJar.toPath().getFileName().toString());
+                out.println("app.mainjar="
+                        + mainJar.toPath().getFileName().toString());
             }
             if (mainClass != null) {
-                out.println("app.mainclass=" + mainClass.replaceAll("\\.", "/"));
+                out.println("app.mainclass="
+                        + mainClass.replaceAll("\\.", "/"));
             }
         }
 
@@ -222,12 +231,16 @@
             out.println("app.java.version=" + version);
         }
 
-        out.println("packager.java.version=" + System.getProperty("java.version"));
+        out.println("packager.java.version="
+                + System.getProperty("java.version"));
 
         Integer port = JLinkBundlerHelper.DEBUG.fetchFrom(params);
 
         if (port != null) {
-            out.println("app.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:" + port);
+            out.println(
+                    "app.debug=-agentlib:jdwp=transport=dt_socket,"
+                    + "server=y,suspend=y,address=localhost:"
+                    + port);
         }
 
         out.println();
@@ -240,16 +253,13 @@
         for (Map.Entry<String, String> property : jvmProps.entrySet()) {
             out.println("-D" + property.getKey() + "=" + property.getValue());
         }
-        String preloader = PRELOADER_CLASS.fetchFrom(params);
-        if (preloader != null) {
-            out.println("-Djavafx.preloader="+preloader);
-        }
 
         out.println();
         out.println("[ArgOptions]");
         List<String> args = ARGUMENTS.fetchFrom(params);
         for (String arg : args) {
-            if (arg.endsWith("=") && (arg.indexOf("=") == arg.lastIndexOf("="))) {
+            if (arg.endsWith("=") &&
+                    (arg.indexOf("=") == arg.lastIndexOf("="))) {
                 out.print(arg.substring(0, arg.length() - 1));
                 out.println("\\=");
             } else {
@@ -265,5 +275,4 @@
         return null;
     }
 
-    protected abstract String getCacheLocation(Map<String, ? super Object> params);
 }
--- a/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/BundleParams.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/BundleParams.java	Wed Oct 17 13:50:11 2018 -0400
@@ -27,6 +27,7 @@
 
 import jdk.packager.internal.*;
 import jdk.packager.internal.bundlers.Bundler.BundleType;
+import jdk.packager.internal.JLinkBundlerHelper;
 
 import java.io.File;
 import java.io.IOException;
@@ -37,70 +38,76 @@
 
 import static jdk.packager.internal.StandardBundlerParam.*;
 
-import jdk.packager.internal.JLinkBundlerHelper;
-
-
 public class BundleParams {
 
     final protected Map<String, ? super Object> params;
 
-    public static final String PARAM_RUNTIME                = "runtime"; // RelativeFileSet
-    public static final String PARAM_APP_RESOURCES          = "appResources"; // RelativeFileSet
-    public static final String PARAM_TYPE                   = "type"; // BundlerType
-    public static final String PARAM_BUNDLE_FORMAT          = "bundleFormat"; // String
-    public static final String PARAM_ICON                   = "icon"; // String
+    // RelativeFileSet
+    public static final String PARAM_APP_RESOURCES      = "appResources";
 
-    /* Name of bundle file and native launcher */
-    public static final String PARAM_NAME                   = "name"; // String
+    // BundlerType
+    public static final String PARAM_TYPE               = "type";
+
+    // String
+    public static final String PARAM_BUNDLE_FORMAT      = "bundleFormat";
+    // String
+    public static final String PARAM_ICON               = "icon";
 
-    /* application vendor, used by most of the bundlers */
-    public static final String PARAM_VENDOR                 = "vendor"; // String
+    // String - Name of bundle file and native launcher
+    public static final String PARAM_NAME               = "name";
 
-    /* email name and email, only used for debian */
-    public static final String PARAM_EMAIL                  = "email"; // String
+    // String - application vendor, used by most of the bundlers
+    public static final String PARAM_VENDOR             = "vendor";
 
-    /* Copyright. Used on Mac */
-    public static final String PARAM_COPYRIGHT              = "copyright"; // String
+    // String - email name and email, only used for debian */
+    public static final String PARAM_EMAIL              = "email";
 
-    /* GUID on windows for MSI, CFBundleIdentifier on Mac
-       If not compatible with requirements then bundler either do not bundle
-       or autogenerate */
-    public static final String PARAM_IDENTIFIER             = "identifier"; // String
+    /* String - Copyright. Used on Mac */
+    public static final String PARAM_COPYRIGHT          = "copyright";
 
-    /* shortcut preferences */
-    public static final String PARAM_SHORTCUT               = "shortcutHint"; // boolean
-    public static final String PARAM_MENU                   = "menuHint"; // boolean
+    // String - GUID on windows for MSI, CFBundleIdentifier on Mac
+    // If not compatible with requirements then bundler either do not bundle
+    // or autogenerate
+    public static final String PARAM_IDENTIFIER         = "identifier";
 
-    /* Application version. Format may differ for different bundlers */
-    public static final String PARAM_VERSION                = "appVersion"; // String
-    /* Application category. Used at least on Mac/Linux. Value is platform specific */
-    public static final String PARAM_CATEGORY               = "applicationCategory"; // String
+    /* boolean - shortcut preferences */
+    public static final String PARAM_SHORTCUT           = "shortcutHint";
+    // boolean - menu shortcut preference
+    public static final String PARAM_MENU               = "menuHint";
 
-    /* Optional short application */
-    public static final String PARAM_TITLE                  = "title"; // String
+    // String - Application version. Format may differ for different bundlers
+    public static final String PARAM_VERSION            = "appVersion";
 
-    /* Optional application description. Used by MSI and on Linux */
-    public static final String PARAM_DESCRIPTION            = "description"; // String
+    // String - Application category. Used at least on Mac/Linux.
+    // Value is platform specific
+    public static final String PARAM_CATEGORY       = "applicationCategory";
 
-    /* License type. Needed on Linux (rpm) */
-    public static final String PARAM_LICENSE_TYPE           = "licenseType"; // String
+    // String - Optional short application
+    public static final String PARAM_TITLE              = "title";
 
-    /* File(s) with license. Format is OS/bundler specific */
-    public static final String PARAM_LICENSE_FILE          = "licenseFile"; // List<String>
+    // String - Optional application description. Used by MSI and on Linux
+    public static final String PARAM_DESCRIPTION        = "description";
+
+    // String - License type. Needed on Linux (rpm)
+    public static final String PARAM_LICENSE_TYPE       = "licenseType";
 
-    /* service/daemon install.
-       null means "default" */
-    public static final String PARAM_SERVICE_HINT           = "serviceHint"; // Boolean
+    // List<String> - File(s) with license. Format is OS/bundler specific
+    public static final String PARAM_LICENSE_FILE       = "licenseFile";
+
+    // boolean - service/daemon install.  null means "default"
+    public static final String PARAM_SERVICE_HINT       = "serviceHint";
 
 
-    /* Main application class. Not used directly but used to derive default values */
-    public static final String PARAM_APPLICATION_CLASS      = "applicationClass"; // String
+    // String Main application class.
+    // Not used directly but used to derive default values
+    public static final String PARAM_APPLICATION_CLASS  = "applicationClass";
 
-    /* Adds a dialog to let the user choose a directory where the product will be installed. */
-    public static final String PARAM_INSTALLDIR_CHOOSER     = "installdirChooser"; // Boolean
+    // boolean - Adds a dialog to let the user choose a directory
+    // where the product will be installed.
+    public static final String PARAM_INSTALLDIR_CHOOSER = "installdirChooser";
 
-    /* Prevents from launching multiple instances of application.  */
-    public static final String PARAM_SINGLETON              = "singleton"; // Boolean
+    // boolean - Prevents from launching multiple instances of application. 
+    public static final String PARAM_SINGLETON          = "singleton";
 
     /**
      * create a new bundle with all default values
@@ -126,18 +133,17 @@
     }
 
     @SuppressWarnings("unchecked")
-    public <C> C fetchParamWithDefault(Class<C> klass, C defaultValue, String... keys) {
+    public <C> C fetchParamWithDefault(
+            Class<C> klass, C defaultValue, String... keys) {
         for (String key : keys) {
             Object o = params.get(key);
             if (klass.isInstance(o)) {
                 return (C) o;
-            }
-            else if (params.containsKey(keys) && o == null) {
+            } else if (params.containsKey(key) && o == null) {
                 return null;
+            } else if (o != null) {
+                Log.debug("Bundle param " + key + " is not type " + klass);
             }
-            //else if (o != null) {
-            //TODO log an error.
-            //}
         }
         return defaultValue;
     }
@@ -146,7 +152,7 @@
         return fetchParamWithDefault(klass, null, keys);
     }
 
-    //NOTE: we do not care about application parameters here
+    // NOTE: we do not care about application parameters here
     // as they will be embeded into jar file manifest and
     // java launcher will take care of them!
 
@@ -175,15 +181,8 @@
     }
 
     public void setStripNativeCommands(boolean value) {
-        putUnlessNull(StandardBundlerParam.STRIP_NATIVE_COMMANDS.getID(), value);
-    }
-
-    public void setDetectMods(boolean value) {
-        putUnlessNull(JLinkBundlerHelper.DETECT_MODULES.getID(), value);
-    }
-
-    public void setSrcDir(String value) {
-        putUnlessNull(SOURCE_DIR.getID(), value);
+        putUnlessNull(StandardBundlerParam.STRIP_NATIVE_COMMANDS.getID(),
+                value);
     }
 
     public void setModulePath(String value) {
@@ -222,10 +221,6 @@
         putUnlessNull(PARAM_APPLICATION_CLASS, applicationClass);
     }
 
-    public void setPrelaoderClass(String preloaderClass) {
-        putUnlessNull(PRELOADER_CLASS.getID(), preloaderClass);
-    }
-
     public String getAppVersion() {
         return fetchParam(VERSION);
     }
@@ -319,7 +314,8 @@
     //  - FX marker (jfxrt.jar)
     //  - JDK marker (tools.jar)
     private static boolean checkJDKRoot(File jdkRoot) {
-        String exe = (Platform.getPlatform() == Platform.WINDOWS) ? ".exe" : "";
+        String exe = (Platform.getPlatform() == Platform.WINDOWS) ?
+                ".exe" : "";
         File javac = new File(jdkRoot, "bin/javac" + exe);
         if (!javac.exists()) {
             Log.verbose("javac is not found at " + javac.getAbsolutePath());
@@ -328,97 +324,12 @@
 
         File jmods = new File(jdkRoot, "jmods");
         if (!jmods.exists()) {
-            // old non-modular JDKs
-            File rtJar = new File(jdkRoot, "jre/lib/rt.jar");
-            if (!rtJar.exists()) {
-                Log.verbose("rt.jar is not found at " + rtJar.getAbsolutePath());
-                return false;
-            }
-
-            File jfxJar = new File(jdkRoot, "jre/lib/ext/jfxrt.jar");
-            if (!jfxJar.exists()) {
-                //Try again with new location
-                jfxJar = new File(jdkRoot, "jre/lib/jfxrt.jar");
-                if (!jfxJar.exists()) {
-                    Log.verbose("jfxrt.jar is not found at " + jfxJar.getAbsolutePath());
-                    return false;
-                }
-            }
-
-
-            File toolsJar = new File(jdkRoot, "lib/tools.jar");
-            if (!toolsJar.exists()) {
-                Log.verbose("tools.jar is not found at " + toolsJar.getAbsolutePath());
-                return false;
-            }
+            Log.verbose("jmods is not found in " + jdkRoot.getAbsolutePath());
+            return false;
         }
         return true;
     }
 
-    //Depending on platform and user input we may get different "references"
-    //Should support
-    //   - java.home
-    //   - reference to JDK install folder
-    //   - should NOT support JRE dir
-    //Note: input could be null (then we asked to use system JRE)
-    //       or it must be valid directory
-    //Returns null on validation failure. Returns jre root if ok.
-    public static File validateRuntimeLocation(File javaHome) {
-        if (javaHome == null) {
-            return null;
-        }
-
-        File jdkRoot;
-        File rtJar = new File(javaHome, "lib/rt.jar");
-
-        if (rtJar.exists()) { //must be "java.home" case
-                              //i.e. we are in JRE folder
-            jdkRoot = javaHome.getParentFile();
-        } else { //expect it to be root of JDK installation folder
-            //On Mac it could be jdk/ or jdk/Contents/Home
-            //Norm to jdk/Contents/Home for validation
-            if (Platform.getPlatform() == Platform.MAC) {
-                File f = new File(javaHome, "Contents/Home");
-                if (f.exists() && f.isDirectory()) {
-                    javaHome = f;
-                }
-            }
-            jdkRoot = javaHome;
-        }
-
-        if (!checkJDKRoot(jdkRoot)) {
-            throw new RuntimeException(
-                    "Can not find JDK artifacts in specified location: "
-                    + javaHome.getAbsolutePath());
-        }
-
-        return new File(jdkRoot, "jre");
-    }
-
-    //select subset of given runtime using predefined rules
-    public void setRuntime(File baseDir) {
-        baseDir = validateRuntimeLocation(baseDir);
-
-        //mistake or explicit intent to use system runtime
-        if (baseDir == null) {
-            Log.verbose("No Java runtime to embed. Package will need system Java.");
-            params.put(PARAM_RUNTIME, null);
-            return;
-        }
-        doSetRuntime(baseDir);
-    }
-
-    //input dir "jdk/jre" (i.e. jre folder in the jdk)
-    private void doSetRuntime(File baseDir) {
-        params.put(PARAM_RUNTIME, baseDir.toString());
-    }
-
-    //Currently unused?
-    //
-    //public void setRuntime(RelativeFileSet fs) {
-    //       runtime = fs;
-    //}
-
     public jdk.packager.internal.RelativeFileSet getAppResource() {
         return fetchParam(APP_RESOURCES);
     }
@@ -427,7 +338,8 @@
         putUnlessNull(PARAM_APP_RESOURCES, fs);
     }
 
-    public void setAppResourcesList(List<jdk.packager.internal.RelativeFileSet> rfs) {
+    public void setAppResourcesList(
+            List<jdk.packager.internal.RelativeFileSet> rfs) {
         putUnlessNull(APP_RESOURCES_LIST.getID(), rfs);
     }
 
@@ -473,11 +385,12 @@
     private String mainJarClassPath = null;
     private boolean useFXPackaging = true;
 
-    //For regular executable Jars we need to take care of classpath
-    //For JavaFX executable jars we do not need to pay attention to ClassPath entry in manifest
+    // For regular executable Jars we need to take care of classpath
+    // For JavaFX executable jars we do not need to pay attention to
+    // ClassPath entry in manifest
     public String getAppClassPath() {
         if (mainJar == null) {
-            //this will find out answer
+            // this will find out answer
             getMainApplicationJar();
         }
         if (useFXPackaging || mainJarClassPath == null) {
@@ -486,13 +399,14 @@
         return mainJarClassPath;
     }
 
-    //assuming that application was packaged according to the rules
+    // assuming that application was packaged according to the rules
     // we must have application jar, i.e. jar where we embed launcher
     // and have main application class listed as main class!
-    //If there are more than one, or none - it will be treated as deployment error
+    // If there are more than one, or none - it will be treated as
+    // deployment error
     //
-    //Note we look for both JavaFX executable jars and regular executable jars
-    //As long as main "application" entry point is the same it is main class
+    // Note we look for both JavaFX executable jars and regular executable jars
+    // As long as main "application" entry point is the same it is main class
     // (i.e. for FX jar we will use JavaFX manifest entry ...)
     public String getMainApplicationJar() {
         jdk.packager.internal.RelativeFileSet appResources = getAppResource();
@@ -502,7 +416,8 @@
                     File srcdir = appResources.getBaseDirectory();
                     JarFile jf = new JarFile(new File(srcdir, mainJar));
                     Manifest m = jf.getManifest();
-                    Attributes attrs = (m != null) ? m.getMainAttributes() : null;
+                    Attributes attrs = (m != null) ?
+                            m.getMainAttributes() : null;
                     if (attrs != null) {
                         setApplicationClass(
                                 attrs.getValue(Attributes.Name.MAIN_CLASS));
@@ -531,7 +446,8 @@
 
                     if (javaMain) {
                         mainJar = fname;
-                        mainJarClassPath = attrs.getValue(Attributes.Name.CLASS_PATH);
+                        mainJarClassPath = attrs.getValue(
+                               Attributes.Name.CLASS_PATH);
                         return mainJar;
                     }
                 }
--- a/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/Bundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/Bundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
 
 package jdk.packager.internal.bundlers;
 
-
 public final class Bundler {
 
     private Bundler() {}
@@ -35,9 +34,6 @@
      */
     public enum BundleType {
         NONE,
-        @Deprecated
-        ALL,      // Generates all bundlers
-        NATIVE,   // Generates both app image and all installers
         IMAGE,    // Generates app image only
         INSTALLER // Generates installers
     }
@@ -45,31 +41,6 @@
     @Deprecated
     public static final class Bundle {
         public BundleType type = BundleType.NONE;
-        public String format = null;
     }
 
-    @Deprecated
-    static public Bundle stringToBundle(String value) {
-        Bundle result = new Bundle();
-
-        if (!value.isEmpty()) {
-            if ("false".equals(value) || "none".equals(value)) {
-                result.type = BundleType.NONE;
-            } else if ("all".equals(value) || "true".equals(value)) {
-                result.type = BundleType.ALL;
-            } else if ("image".equals(value)) {
-                result.type = BundleType.IMAGE;
-            } else if ("native".equals(value)) {
-                result.type = BundleType.NATIVE;
-            } else if ("installer".equals(value)) {
-                result.type = BundleType.INSTALLER;
-            } else {
-                //assume it is request to build only specific format (like exe or msi)
-                result.type = BundleType.INSTALLER;
-                result.format = (value != null) ? value.toLowerCase() : null;
-            }
-        }
-
-        return result;
-    }
 }
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.images-root.name=
 param.images-root.description=
 
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.images-root.name=
 param.images-root.description=
 
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.images-root.name=
 param.images-root.description=
 
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,8 +1,28 @@
-param.launcher-cfg-format.name=Launcher .cfg File Format
-param.launcher-cfg-format.description=The file format of the .cfg file used by the launcher executable.  Current values are 'ini' and 'prop'.
-
-error.jre-missing-file=Java Runtime does not include {0}
-error.jre-missing-file.advice=Make sure ant is using Oracle JDK 8 or later.
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
 
 error.no-application-class=Main application class is missing.
 error.no-application-class.advice=Please specify main application class.
@@ -10,12 +30,3 @@
 error.no-main-module=Main application module is missing.
 error.no-main-module.advice=Make sure to use fx\:module task to create modular application.
 
-error.app-cds-bad-version=AppCDS Not Supported in Bundled Runtime.
-error.app-cds-bad-version.advice=AppCDS support was added in 8u40.  Use an 8u40 or later Java Runtime
-
-error.app-cds-requires-runtime=AppCDS Not Supported with System Runtime.
-error.app-cds-requires-runtime.advice=AppCDS support requires that a runtime be bundled with the applicaiton.  The use of a System JRE is not supported.
-
-error.app-cds-no-commercial-unlock=AppCDS Requires Commercial Features to be Unlocked.
-error.app-cds-no-commercial-unlock.advice=Verify you have a license for commercial features for the Oracle Java Runtime the set the bundler argument 'commercialFeatures' to 'true'.
-
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,18 +1,29 @@
-param.launcher-cfg-format.name=\u30e9\u30f3\u30c1\u30e3.cfg\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f
-param.launcher-cfg-format.description=\u30e9\u30f3\u30c1\u30e3\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u308a\u4f7f\u7528\u3055\u308c\u308b.cfg\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3002\u73fe\u5728\u306e\u5024\u306f'ini'\u304a\u3088\u3073'prop'\u3067\u3059\u3002
-
-error.jre-missing-file=Java\u30e9\u30f3\u30bf\u30a4\u30e0\u306b{0}\u306f\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093
-error.jre-missing-file.advice=ant\u304cOracle JDK 8\u4ee5\u4e0a\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
 
 error.no-main-module=\u30e1\u30a4\u30f3\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002
 error.no-main-module.advice=fx:module\u30bf\u30b9\u30af\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e2\u30b8\u30e5\u30e9\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002
 
-error.app-cds-bad-version=AppCDS\u306f\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u30e9\u30f3\u30bf\u30a4\u30e0\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-error.app-cds-bad-version.advice=AppCDS\u306e\u30b5\u30dd\u30fc\u30c8\u306f8u40\u3067\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u30028u40\u4ee5\u4e0a\u306eJava\u30e9\u30f3\u30bf\u30a4\u30e0\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044
-
-error.app-cds-requires-runtime=AppCDS\u306f\u30b7\u30b9\u30c6\u30e0\u30fb\u30e9\u30f3\u30bf\u30a4\u30e0\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-error.app-cds-requires-runtime.advice=AppCDS\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u306f\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b7\u30b9\u30c6\u30e0JRE\u306e\u4f7f\u7528\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-
-error.app-cds-no-commercial-unlock=AppCDS\u306b\u306f\u3001\u5546\u7528\u6a5f\u80fd\u306e\u30ed\u30c3\u30af\u89e3\u9664\u304c\u5fc5\u8981\u3067\u3059\u3002
-error.app-cds-no-commercial-unlock.advice=\u30d0\u30f3\u30c9\u30e9\u5f15\u6570'commercialFeatures'\u3092'true'\u306b\u8a2d\u5b9a\u3057\u305fOracle Java Runtime\u306e\u5546\u7528\u6a5f\u80fd\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,18 +1,30 @@
-param.launcher-cfg-format.name=\u542f\u52a8\u7a0b\u5e8f .cfg \u6587\u4ef6\u683c\u5f0f
-param.launcher-cfg-format.description=\u542f\u52a8\u7a0b\u5e8f\u53ef\u6267\u884c\u6587\u4ef6\u4f7f\u7528\u7684 .cfg \u6587\u4ef6\u7684\u6587\u4ef6\u683c\u5f0f\u3002\u5f53\u524d\u503c\u4e3a 'ini' \u548c 'prop'\u3002
-
-error.jre-missing-file=Java \u8fd0\u884c\u65f6\u4e0d\u5305\u62ec {0}
-error.jre-missing-file.advice=\u786e\u4fdd ant \u4f7f\u7528\u7684\u662f Oracle JDK 8 \u6216\u66f4\u9ad8\u7248\u672c\u3002
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
 
 error.no-main-module=\u7f3a\u5c11\u4e3b\u5e94\u7528\u7a0b\u5e8f\u6a21\u5757\u3002
 error.no-main-module.advice=\u786e\u4fdd\u4f7f\u7528 fx:module \u4efb\u52a1\u521b\u5efa\u6a21\u5757\u5316\u5e94\u7528\u7a0b\u5e8f\u3002
 
-error.app-cds-bad-version=\u6253\u5305\u7684\u8fd0\u884c\u65f6\u4e2d\u4e0d\u652f\u6301 AppCDS\u3002
-error.app-cds-bad-version.advice=8u40 \u4e2d\u65b0\u589e\u4e86 AppCDS \u652f\u6301\u3002\u8bf7\u4f7f\u7528 8u40 \u6216\u66f4\u9ad8\u7248\u672c\u7684 Java \u8fd0\u884c\u65f6
 
-error.app-cds-requires-runtime=\u7cfb\u7edf\u8fd0\u884c\u65f6\u4e2d\u4e0d\u652f\u6301 AppCDS\u3002
-error.app-cds-requires-runtime.advice=AppCDS \u652f\u6301\u9700\u8981\u5c06\u8fd0\u884c\u65f6\u968f\u5e94\u7528\u7a0b\u5e8f\u4e00\u8d77\u6253\u5305\u3002\u4e0d\u652f\u6301\u4f7f\u7528\u7cfb\u7edf JRE\u3002
-
-error.app-cds-no-commercial-unlock=AppCDS \u9700\u8981\u5f00\u542f\u5546\u4e1a\u529f\u80fd\u3002
-error.app-cds-no-commercial-unlock.advice=\u786e\u4fdd\u60a8\u5177\u6709 Oracle Java \u8fd0\u884c\u65f6\u7684\u5546\u4e1a\u529f\u80fd\u8bb8\u53ef\u8bc1, \u5e76\u4e14\u5c06\u6253\u5305\u7a0b\u5e8f\u53c2\u6570 'commercialFeatures' \u8bbe\u7f6e\u4e3a 'true'\u3002
-
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Arguments.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Arguments.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.create-image.name=Create Image
 param.create-image.description=Creates platform-specific application image.
 
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,45 +1,41 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 MSG_Version=jpackager version
-ERR_UnknownArgument=Error: Unknown argument: {0}
-ERR_UnknownCommand=Error: Unknown command: {0}
-ERR_UnknownReason=Unknown reason
 ERR_MissingArgument=Error: Missing argument: {0}
-ERR_EmbedingLauncher=Error: Missing embedded resource [{0}]
-ERR_ContradictorySetting=Error: Ant script manifest argument ''{0}'' contradicts Ant script data type settings.
-ERR_CreatingDirFailed=Error: Failed to create directory {0}
-ERR_CreatingFileFailed=Error: Failed to create file {0}
-ERR_CreatingTempFileFailed=Error: Failed to create temporary file
-ERR_CreatingJarFailed=Error: Failed to create jar file {0}
-ERR_FileCopyFailed=Error: Failed copy file to directory {0}
-ERR_FileReadFailed=Error: Failed reading file {0}
-ERR_CantDeleteFile=Error: File {0} could not be deleted.
-ERR_MissingDirectory=Missing directory {0}
-ERR_InvalidDirectory=Invalid directory {0}
-ERR_EmptySourceDirectory=Empty source directory {0}
-ERR_MissingJavaHome=Error: Java home directory is not known.
-ERR_MissingJavaFxHome=Error: JavaFx home directory is not known.
-ERR_JavacFailed=Error: javac execution failed, exit code: {0}
-ERR_MakeAllJavacFailed=Error: compilation of java sources failed
-ERR_DeployFailed=Error: deploy failed
-ERR_InvalidStoreFile=Error: Invalid keystore file: {0}
-ERR_SignFailed=Error: Signing failed
 ERR_MissingAppResources=Error: No application jars found
-ERR_NoEmbeddedDT=Error: -includedt requires the java deployment toolkit, which is not included in this distribution
 ERR_AppImageNotExist=Error: App image directory "{0}" does not exist
 ERR_AppImageInvalid=Error: App image directory "{0}" is invalid and does not contain "app" and/or "runtime" sub-directories
 ERR_NoSecondaryLauncherName=Secondary Launchers require a name parameter.
 ERR_NoUniqueName=Secondary Launchers require a unique name parameter.
 ERR_NoJreInstallerName=Jre Installers require a name parameter.
 
-MSG_UpdatingJar=Updating jar file\: {0}
-MSG_NoJREPackaged=Package is configured to ship without a JRE.
-MSG_UserProvidedJRE=Using base JDK at\: {0}
-MSG_UseSystemJRE=No base JDK. Package will use system JRE.
 MSG_BundlerFailed=Error: Bundler "{1}" ({0}) failed to produce a bundle.
 MSG_BundlerPlatformException=Bundler {0} skipped because the bundler does not support bundling on this platform.
 MSG_BundlerConfigException=Bundler {0} skipped because of a configuration problem\: {1}  \n\
 Advice to fix\: {2}
 MSG_BundlerConfigExceptionNoAdvice=Bundler {0} skipped because of a configuration problem\: {1}
 MSG_BundlerRuntimeException=Bundler {0} failed because of {1}
-MSG_JarNoSelfCopy=Skip jar copy to itself\: {0}
-MSG_EnterKeystorePassword=Enter Passphrase for keystore:
-MSG_EnterKeyPassword=Enter key password for %s:
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,39 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 MSG_Version=Java\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3
-ERR_UnknownArgument=\u30A8\u30E9\u30FC: \u4E0D\u660E\u306A\u5F15\u6570: {0}
-ERR_UnknownCommand=\u30A8\u30E9\u30FC: \u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: {0}
-ERR_UnknownReason=\u7406\u7531\u306F\u4E0D\u660E\u3067\u3059
 ERR_MissingArgument=\u30A8\u30E9\u30FC: \u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093: {0}
-ERR_EmbedingLauncher=\u30A8\u30E9\u30FC: \u57CB\u8FBC\u307F\u30EA\u30BD\u30FC\u30B9[{0}]\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-ERR_ContradictorySetting=\u30A8\u30E9\u30FC: Ant\u30B9\u30AF\u30EA\u30D7\u30C8\u30FB\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5F15\u6570''{0}''\u306F\u3001Ant\u30B9\u30AF\u30EA\u30D7\u30C8\u30FB\u30C7\u30FC\u30BF\u578B\u8A2D\u5B9A\u3068\u77DB\u76FE\u3057\u3066\u3044\u307E\u3059\u3002
-ERR_CreatingDirFailed=\u30A8\u30E9\u30FC: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_CreatingFileFailed=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_CreatingTempFileFailed=\u30A8\u30E9\u30FC: \u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_CreatingJarFailed=\u30A8\u30E9\u30FC: jar\u30D5\u30A1\u30A4\u30EB{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_FileCopyFailed=\u30A8\u30E9\u30FC: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3078\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30B3\u30D4\u30FC\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_FileReadFailed=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_CantDeleteFile=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
-ERR_MissingDirectory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-ERR_InvalidDirectory=\u7121\u52B9\u306A\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}
-ERR_EmptySourceDirectory=\u30BD\u30FC\u30B9\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u7A7A\u3067\u3059
-ERR_MissingJavaHome=\u30A8\u30E9\u30FC: Java\u30DB\u30FC\u30E0\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u4E0D\u660E\u3067\u3059\u3002
-ERR_MissingJavaFxHome=\u30A8\u30E9\u30FC: JavaFx\u30DB\u30FC\u30E0\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u4E0D\u660E\u3067\u3059\u3002
-ERR_JavacFailed=\u30A8\u30E9\u30FC: javac\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u7D42\u4E86\u30B3\u30FC\u30C9: {0}
-ERR_MakeAllJavacFailed=\u30A8\u30E9\u30FC: java\u30BD\u30FC\u30B9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_DeployFailed=\u30A8\u30E9\u30FC: \u30C7\u30D7\u30ED\u30A4\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_InvalidStoreFile=\u30A8\u30E9\u30FC: \u7121\u52B9\u306A\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB: {0}
-ERR_SignFailed=\u30A8\u30E9\u30FC: \u7F72\u540D\u306B\u5931\u6557\u3057\u307E\u3057\u305F
 ERR_MissingAppResources=\u30A8\u30E9\u30FC: \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3jar\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F
-ERR_NoEmbeddedDT=\u30A8\u30E9\u30FC: -includedt\u306B\u306F\u3001\u3053\u306E\u914D\u5E03\u306B\u542B\u307E\u308C\u3066\u3044\u306A\u3044Java Deployment Toolkit\u304C\u5FC5\u8981\u3067\u3059
 
-MSG_UpdatingJar=jar\u30D5\u30A1\u30A4\u30EB\u306E\u66F4\u65B0\u4E2D: {0}
-MSG_NoJREPackaged=\u30D1\u30C3\u30B1\u30FC\u30B8\u306FJRE\u306A\u3057\u3067\u63D0\u4F9B\u3059\u308B\u3088\u3046\u69CB\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002
-MSG_UserProvidedJRE=\u6B21\u306B\u3042\u308B\u30D9\u30FC\u30B9JDK\u3092\u4F7F\u7528: {0}
-MSG_UseSystemJRE=\u30D9\u30FC\u30B9JDK\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u30B7\u30B9\u30C6\u30E0JRE\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002
 MSG_BundlerFailed=\u30A8\u30E9\u30FC: \u30D0\u30F3\u30C9\u30E9"{1}" ({0})\u304C\u30D0\u30F3\u30C9\u30EB\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002
 MSG_BundlerPlatformException=\u30D0\u30F3\u30C9\u30E9{0}\u306F\u3053\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306E\u30D0\u30F3\u30C9\u30EB\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F\u3002
 MSG_BundlerConfigException=\u69CB\u6210\u306E\u554F\u984C\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F: {1}  \n\u6B21\u306E\u4FEE\u6B63\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044: {2}
 MSG_BundlerConfigExceptionNoAdvice=\u69CB\u6210\u306E\u554F\u984C\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F: {1}
 MSG_BundlerRuntimeException={1}\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u5931\u6557\u3057\u307E\u3057\u305F
-MSG_JarNoSelfCopy=\u81EA\u8EAB\u3078\u306Ejar\u306E\u30B3\u30D4\u30FC\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3059: {0}
-MSG_EnterKeystorePassword=\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:
-MSG_EnterKeyPassword=%s\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,39 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 MSG_Version=Java \u6253\u5305\u7A0B\u5E8F\u7248\u672C
-ERR_UnknownArgument=\u9519\u8BEF: \u672A\u77E5\u53C2\u6570: {0}
-ERR_UnknownCommand=\u9519\u8BEF: \u672A\u77E5\u547D\u4EE4: {0}
-ERR_UnknownReason=\u672A\u77E5\u539F\u56E0
 ERR_MissingArgument=\u9519\u8BEF: \u7F3A\u5C11\u53C2\u6570: {0}
-ERR_EmbedingLauncher=\u9519\u8BEF: \u7F3A\u5C11\u5D4C\u5165\u8D44\u6E90 [{0}]
-ERR_ContradictorySetting=\u9519\u8BEF: Ant \u811A\u672C\u6E05\u5355\u53C2\u6570 ''{0}'' \u4E0E Ant \u811A\u672C\u6570\u636E\u7C7B\u578B\u8BBE\u7F6E\u51B2\u7A81\u3002
-ERR_CreatingDirFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u76EE\u5F55 {0}
-ERR_CreatingFileFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6 {0}
-ERR_CreatingTempFileFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u4E34\u65F6\u6587\u4EF6
-ERR_CreatingJarFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA jar \u6587\u4EF6 {0}
-ERR_FileCopyFailed=\u9519\u8BEF: \u65E0\u6CD5\u5C06\u6587\u4EF6\u590D\u5236\u5230\u76EE\u5F55 {0}
-ERR_FileReadFailed=\u9519\u8BEF: \u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6 {0}
-ERR_CantDeleteFile=\u9519\u8BEF: \u65E0\u6CD5\u5220\u9664\u6587\u4EF6 {0}\u3002
-ERR_MissingDirectory=\u7F3A\u5C11\u76EE\u5F55 {0}
-ERR_InvalidDirectory=\u76EE\u5F55 {0} \u65E0\u6548
-ERR_EmptySourceDirectory=\u6E90\u76EE\u5F55 {0} \u4E3A\u7A7A
-ERR_MissingJavaHome=\u9519\u8BEF: Java \u4E3B\u76EE\u5F55\u672A\u77E5\u3002
-ERR_MissingJavaFxHome=\u9519\u8BEF: JavaFx \u4E3B\u76EE\u5F55\u672A\u77E5\u3002
-ERR_JavacFailed=\u9519\u8BEF: javac \u6267\u884C\u5931\u8D25, \u9000\u51FA\u4EE3\u7801: {0}
-ERR_MakeAllJavacFailed=\u9519\u8BEF: java \u6E90\u7F16\u8BD1\u5931\u8D25
-ERR_DeployFailed=\u9519\u8BEF: \u90E8\u7F72\u5931\u8D25
-ERR_InvalidStoreFile=\u9519\u8BEF: \u65E0\u6548\u5BC6\u94A5\u5E93\u6587\u4EF6: {0}
-ERR_SignFailed=\u9519\u8BEF: \u7B7E\u540D\u5931\u8D25
 ERR_MissingAppResources=\u9519\u8BEF: \u627E\u4E0D\u5230\u5E94\u7528\u7A0B\u5E8F jar
-ERR_NoEmbeddedDT=\u9519\u8BEF: -includedt \u9700\u8981 java \u90E8\u7F72\u5DE5\u5177\u5305, \u4F46\u6B64\u5206\u53D1\u4E2D\u672A\u5305\u542B
 
-MSG_UpdatingJar=\u66F4\u65B0 Jar \u6587\u4EF6: {0}
-MSG_NoJREPackaged=\u7A0B\u5E8F\u5305\u914D\u7F6E\u4E3A\u5728\u53D1\u8FD0\u65F6\u4E0D\u5E26 JRE\u3002
-MSG_UserProvidedJRE=\u4F7F\u7528\u4EE5\u4E0B\u4F4D\u7F6E\u7684\u57FA\u7840 JDK: {0}
-MSG_UseSystemJRE=\u6CA1\u6709\u57FA\u7840 JDK\u3002\u7A0B\u5E8F\u5305\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE\u3002
 MSG_BundlerFailed=\u9519\u8BEF: \u6253\u5305\u7A0B\u5E8F "{1}" ({0}) \u65E0\u6CD5\u751F\u6210\u5305\u3002
 MSG_BundlerPlatformException=\u7531\u4E8E\u6253\u5305\u7A0B\u5E8F{0}\u4E0D\u652F\u6301\u5728\u6B64\u5E73\u53F0\u4E0A\u6253\u5305, \u56E0\u6B64\u5C06\u5176\u8DF3\u8FC7\u3002
 MSG_BundlerConfigException=\u7531\u4E8E\u914D\u7F6E\u95EE\u9898, \u8DF3\u8FC7\u4E86\u6253\u5305\u7A0B\u5E8F{0}: {1}  \n\u4FEE\u590D\u5EFA\u8BAE: {2}
 MSG_BundlerConfigExceptionNoAdvice=\u7531\u4E8E\u914D\u7F6E\u95EE\u9898, \u8DF3\u8FC7\u4E86\u6253\u5305\u7A0B\u5E8F{0}: {1}
 MSG_BundlerRuntimeException=\u7531\u4E8E{1}, \u6253\u5305\u7A0B\u5E8F{0}\u5931\u8D25
-MSG_JarNoSelfCopy=\u8DF3\u8FC7 jar \u590D\u5236\u5230\u81EA\u8EAB: {0}
-MSG_EnterKeystorePassword=\u8F93\u5165\u5BC6\u94A5\u5E93\u7684\u5BC6\u7801\u77ED\u8BED:
-MSG_EnterKeyPassword=\u8F93\u5165%s\u7684\u5BC6\u94A5\u53E3\u4EE4:
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/CLIHelp.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/CLIHelp.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 MSG_Help_common=Usage: jpackager <mode> <options>\n\
 \n\
 where mode is one of: \n\
@@ -30,139 +56,135 @@
 Generates a Server JRE installer.\n\
 \n\
 The following options are valid for all platforms:\n\
-\  --help -i \n\
+\  --help -h \n\
 \          Shows the usage text, followed by a list and description of each valid option for the current platform and the given mode.\n\
 \          If no mode is given, shows the usage text, followed by a list and description of each valid option for the current platform.\n\
 \          When this option is used, all other options are ignored.\n\
-\  --output -o\n\
+\  --output -o <output dir>\n\
 \          Name of the directory where generated output file is placed.\n\
-\  --input -i\n\
+\  --input -i <input dir>\n\
 \          Name of the base directory that contains the files to package.\n\
-\  --files -f\n\
+\  --files -f <input files>\n\
 \          List of files in the base directory. If omitted, all files from "input"\n\
 \          directory (which is a mandatory argument in this case) will be packaged.\n\
-\  --name -n\n\
+\  --name -n <application name>\n\
 \          Name of the application.\n\
-\  --main-jar -j\n\
+\  --main-jar -j <main jar name>\n\
 \          The main JAR of the application. This JAR should have the main-class,\n\
 \          and is relative to the assembled application directory.\n\
-\  --class -c\n\
+\  --class -c <class name>\n\
 \          Qualified name of the application class to execute.\n\
-\  --version -v\n\
+\  --version -v <version string>\n\
 \          Version of the application.\n\
-\  --arguments -a\n\
+\  --arguments -a <main class arguments>\n\
 \          Command line arguments to pass to the main class if no arguments\n\
 \          are specified by the launcher.\n\
-\  --icon\n\
+\  --icon <icon file name>\n\
 \          Icon of the application bundle.\n\
 \  --singleton\n\
 \          Prevents multiple instances of the application from launching\n\
 \          (see SingleInstanceService API for more details).\n\
-\  --identifier\n\
+\  --identifier <id string>\n\
 \          Machine readable identifier of the application. The format\n\
 \          must be a DNS name in reverse order, such as com.example.myapplication.\n\
-\          The identifier is used for composing Single Instance unique id and\n\
-\          calculating preferences node to search for User JVM Options\n\
-\          (the format is a slash delimited version of the main package name,\n\
-\          such as "com/example/myapplication"), see UserJvmOptionsService API\n\
-\          for more details.\n\
+\          The identifier is used for composing Single Instance unique id.\n\
 \  --verbose\n\
 \          Enables verbose output.\n\
 \  --strip-native-commands\n\
 \          Removes native executables from the custom run-time images.\n\
-\  --jvm-args\n\
+\  --jvm-args <java vm arguments>\n\
 \          JVM flags and options to pass to the application.\n\
-\  --file-associations\n\
+\  --file-associations <file path>\n\
 \          Properties file that contains list of key=value parameters that\n\
 \          describe a file association. "extension", "mime-type", "icon",\n\
 \          "description" can be used as keys for the association.\n\
-\  --secondary-launcher\n\
+\  --secondary-launcher <file path>\n\
 \          Properties file that contains a collection of options for a secondary launcher.\n\
-\  --build-root\n\
+\  --build-root <file path>\n\
 \          Directory in which to use and place temporary files.\n\
-\  --runtime-image\n\
+\  --runtime-image <file path>\n\
 \          Location of the predefined runtime image that is used to build\n\
 \          an application image and installable package.\n\
-\  --app-image\n\
+\  --app-image <file path>\n\
 \          Location of the predefined application image that is used to build\n\
 \          an installable package.\n\
-\  --install-dir\n\
+\  --install-dir <file path>\n\
 \          Installation directory of the application. Ignored on Windows, use\n\
-\          \u2013-win-dir-chooser to provide an ability to choose an installation directory.\n\
+\          --win-dir-chooser to provide an ability to choose an installation directory.\n\
 \  --echo-mode\n\
 \          Outputs (without executing) native packaging commands so that users\n\
 \          can use this as a starting point for addressing more complex needs.\n\
-\  --license-file\n\
+\  --license-file <file name>\n\
 \          The license file, relative to the base directory.\n\
-\  --copyright\n\
+\  --copyright <copyright string>\n\
 \          Copyright for the application.\n\
-\  --description\n\
+\  --description <description string>\n\
 \          Description of the application.\n\
-\  --category\n\
+\  --category <category string>\n\
 \          Category or group of the application.\n\
-\  --vendor\n\
+\  --vendor <vendor string>\n\
 \          Vendor of the application.\n\
 \n\
 Modular options:\n\
-\  --module -m\n\
+\  --module -m <module name>\n\
 \          Main module of the application. This module must have the main-class,\n\
 \          and be on the module path.\n\
-\  --module-path -p\n\
+\  --module-path -p <module path>\n\
 \          When packaging the Java Runtime, this is the path JLink looks in for modules.\n\
-\  --add-modules\n\
+\  --add-modules <module list>\n\
 \          List of modules to add to JImage creation, including possible services.\n\
-\  --limit-modules\n\
+\  --limit-modules <module list>\n\
 \          Modules to limit JImage creation to.\n\
 
 MSG_Help_mac=\nThe following options are valid for Mac OS X platforms:\n\
 \  --mac-sign\n\
 \          Request that the bundle be signed.\n\
-\  --mac-bundle-name\n\
+\  --mac-bundle-name <name string>\n\
 \          Name of the application as it appears in the Menu Bar. This can be\n\
 \          different from the application name. This name must be less than 16\n\
 \          characters long and be suitable for displaying in the menu bar and\n\
-\          the application Info window.\n\
-\  --mac-bundle-identifier\n\
+\          the application Info window. Defaults to the application name.\n\
+\  --mac-bundle-identifier <ID string>\n\
 \          An identifier that uniquely identifies the application for MacOSX\n\
 \          (and on the Mac App Store).  May only use alphanumeric (A-Z,a-z,0-9),\n\
 \          hyphen (-), and period (.) characters.\n\
-\  --mac-app-store-category\n\
+\  --mac-app-store-category <category string>\n\
 \          Mac App Store Categories. 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\n\
+\  --mac-app-store-entitlements <file path>\n\
 \          File location of a custom mac app store entitlements file.\n\
-\  --mac-bundle-signing-prefix\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 an existing bundle identifier.\n\
-\  --mac-signing-key-user-name\n\
+\  --mac-signing-key-user-name <user name>\n\
 \          User name portion of the typical "Mac Developer ID Application: <user name>" signing key.\n\
-\  --mac-signing-keychain\n\
+\  --mac-signing-keychain <file path>\n\
 \          Location of the keychain to use. If not specified, the standard keychains are used.\n\
 
 MSG_Help_linux=\nThe following options are valid for Linux platforms:\n\
-\  --linux-bundle-name\n\
-\          Name for Linux bundle.\n\
+\  --linux-bundle-name <bundle name>\n\
+\          Name for Linux bundle. Defaults to the application name.\n\
 \  --linux-package-deps\n\
 \          Required packages or capabilities for the application.\n\
-\  --linux-rpm-license-type\n\
+\  --linux-rpm-license-type <type string>\n\
 \          Type of the license ("License: <value>" of the RPM .spec).\n\
-\  --linux-deb-maintainer\n\
+\  --linux-deb-maintainer <email address>\n\
 \          Maintainer for .deb bundle.\n\
 
 MSG_Help_win=\nThe following options are valid for Windows platforms:\n\
 \  --win-menu\n\
 \          Adds the application to the system menu.\n\
-\  --win-menu-group\n\
+\  --win-menu-group <menu group name>\n\
 \          Start Menu group this application is placed in.\n\
 \  --win-per-user-install\n\
 \          Request to perform an install on a per-user basis.\n\
 \  --win-dir-chooser\n\
 \          Adds a dialog to enable the user to choose a directory in which\n\
 \          the product is installed.\n\
-\  --win-registry-name\n\
+\  --win-registry-name <registry name>\n\
 \          Name of the application for registry references. Default is\n\
 \          the Application Name with only alphanumerics, dots, and dashes (no whitespace).\n\
-\  --win-upgrade-uuid\n\
+\  --win-upgrade-uuid <id string>\n\
 \          UUID associated with upgrades for this package.\n\
 \  --win-shortcut\n\
 \          Creates a desktop shortcut for the application.\n\
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,8 +1,28 @@
-param.detect-modules.name=Auto Modules
-param.detect-modules.description=Automatically calculate modules to Limit JImage creation to.
-
-param.jlink-options.name=JLink Options
-param.jlink-options.description=Options to be added to JLink invocation.
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
 
 param.jlink-builder.name=JLink Builder
 param.jlink-builder.description=Name of the JLink Builder to build the applicaiton image with.
@@ -14,4 +34,3 @@
 message.detected.modules="Automatically adding detected modules: {0}."
 message.modules="Adding modules: {0} to runtime image."
 
-using.experimental.feature="Using experimental feature: {0}."
\ No newline at end of file
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,8 +1,28 @@
-param.detect-modules.name=\u81EA\u52D5\u30E2\u30B8\u30E5\u30FC\u30EB
-param.detect-modules.description=JImage\u306E\u4F5C\u6210\u3092\u5236\u9650\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u81EA\u52D5\u7684\u306B\u8A08\u7B97\u3057\u307E\u3059\u3002
-
-param.jlink-options.name=JLink\u30AA\u30D7\u30B7\u30E7\u30F3
-param.jlink-options.description=JLink\u306E\u8D77\u52D5\u306B\u8FFD\u52A0\u3055\u308C\u308B\u30AA\u30D7\u30B7\u30E7\u30F3
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
 
 param.jlink-builder.name=JLink\u30D3\u30EB\u30C0\u30FC
 param.jlink-builder.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8\u3092\u4F5C\u6210\u3059\u308BJLink\u30D3\u30EB\u30C0\u30FC\u306E\u540D\u524D
@@ -14,4 +34,3 @@
 message.detected.modules="\u691C\u51FA\u3055\u308C\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059: {0}."
 message.modules="\u30E2\u30B8\u30E5\u30FC\u30EB: {0}\u3092\u30E9\u30F3\u30BF\u30A4\u30E0\u30FB\u30A4\u30E1\u30FC\u30B8\u306B\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059\u3002"
 
-using.experimental.feature="\u8A66\u9A13\u7684\u306A\u6A5F\u80FD\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059: {0}\u3002"
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,8 +1,28 @@
-param.detect-modules.name=\u81EA\u52A8\u6A21\u5757
-param.detect-modules.description=\u81EA\u52A8\u8BA1\u7B97\u6A21\u5757\u4EE5\u5C06 JImage \u521B\u5EFA\u64CD\u4F5C\u9650\u5236\u4E3A\u8FD9\u4E9B\u6A21\u5757\u3002
-
-param.jlink-options.name=JLink \u9009\u9879
-param.jlink-options.description=\u8981\u6DFB\u52A0\u5230 JLink \u8C03\u7528\u7684\u9009\u9879\u3002
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
 
 param.jlink-builder.name=JLink Builder
 param.jlink-builder.description=\u7528\u4E8E\u6784\u5EFA\u5E94\u7528\u7A0B\u5E8F\u6620\u50CF\u7684 JLink Builder \u7684\u540D\u79F0\u3002
@@ -13,5 +33,3 @@
 
 message.detected.modules="\u6B63\u5728\u81EA\u52A8\u6DFB\u52A0\u68C0\u6D4B\u5230\u7684\u6A21\u5757: {0}\u3002"
 message.modules="\u6B63\u5728\u5C06\u6A21\u5757 {0} \u6DFB\u52A0\u5230\u8FD0\u884C\u65F6\u6620\u50CF\u3002"
-
-using.experimental.feature="\u6B63\u5728\u4F7F\u7528\u8BD5\u9A8C\u529F\u80FD: {0}\u3002"
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.app-name.name=App Name
 param.app-name.description=The name of the application.
 
@@ -76,12 +102,6 @@
 param.preferences-id.name=Preferences ID
 param.preferences-id.description=The preferences node to search for User JVM Options.  The format be a slash delimited version of the main package name, such as "com/example/myapplication".
 
-param.preloader.name=JavaFX Preloader Class Name
-param.preloader.description=For JavaFX applications only, this is the Fully Qualified Class Name of the preloader class.  This class needs to exist in the classpath, preferably early in the path.
-
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle.  The default value is the current JRE running the bundler.  A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
 param.title.name=Title
 param.title.description=A title for the application.
 
@@ -126,18 +146,6 @@
 param.fa-description.name=File Association Description
 param.fa-description.description=The description to be used for associated files.  The default is "<appName> File".
 
-param.commercial-features.name=Unlock Commercial Features
-param.commercial-features.description=Some options require commercial features to be unlocked.  This must be passed in as true to unlock those features.  Otherwise they will be ignored.
-
-param.com-app-cds.name=Enable AppCDS
-param.com-app-cds.description=Enabled and package with Application Class Data Sharing, including generation of .jsa file.
-
-param.com-app-cds-cache-mode.name=AppCDS Cache Mode
-param.com-app-cds-cache-mode.description=The mode in which the AppCDS .jpa files are generated and cached.  Current values are 'install', 'auto', and 'auto+install'.
-
-param.com-app-cds-root.name=AppCDS Root Classes
-param.com-app-cds-root.description=List of "root classes" for AppCDS to generate class sharing data from.  Default is the main class.
-
 param.source-dir.name=Source Directory
 param.source-dir.description=Path to the directory containing the files to be bundled.
 
@@ -171,7 +179,6 @@
 message.runtime-image-dir-does-not-exist=Specified runtime image directory {0}\: {1} does not exists
 message.runtime-image-dir-does-not-exist.advice=Confirm that the value for {0} exists
 
-error.required-parameter={0} is a required parameter.
 error.no-main-class-with-main-jar=An application class was not specified nor was one found in the jar {0}
 error.no-main-class-with-main-jar.advice=Please specify a applicationClass or ensure that the jar {0} specifies one in the manifest.
 error.no-main-class-with-classpath=An application class was not specified nor was one found in the supplied classpath
@@ -181,7 +188,4 @@
 error.main-jar-does-not-exist=The configured main jar does not exist {0}
 error.main-jar-does-not-exist.advice=The main jar must be specified relative to the app resources (not an absolute path), and must exist within those resources.
 
-message.fx-app-does-not-match-specified-main=The jar {0} has an FX Application class{1} that does not match the declared main {2}
-message.main-class-does-not-match-specified-main=The jar {0} has a main class {1} that does not match the declared main {2}
-
 warning.no.jdk.modules.found=Warning: No JDK Modules found.
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.app-name.name=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D
 param.app-name.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u540D\u524D\u3002
 
@@ -86,12 +112,6 @@
 param.preferences-id.name=\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9ID
 param.preferences-id.description=\u30E6\u30FC\u30B6\u30FC\u306EJVM\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u691C\u7D22\u3059\u308B\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u30FB\u30CE\u30FC\u30C9\u3002\u5F62\u5F0F\u306F\u3001"com/example/myapplication"\u306A\u3069\u3001\u30E1\u30A4\u30F3\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u306E\u30B9\u30E9\u30C3\u30B7\u30E5\u533A\u5207\u308A\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u3059\u3002
 
-param.preloader.name=JavaFX\u30D7\u30EC\u30ED\u30FC\u30C0\u30FC\u30FB\u30AF\u30E9\u30B9\u540D
-param.preloader.description=JavaFX\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u307F\u306E\u5834\u5408\u3001\u30D7\u30EC\u30ED\u30FC\u30C0\u30FC\u30FB\u30AF\u30E9\u30B9\u306E\u5B8C\u5168\u4FEE\u98FE\u540D\u3067\u3059\u3002\u3053\u306E\u30AF\u30E9\u30B9\u306F\u30AF\u30E9\u30B9\u30D1\u30B9(\u53EF\u80FD\u306A\u5834\u5408\u306F\u30D1\u30B9\u306E\u524D\u306E\u65B9)\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
 param.system-wide.name=\u30B7\u30B9\u30C6\u30E0\u5168\u4F53
 param.system-wide.description=\u3053\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306F\u3001\u305D\u308C\u81EA\u4F53\u3092\u30B7\u30B9\u30C6\u30E0\u5168\u4F53\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3001\u307E\u305F\u306F\u5404\u30E6\u30FC\u30B6\u30FC\u306B\u5BFE\u3057\u3066\u306E\u307F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3002Null\u306F\u30B7\u30B9\u30C6\u30E0\u30FB\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3092\u610F\u5473\u3057\u307E\u3059\u3002
 
@@ -133,18 +153,6 @@
 param.fa-description.name=\u30D5\u30A1\u30A4\u30EB\u30FB\u30A2\u30BD\u30B7\u30A8\u30FC\u30B7\u30E7\u30F3\u306E\u8AAC\u660E
 param.fa-description.description=\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306B\u4F7F\u7528\u3059\u308B\u8AAC\u660E\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F"<appName>\u30D5\u30A1\u30A4\u30EB"\u3067\u3059\u3002
 
-param.commercial-features.name=\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u89E3\u9664
-param.commercial-features.description=\u4E00\u90E8\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u3092\u89E3\u9664\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u3092\u89E3\u9664\u3059\u308B\u306B\u306F\u3001true\u3068\u3057\u3066\u6E21\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u305D\u3046\u3067\u306A\u3044\u5834\u5408\u306F\u7121\u8996\u3055\u308C\u307E\u3059\u3002
-
-param.com-app-cds.name=AppCDS\u306E\u6709\u52B9\u5316
-param.com-app-cds.description=\u6709\u52B9\u5316\u3055\u308C\u3001.jsa\u30D5\u30A1\u30A4\u30EB\u306E\u751F\u6210\u3092\u542B\u3080\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u5171\u6709\u3092\u542B\u3081\u3066\u30D1\u30C3\u30B1\u30FC\u30B8\u30F3\u30B0\u3057\u307E\u3059\u3002
-
-param.com-app-cds-cache-mode.name=AppCDS\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB\u30E2\u30FC\u30C9
-param.com-app-cds-cache-mode.description=AppCDS .jpa\u30D5\u30A1\u30A4\u30EB\u304C\u751F\u6210\u304A\u3088\u3073\u30AD\u30E3\u30C3\u30B7\u30E5\u3055\u308C\u308B\u30E2\u30FC\u30C9\u3002\u73FE\u5728\u306E\u5024\u306F'install'\u3001'auto'\u304A\u3088\u3073'auto+install'\u3067\u3059\u3002
-
-param.com-app-cds-root.name=AppCDS\u30EB\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9
-param.com-app-cds-root.description=\u30AF\u30E9\u30B9\u5171\u6709\u30C7\u30FC\u30BF\u3092\u751F\u6210\u3059\u308BAppCDS\u306E"\u30EB\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9"\u306E\u30EA\u30B9\u30C8\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3067\u3059\u3002
-
 param.source-dir.name=\u30BD\u30FC\u30B9\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
 param.source-dir.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3080\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3078\u306E\u30D1\u30B9\u3002
 
@@ -163,7 +171,6 @@
 param.main.module.name=\u30E1\u30A4\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB
 param.main.module.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306Fmain-class\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u4E0A\u306B\u3042\u308A\u307E\u3059\u3002
 
-error.required-parameter={0}\u306F\u5FC5\u9808\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u3059\u3002
 error.no-main-class-with-main-jar=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u304B\u3063\u305F\u304B\u3001jar {0}\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F
 error.no-main-class-with-main-jar.advice=applicationClass\u3092\u6307\u5B9A\u3059\u308B\u304B\u3001jar {0}\u304C\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306EapplicationClass\u3092\u6307\u5B9A\u3057\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
 error.no-main-class-with-classpath=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u304B\u3063\u305F\u304B\u3001\u6307\u5B9A\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F
@@ -173,7 +180,4 @@
 error.main-jar-does-not-exist=\u69CB\u6210\u3055\u308C\u305F\u30E1\u30A4\u30F3jar\u306F{0}\u306B\u5B58\u5728\u3057\u307E\u305B\u3093
 error.main-jar-does-not-exist.advice=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30EA\u30BD\u30FC\u30B9\u306B\u5BFE\u3057\u3066\u76F8\u5BFE\u7684\u306B(\u7D76\u5BFE\u30D1\u30B9\u3067\u306F\u306A\u3044)\u30E1\u30A4\u30F3jar\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u3001\u305D\u306E\u30EA\u30BD\u30FC\u30B9\u5185\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
 
-message.fx-app-does-not-match-specified-main=jar {0}\u306B\u306F\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u30E1\u30A4\u30F3{2}\u3068\u4E00\u81F4\u3057\u306A\u3044FX\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9{1}\u304C\u3042\u308A\u307E\u3059
-message.main-class-does-not-match-specified-main=jar {0}\u306B\u306F\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u30E1\u30A4\u30F3{2}\u3068\u4E00\u81F4\u3057\u306A\u3044\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{1}\u304C\u3042\u308A\u307E\u3059
-
 warning.no.jdk.modules.found=\u8B66\u544A: JDK\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.app-name.name=\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0
 param.app-name.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u540D\u79F0\u3002
 
@@ -86,12 +112,6 @@
 param.preferences-id.name=\u9996\u9009 ID
 param.preferences-id.description=\u5728\u5176\u4E2D\u641C\u7D22\u7528\u6237 JVM \u9009\u9879\u7684\u9996\u9009\u8282\u70B9\u3002\u5176\u683C\u5F0F\u5E94\u4E3A\u4E3B\u7A0B\u5E8F\u5305\u540D\u79F0\u4EE5\u659C\u6760\u5206\u9694\u7684\u7248\u672C, \u4F8B\u5982 "com/example/myapplication"\u3002
 
-param.preloader.name=JavaFX \u9884\u52A0\u8F7D\u5668\u7C7B\u540D
-param.preloader.description=\u4EC5\u7528\u4E8E JavaFX \u5E94\u7528\u7A0B\u5E8F, \u8FD9\u662F\u9884\u52A0\u8F7D\u5668\u7C7B\u7684\u5168\u9650\u5B9A\u7C7B\u540D\u3002\u7C7B\u8DEF\u5F84\u4E2D\u5FC5\u987B\u5B58\u5728\u6B64\u7C7B, \u6700\u597D\u662F\u5728\u8DEF\u5F84\u524D\u7AEF\u3002
-
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
 param.system-wide.name=\u7CFB\u7EDF\u8303\u56F4
 param.system-wide.description=\u6B64\u5E94\u7528\u7A0B\u5E8F\u662F\u5E94\u5C1D\u8BD5\u5728\u7CFB\u7EDF\u8303\u56F4\u5185\u5B89\u88C5, \u8FD8\u662F\u4EC5\u4E3A\u6BCF\u4E2A\u7528\u6237\u5B89\u88C5? \u7A7A\u503C\u8868\u793A\u4F7F\u7528\u7CFB\u7EDF\u9ED8\u8BA4\u503C\u3002
 
@@ -133,18 +153,6 @@
 param.fa-description.name=\u6587\u4EF6\u5173\u8054\u8BF4\u660E
 param.fa-description.description=\u7528\u4E8E\u6240\u5173\u8054\u6587\u4EF6\u7684\u8BF4\u660E\u3002\u9ED8\u8BA4\u503C\u4E3A "<appName> \u6587\u4EF6"\u3002
 
-param.commercial-features.name=\u5F00\u542F\u5546\u4E1A\u529F\u80FD
-param.commercial-features.description=\u4E00\u4E9B\u9009\u9879\u9700\u8981\u5F00\u542F\u5546\u4E1A\u529F\u80FD\u3002\u8FD9\u5FC5\u987B\u4F20\u5165 true \u6765\u5F00\u542F\u8FD9\u4E9B\u529F\u80FD\u3002\u5426\u5219\u5C06\u5FFD\u7565\u3002
-
-param.com-app-cds.name=\u542F\u7528 AppCDS
-param.com-app-cds.description=\u542F\u7528\u5E94\u7528\u7A0B\u5E8F\u7C7B\u6570\u636E\u5171\u4EAB\u529F\u80FD\u5E76\u6253\u5305, \u5305\u62EC\u751F\u6210 .jsa \u6587\u4EF6\u3002
-
-param.com-app-cds-cache-mode.name=AppCDS \u9AD8\u901F\u7F13\u5B58\u6A21\u5F0F
-param.com-app-cds-cache-mode.description=\u751F\u6210\u548C\u9AD8\u901F\u7F13\u5B58 AppCDS .jpa \u6587\u4EF6\u7684\u6A21\u5F0F\u3002\u5F53\u524D\u503C\u4E3A 'install', 'auto' \u548C 'auto+install'\u3002
-
-param.com-app-cds-root.name=AppCDS \u6839\u7C7B
-param.com-app-cds-root.description=\u4ECE\u5176\u4E2D\u751F\u6210\u7C7B\u5171\u4EAB\u6570\u636E\u7684 AppCDS \u7684 "\u6839\u7C7B" \u5217\u8868\u3002\u9ED8\u8BA4\u503C\u4E3A\u4E3B\u7C7B\u3002
-
 param.source-dir.name=\u6E90\u76EE\u5F55
 param.source-dir.description=\u5305\u542B\u8981\u6253\u5305\u6587\u4EF6\u7684\u76EE\u5F55\u8DEF\u5F84\u3002
 
@@ -163,7 +171,6 @@
 param.main.module.name=\u4E3B\u6A21\u5757
 param.main.module.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u4E3B\u6A21\u5757\u3002\u6B64\u6A21\u5757\u5E94\u5177\u6709\u4E3B\u7C7B, \u5E76\u4E14\u4F4D\u4E8E\u6A21\u5757\u8DEF\u5F84\u4E0A\u3002
 
-error.required-parameter={0} \u662F\u5FC5\u9700\u7684\u53C2\u6570\u3002
 error.no-main-class-with-main-jar=\u672A\u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u7C7B, \u5728 jar {0} \u4E2D\u4E5F\u672A\u627E\u5230\u5E94\u7528\u7A0B\u5E8F\u7C7B
 error.no-main-class-with-main-jar.advice=\u8BF7\u6307\u5B9A applicationClass \u6216\u786E\u4FDD jar {0} \u5728\u6E05\u5355\u4E2D\u6307\u5B9A\u4E00\u4E2A\u3002
 error.no-main-class-with-classpath=\u672A\u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u7C7B, \u5728\u63D0\u4F9B\u7684\u7C7B\u8DEF\u5F84\u4E2D\u4E5F\u672A\u627E\u5230\u5E94\u7528\u7A0B\u5E8F\u7C7B
@@ -173,7 +180,4 @@
 error.main-jar-does-not-exist=\u914D\u7F6E\u7684\u4E3B jar \u4E0D\u5B58\u5728 {0}
 error.main-jar-does-not-exist.advice=\u4E3B jar \u5FC5\u987B\u76F8\u5BF9\u4E8E\u5E94\u7528\u7A0B\u5E8F\u8D44\u6E90\u6307\u5B9A (\u4E0D\u662F\u7EDD\u5BF9\u8DEF\u5F84), \u5E76\u4E14\u5FC5\u987B\u5B58\u5728\u4E8E\u8FD9\u4E9B\u8D44\u6E90\u4E2D\u3002
 
-message.fx-app-does-not-match-specified-main=jar {0} \u5177\u6709\u4E0E\u6240\u58F0\u660E\u4E3B {2} \u4E0D\u5339\u914D\u7684 FX \u5E94\u7528\u7A0B\u5E8F\u7C7B {1}
-message.main-class-does-not-match-specified-main=jar {0} \u5177\u6709\u4E0E\u6240\u58F0\u660E\u4E3B {2} \u4E0D\u5339\u914D\u7684\u4E3B\u7C7B {1}
-
 warning.no.jdk.modules.found=\u8B66\u544A: \u672A\u627E\u5230 JDK \u6A21\u5757\u3002
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 message.using-default-resource=Using default package resource {0} (add {1} to the class path to customize)
 message.using-custom-resource-from-file=Using custom package resource {0} (loaded from file {1})
 message.using-custom-resource-from-classpath=Using custom package resource {0} (loaded from {1})
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 message.using-default-resource=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528({1}\u3092\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306B\u8FFD\u52A0\u3057\u3066\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA)
 message.using-custom-resource-from-file=\u30AB\u30B9\u30BF\u30E0\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528(\u30D5\u30A1\u30A4\u30EB{1}\u304B\u3089\u30ED\u30FC\u30C9\u6E08)
 message.using-custom-resource-from-classpath=\u30AB\u30B9\u30BF\u30E0\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528({1}\u304B\u3089\u30ED\u30FC\u30C9\u6E08)
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 message.using-default-resource=\u4F7F\u7528\u9ED8\u8BA4\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u5C06 {1} \u6DFB\u52A0\u5230\u7C7B\u8DEF\u5F84\u4EE5\u5B9A\u5236)
 message.using-custom-resource-from-file=\u4F7F\u7528\u5B9A\u5236\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u4ECE\u6587\u4EF6 {1} \u52A0\u8F7D)
 message.using-custom-resource-from-classpath=\u4F7F\u7528\u5B9A\u5236\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u4ECE {1} \u52A0\u8F7D)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/jre.module.list	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,56 @@
+; This file contains a list of all modules in a modular JDK that match a JRE.
+
+java.base
+java.compiler
+java.datatransfer
+java.xml
+java.prefs
+java.desktop
+java.instrument
+java.logging
+java.management
+java.security.sasl
+java.naming
+java.rmi
+java.management.rmi
+java.net.http
+java.scripting
+java.security.jgss
+java.transaction.xa
+java.sql
+java.sql.rowset
+java.xml.crypto
+java.se
+java.smartcardio
+jdk.internal.jvmstat
+jdk.attach
+jdk.charsets
+jdk.compiler
+jdk.crypto.ec
+jdk.crypto.cryptoki
+jdk.dynalink
+jdk.httpserver
+jdk.internal.le
+jdk.internal.opt
+jdk.internal.vm.ci
+jdk.management
+jdk.unsupported
+jdk.internal.vm.compiler
+jdk.internal.vm.compiler.management
+jdk.jartool
+jdk.jcmd
+jdk.jdwp.agent
+jdk.jdi
+jdk.jsobject
+jdk.jstatd
+jdk.localedata
+jdk.management.agent
+jdk.naming.dns
+jdk.naming.rmi
+jdk.net
+jdk.scripting.nashorn
+jdk.sctp
+jdk.security.auth
+jdk.security.jgss
+jdk.xml.dom
+jdk.zipfs
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/server.jre.list	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-; This file contains a list of all modules in a modular JDK that match a JRE.
-
-java.base
-java.compiler
-java.datatransfer
-java.xml
-java.prefs
-java.desktop
-java.instrument
-java.logging
-java.management
-java.security.sasl
-java.naming
-java.rmi
-java.management.rmi
-java.net.http
-java.scripting
-java.security.jgss
-java.transaction.xa
-java.sql
-java.sql.rowset
-java.xml.crypto
-java.se
-java.smartcardio
-jdk.internal.jvmstat
-jdk.attach
-jdk.charsets
-jdk.compiler
-jdk.crypto.ec
-jdk.crypto.cryptoki
-jdk.dynalink
-jdk.httpserver
-jdk.internal.le
-jdk.internal.opt
-jdk.internal.vm.ci
-jdk.management
-jdk.unsupported
-jdk.internal.vm.compiler
-jdk.internal.vm.compiler.management
-jdk.jartool
-jdk.jcmd
-jdk.jdwp.agent
-jdk.jdi
-jdk.jsobject
-jdk.jstatd
-jdk.localedata
-jdk.management.agent
-jdk.naming.dns
-jdk.naming.rmi
-jdk.net
-jdk.scripting.nashorn
-jdk.sctp
-jdk.security.auth
-jdk.security.jgss
-jdk.xml.dom
-jdk.zipfs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/classes/jdk/packager/main/Main.java	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.packager.main;
+
+import jdk.packager.internal.Arguments;
+import jdk.packager.internal.Log;
+import jdk.packager.internal.CLIHelp;
+import java.io.PrintWriter;
+import java.util.ResourceBundle;
+
+public class Main {
+
+    private static final ResourceBundle bundle =
+            ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle");
+
+    private static final String version = bundle.getString("MSG_Version")
+            + " " + System.getProperty("java.version") + "\n";
+
+    /**
+     * main(String... args)
+     * This is the entry point for the jpackager tool.
+     *
+     * @param args command line arguments
+     */
+    public static void main(String... args) throws Exception {
+        // Create logger with default system.out and system.err
+        Log.Logger logger = new Log.Logger(false);
+        Log.setLogger(logger);
+
+        int status = run(args);
+        System.exit(status);
+    }
+
+    /**
+     * run() - this is the entry point for the ToolProvider API.
+     *
+     * @param out output stream
+     * @param err error output stream
+     * @param args command line arguments
+     * @return an exit code. 0 means success, non-zero means an error occurred.
+     */
+    public static int run(PrintWriter out, PrintWriter err, String... args)
+            throws Exception {
+        // Create logger with provided streams
+        Log.Logger logger = new Log.Logger(false);
+        logger.setPrintWriter(out, err);
+        Log.setLogger(logger);
+
+        int status = run(args);
+        Log.flush();
+        return status;
+    }
+
+    private static int run(String... args) throws Exception {
+        if (args.length == 0) {
+            CLIHelp.showHelp(true);
+        } else if (hasHelp(args)){
+            CLIHelp.showHelp(false);
+        } else if (args.length == 1 && args[0].equals("--version")) {
+            Log.info(version);
+        } else {
+            try {
+                Arguments arguments = new Arguments(args);
+                arguments.processArguments();
+            } catch (Exception e) {
+                if (Arguments.verbose()) {
+                    Log.verbose(e);
+                } else {
+                    Log.error(e.getMessage());
+                    if (e.getCause() != null && e.getCause() != e) {
+                        Log.error(e.getCause().getMessage());
+                    }
+                }
+                return -1;
+            }
+        }
+
+        return 0;
+    }
+
+    private static boolean hasHelp(String[] args) {
+        for (String a : args) {
+            if ("--help".equals(a) || "-h".equals(a)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}
--- a/src/jdk.packager/share/classes/module-info.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/module-info.java	Wed Oct 17 13:50:11 2018 -0400
@@ -26,15 +26,10 @@
 /**
  * Defines the Java packager tool, jpackager.
  *
- * <p>The jpackager is a tool for generating bundles for self-contained applications.
- * It can be located under the name {@code "jpackager"} using the {@link ToolProvider}, for example:
- * <pre>{@code
- * ToolProvider jpackager = ToolProvider.findFirst("jpackager").orElseThrow(...);
- * jpackager.run(...);
- * }</pre>
+ * <p>jpackager is a tool for generating self-contained application bundles.
  *
  * @moduleGraph
- * @since 11
+ * @since 12
  */
 
 module jdk.packager {
@@ -51,5 +46,5 @@
         jdk.packager.internal.BasicBundlers;
 
     provides java.util.spi.ToolProvider
-        with jdk.packager.internal.JavaPackagerToolProvider;
+        with jdk.packager.internal.JPackagerToolProvider;
 }
--- a/src/jdk.packager/share/native/library/common/Exports.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Exports.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -28,7 +28,7 @@
 #include "PlatformString.h"
 #include "PropertyFile.h"
 #include "Lock.h"
-#include "Java.h"
+#include "JavaTypes.h"
 
 #include "jni.h"
 
@@ -60,7 +60,8 @@
         jstring result = NULL;
 
         Package& package = Package::GetInstance();
-        OrderedMap<TString, TString> defaultuserargs = package.GetDefaultJVMUserArgs();
+        OrderedMap<TString, TString> defaultuserargs =
+                package.GetDefaultJVMUserArgs();
         TString loption = PlatformString(env, option).toString();
 
         TString temp;
@@ -84,7 +85,8 @@
         Package& package = Package::GetInstance();
 
         try {
-            result = MapKeysToJObjectArray(env, package.GetDefaultJVMUserArgs());
+            result = MapKeysToJObjectArray(
+                    env, package.GetDefaultJVMUserArgs());
         }
         catch (const JavaException&) {
         }
@@ -114,7 +116,8 @@
         return result;
     }
 
-    static void _setUserJvmKeysAndValues(JNIEnv *env, jobjectArray options, jobjectArray values) {
+    static void _setUserJvmKeysAndValues(
+                JNIEnv *env, jobjectArray options, jobjectArray values) {
         if (env == NULL || options == NULL || values == NULL)
             return;
 
@@ -126,8 +129,10 @@
             JavaStringArray lvalues(env, values);
 
             for (unsigned int index = 0; index < loptions.Count(); index++) {
-                TString name = PlatformString(env, loptions.GetValue(index)).toString();
-                TString value = PlatformString(env, lvalues.GetValue(index)).toString();
+                TString name = PlatformString(
+                        env, loptions.GetValue(index)).toString();
+                TString value = PlatformString(
+                        env, lvalues.GetValue(index)).toString();
                 newMap.Append(name, value);
             }
         }
@@ -158,23 +163,34 @@
 
 
 extern "C" {
-    JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue(JNIEnv *env, jclass klass, jstring option) {
+    JNIEXPORT jstring JNICALL
+            Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue(
+            JNIEnv *env, jclass klass, jstring option) {
         return UserJVMArgsExports::_getUserJvmOptionDefaultValue(env, option);
     }
 
-    JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys(JNIEnv *env, jclass klass) {
+    JNIEXPORT jobjectArray JNICALL
+            Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys(
+            JNIEnv *env, jclass klass) {
         return UserJVMArgsExports::_getUserJvmOptionDefaultKeys(env);
     }
 
-    JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue(JNIEnv *env, jclass klass, jstring option) {
+    JNIEXPORT jstring JNICALL
+             Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue(
+             JNIEnv *env, jclass klass, jstring option) {
         return UserJVMArgsExports::_getUserJvmOptionValue(env, option);
     }
 
-    JNIEXPORT void JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues(JNIEnv *env, jclass klass, jobjectArray options, jobjectArray values) {
+    JNIEXPORT void JNICALL
+            Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues(
+            JNIEnv *env, jclass klass, jobjectArray options,
+            jobjectArray values) {
         UserJVMArgsExports::_setUserJvmKeysAndValues(env, options, values);
     }
 
-    JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys(JNIEnv *env, jclass klass) {
+    JNIEXPORT jobjectArray JNICALL
+            Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys(
+        JNIEnv *env, jclass klass) {
         return UserJVMArgsExports::_getUserJvmOptionKeys(env);
     }
 }
@@ -209,10 +225,12 @@
 //   }
 // }
 //
-// The call to isdebugger() will wait until a native debugger is attached. The process
-// identifier (pid) will be printed to the console for you to attach your debugger to.
+// The call to isdebugger() will wait until a native debugger is attached.
+// The process identifier (pid) will be printed to the console
+// for you to attach your debugger to.
 extern "C" {
-    JNIEXPORT jboolean JNICALL Java_com_DebugExports_isdebugged(JNIEnv *env, jclass klass) {
+    JNIEXPORT jboolean JNICALL Java_com_DebugExports_isdebugged(
+            JNIEnv *env, jclass klass) {
         jboolean result = false;
         Package& package = Package::GetInstance();
 
@@ -224,7 +242,8 @@
         return result;
     }
 
-    JNIEXPORT jint JNICALL Java_com_DebugExports_getpid(JNIEnv *env, jclass klass) {
+    JNIEXPORT jint JNICALL Java_com_DebugExports_getpid(
+            JNIEnv *env, jclass klass) {
         Platform& platform = Platform::GetInstance();
         return platform.GetProcessID();
     }
--- a/src/jdk.packager/share/native/library/common/Exports.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Exports.h	Wed Oct 17 13:50:11 2018 -0400
@@ -37,40 +37,45 @@
  * Method:    _getUserJvmOptionDefaultValue
  * Signature: (Ljava/lang/String;)Ljava/lang/String;
  */
-JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue
-  (JNIEnv *, jclass, jstring);
+JNIEXPORT jstring JNICALL
+        Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue(
+        JNIEnv *, jclass, jstring);
 
 /*
  * Class:     jdk_packager_services_userjvmoptions_LauncherUserJvmOptions
  * Method:    _getUserJvmOptionDefaultKeys
  * Signature: ()[Ljava/lang/String;
  */
-JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys
-  (JNIEnv *, jclass);
+JNIEXPORT jobjectArray JNICALL
+        Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys(
+        JNIEnv *, jclass);
 
 /*
  * Class:     jdk_packager_services_userjvmoptions_LauncherUserJvmOptions
  * Method:    _getUserJvmOptionValue
  * Signature: (Ljava/lang/String;)Ljava/lang/String;
  */
-JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue
-  (JNIEnv *, jclass, jstring);
+JNIEXPORT jstring JNICALL
+        Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue(
+        JNIEnv *, jclass, jstring);
 
 /*
  * Class:     jdk_packager_services_userjvmoptions_LauncherUserJvmOptions
  * Method:    _setUserJvmKeysAndValues
  * Signature: ([Ljava/lang/String;[Ljava/lang/String;)V
  */
-JNIEXPORT void JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues
-  (JNIEnv *, jclass, jobjectArray, jobjectArray);
+JNIEXPORT void JNICALL
+        Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues(
+        JNIEnv *, jclass, jobjectArray, jobjectArray);
 
 /*
  * Class:     jdk_packager_services_userjvmoptions_LauncherUserJvmOptions
  * Method:    _getUserJvmOptionKeys
  * Signature: ()[Ljava/lang/String;
  */
-JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys
-  (JNIEnv *, jclass);
+JNIEXPORT jobjectArray JNICALL
+        Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys(
+        JNIEnv *, jclass);
 
 #ifdef __cplusplus
 }
--- a/src/jdk.packager/share/native/library/common/FilePath.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/FilePath.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -30,11 +30,11 @@
 
 #ifdef WINDOWS
 #include <ShellAPI.h>
-#endif //WINDOWS
+#endif // WINDOWS
 
 #ifdef POSIX
 #include <sys/stat.h>
-#endif //POSIX
+#endif // POSIX
 
 
 bool FilePath::FileExists(const TString FileName) {
@@ -54,14 +54,15 @@
 
         FindClose(handle);
     }
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     struct stat buf;
 
-    if ((stat(StringToFileSystemString(FileName), &buf) == 0) && (S_ISREG(buf.st_mode) != 0)) {
+    if ((stat(StringToFileSystemString(FileName), &buf) == 0) &&
+            (S_ISREG(buf.st_mode) != 0)) {
         result = true;
     }
-#endif //POSIX
+#endif // POSIX
     return result;
 }
 
@@ -79,20 +80,21 @@
 
         FindClose(handle);
     }
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     struct stat buf;
 
-    if ((stat(StringToFileSystemString(DirectoryName), &buf) == 0) && (S_ISDIR(buf.st_mode) != 0)) {
+    if ((stat(StringToFileSystemString(DirectoryName), &buf) == 0) &&
+            (S_ISDIR(buf.st_mode) != 0)) {
         result = true;
     }
-#endif //POSIX
+#endif // POSIX
     return result;
 }
 
 #ifdef WINDOWS
 std::string GetLastErrorAsString() {
-    //Get the error message, if any.
+    // Get the error message, if any.
     DWORD errorMessageID = ::GetLastError();
 
     if (errorMessageID == 0) {
@@ -100,8 +102,10 @@
     }
 
     LPSTR messageBuffer = NULL;
-    size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
-                                 NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
+    size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER
+            | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+            NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL,
+            SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
 
     std::string message(messageBuffer, size);
 
@@ -110,7 +114,7 @@
 
     return message;
 }
-#endif //WINDOWS
+#endif // WINDOWS
 
 bool FilePath::DeleteFile(const TString FileName) {
     bool result = false;
@@ -125,12 +129,12 @@
         }
 
         result = ::DeleteFile(lFileName.data()) == TRUE;
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
         if (unlink(StringToFileSystemString(FileName)) == 0) {
             result = true;
         }
-#endif //POSIX
+#endif // POSIX
     }
 
     return result;
@@ -145,25 +149,26 @@
         TString directoryName = FixPathForPlatform(DirectoryName);
         DynamicBuffer<TCHAR> lDirectoryName(directoryName.size() + 2);
         memcpy(lDirectoryName.GetData(), directoryName.data(), (directoryName.size() + 2) * sizeof(TCHAR));
-        lDirectoryName[directoryName.size() + 1] = NULL; // Double null terminate for SHFileOperation.
+        lDirectoryName[directoryName.size() + 1] = NULL;
+        // Double null terminate for SHFileOperation.
 
         // Delete the folder and everything inside.
         fos.wFunc = FO_DELETE;
         fos.pFrom = lDirectoryName.GetData();
         fos.fFlags = FOF_NO_UI;
         result = SHFileOperation(&fos) == 0;
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
         if (unlink(StringToFileSystemString(DirectoryName)) == 0) {
             result = true;
         }
-#endif //POSIX
+#endif // POSIX
     }
 
     return result;
 }
 
-TString FilePath::IncludeTrailingSeparater(const TString value) {
+TString FilePath::IncludeTrailingSeparator(const TString value) {
     TString result = value;
 
     if (value.size() > 0) {
@@ -178,14 +183,14 @@
     return result;
 }
 
-TString FilePath::IncludeTrailingSeparater(const char* value) {
+TString FilePath::IncludeTrailingSeparator(const char* value) {
     TString lvalue = PlatformString(value).toString();
-    return IncludeTrailingSeparater(lvalue);
+    return IncludeTrailingSeparator(lvalue);
 }
 
-TString FilePath::IncludeTrailingSeparater(const wchar_t* value) {
+TString FilePath::IncludeTrailingSeparator(const wchar_t* value) {
     TString lvalue = PlatformString(value).toString();
-    return IncludeTrailingSeparater(lvalue);
+    return IncludeTrailingSeparator(lvalue);
 }
 
 TString FilePath::ExtractFilePath(TString Path) {
@@ -195,10 +200,10 @@
     if (slash != TString::npos)
         result = Path.substr(0, slash);
     return result;
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     return dirname(StringToFileSystemString(Path));
-#endif //POSIX
+#endif // POSIX
 }
 
 TString FilePath::ExtractFileExt(TString Path) {
@@ -221,10 +226,10 @@
         result = Path.substr(slash + 1, Path.size() - slash - 1);
 
     return result;
-#endif // WINDOWS
+#endif //  WINDOWS
 #ifdef POSIX
     return basename(StringToFileSystemString(Path));
-#endif //POSIX
+#endif // POSIX
 }
 
 TString FilePath::ChangeFileExt(TString Path, TString Extension) {
@@ -244,7 +249,8 @@
 
 TString FilePath::FixPathForPlatform(TString Path) {
     TString result = Path;
-    std::replace(result.begin(), result.end(), BAD_TRAILING_PATHSEPARATOR, TRAILING_PATHSEPARATOR);
+    std::replace(result.begin(), result.end(),
+            BAD_TRAILING_PATHSEPARATOR, TRAILING_PATHSEPARATOR);
 #ifdef WINDOWS
     // The maximum path that does not require long path prefix. On Windows the
     // maximum path is 260 minus 1 (NUL) but for directories it is 260 minus
@@ -268,7 +274,8 @@
 
 TString FilePath::FixPathSeparatorForPlatform(TString Path) {
     TString result = Path;
-    std::replace(result.begin(), result.end(), BAD_PATH_SEPARATOR, PATH_SEPARATOR);
+    std::replace(result.begin(), result.end(),
+            BAD_PATH_SEPARATOR, PATH_SEPARATOR);
     return result;
 }
 
@@ -289,7 +296,8 @@
         lpath = ExtractFilePath(lpath);
     }
 
-    for (std::list<TString>::iterator iterator = paths.begin(); iterator != paths.end(); iterator++) {
+    for (std::list<TString>::iterator iterator = paths.begin();
+            iterator != paths.end(); iterator++) {
         lpath = *iterator;
 
 #ifdef WINDOWS
@@ -301,7 +309,7 @@
             mode |= S_IRWXG | S_IROTH | S_IXOTH;
         }
         if (mkdir(StringToFileSystemString(lpath), mode) == 0) {
-#endif //POSIX
+#endif // POSIX
             result = true;
         }
         else {
@@ -323,7 +331,7 @@
 #endif // POSIX
 }
 
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
 
 #include <algorithm>
 
@@ -339,8 +347,9 @@
 #ifdef WINDOWS
     DWORD attributes = 0;
 
-    for (std::vector<FileAttribute>::const_iterator iterator = FAttributes.begin();
-         iterator != FAttributes.end(); iterator++) {
+    for (std::vector<FileAttribute>::const_iterator iterator =
+            FAttributes.begin();
+        iterator != FAttributes.end(); iterator++) {
         switch (*iterator) {
             case faArchive: {
                 attributes = attributes & FILE_ATTRIBUTE_ARCHIVE;
@@ -366,10 +375,6 @@
                 attributes = attributes & FILE_ATTRIBUTE_HIDDEN;
                 break;
             }
-//            case faIntegrityStream: {
-//                attributes = attributes & FILE_ATTRIBUTE_INTEGRITY_STREAM;
-//                break;
-//            }
             case faNormal: {
                 attributes = attributes & FILE_ATTRIBUTE_NORMAL;
                 break;
@@ -378,10 +383,6 @@
                 attributes = attributes & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
                 break;
             }
-//            case faNoScrubData: {
-//                attributes = attributes & FILE_ATTRIBUTE_NO_SCRUB_DATA;
-//                break;
-//            }
             case faOffline: {
                 attributes = attributes & FILE_ATTRIBUTE_OFFLINE;
                 break;
@@ -420,8 +421,9 @@
 #ifdef POSIX
     mode_t attributes = 0;
 
-    for (std::vector<FileAttribute>::const_iterator iterator = FAttributes.begin();
-         iterator != FAttributes.end(); iterator++) {
+    for (std::vector<FileAttribute>::const_iterator iterator =
+            FAttributes.begin();
+        iterator != FAttributes.end(); iterator++) {
         switch (*iterator) {
             case faBlockSpecial: {
                 attributes |= S_IFBLK;
@@ -516,7 +518,7 @@
     if (chmod(FFileName.data(), attributes) == 0) {
         result = true;
     }
-#endif //POSIX
+#endif // POSIX
 
     return result;
 }
@@ -542,23 +544,57 @@
     if (attributes != INVALID_FILE_ATTRIBUTES) {
         result = true;
 
-        if (attributes | FILE_ATTRIBUTE_ARCHIVE) { FAttributes.push_back(faArchive); }
-        if (attributes | FILE_ATTRIBUTE_COMPRESSED) { FAttributes.push_back(faCompressed); }
-        if (attributes | FILE_ATTRIBUTE_DEVICE) { FAttributes.push_back(faDevice); }
-        if (attributes | FILE_ATTRIBUTE_DIRECTORY) { FAttributes.push_back(faDirectory); }
-        if (attributes | FILE_ATTRIBUTE_ENCRYPTED) { FAttributes.push_back(faEncrypted); }
-        if (attributes | FILE_ATTRIBUTE_HIDDEN) { FAttributes.push_back(faHidden); }
-        //if (attributes | FILE_ATTRIBUTE_INTEGRITY_STREAM) { FAttributes.push_back(faIntegrityStream); }
-        if (attributes | FILE_ATTRIBUTE_NORMAL) { FAttributes.push_back(faNormal); }
-        if (attributes | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) { FAttributes.push_back(faNotContentIndexed); }
-        //if (attributes | FILE_ATTRIBUTE_NO_SCRUB_DATA) { FAttributes.push_back(faNoScrubData); }
-        if (attributes | FILE_ATTRIBUTE_SYSTEM) { FAttributes.push_back(faSystem); }
-        if (attributes | FILE_ATTRIBUTE_OFFLINE) { FAttributes.push_back(faOffline); }
-        if (attributes | FILE_ATTRIBUTE_REPARSE_POINT) { FAttributes.push_back(faSymbolicLink); }
-        if (attributes | FILE_ATTRIBUTE_SPARSE_FILE) { FAttributes.push_back(faSparceFile); }
-        if (attributes | FILE_ATTRIBUTE_READONLY ) { FAttributes.push_back(faReadOnly); }
-        if (attributes | FILE_ATTRIBUTE_TEMPORARY) { FAttributes.push_back(faTemporary); }
-        if (attributes | FILE_ATTRIBUTE_VIRTUAL) { FAttributes.push_back(faVirtual); }
+        if (attributes | FILE_ATTRIBUTE_ARCHIVE) {
+            FAttributes.push_back(faArchive);
+        }
+        if (attributes | FILE_ATTRIBUTE_COMPRESSED) {
+            FAttributes.push_back(faCompressed);
+        }
+        if (attributes | FILE_ATTRIBUTE_DEVICE) {
+            FAttributes.push_back(faDevice);
+        }
+        if (attributes | FILE_ATTRIBUTE_DIRECTORY) {
+            FAttributes.push_back(faDirectory);
+        }
+        if (attributes | FILE_ATTRIBUTE_ENCRYPTED) {
+            FAttributes.push_back(faEncrypted);
+        }
+        if (attributes | FILE_ATTRIBUTE_HIDDEN) {
+            FAttributes.push_back(faHidden);
+        }
+        // if (attributes | FILE_ATTRIBUTE_INTEGRITY_STREAM) {
+        //     FAttributes.push_back(faIntegrityStream);
+        // }
+        if (attributes | FILE_ATTRIBUTE_NORMAL) {
+            FAttributes.push_back(faNormal);
+        }
+        if (attributes | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) {
+            FAttributes.push_back(faNotContentIndexed);
+        }
+        // if (attributes | FILE_ATTRIBUTE_NO_SCRUB_DATA) {
+        //     FAttributes.push_back(faNoScrubData);
+        // }
+        if (attributes | FILE_ATTRIBUTE_SYSTEM) {
+            FAttributes.push_back(faSystem);
+        }
+        if (attributes | FILE_ATTRIBUTE_OFFLINE) {
+            FAttributes.push_back(faOffline);
+        }
+        if (attributes | FILE_ATTRIBUTE_REPARSE_POINT) {
+            FAttributes.push_back(faSymbolicLink);
+        }
+        if (attributes | FILE_ATTRIBUTE_SPARSE_FILE) {
+            FAttributes.push_back(faSparceFile);
+        }
+        if (attributes | FILE_ATTRIBUTE_READONLY ) {
+            FAttributes.push_back(faReadOnly);
+        }
+        if (attributes | FILE_ATTRIBUTE_TEMPORARY) {
+            FAttributes.push_back(faTemporary);
+        }
+        if (attributes | FILE_ATTRIBUTE_VIRTUAL) {
+            FAttributes.push_back(faVirtual);
+        }
     }
 #endif // WINDOWS
 #ifdef POSIX
@@ -567,47 +603,80 @@
     if (stat(StringToFileSystemString(FFileName), &status) == 0) {
         result = true;
 
-        if (S_ISBLK(status.st_mode) != 0) { FAttributes.push_back(faBlockSpecial); }
-        if (S_ISCHR(status.st_mode) != 0) { FAttributes.push_back(faCharacterSpecial); }
-        if (S_ISFIFO(status.st_mode) != 0) { FAttributes.push_back(faFIFOSpecial); }
-        if (S_ISREG(status.st_mode) != 0) { FAttributes.push_back(faNormal); }
-        if (S_ISDIR(status.st_mode) != 0) { FAttributes.push_back(faDirectory); }
-        if (S_ISLNK(status.st_mode) != 0) { FAttributes.push_back(faSymbolicLink); }
-        if (S_ISSOCK(status.st_mode) != 0) { FAttributes.push_back(faSocket); }
+        if (S_ISBLK(status.st_mode) != 0) {
+            FAttributes.push_back(faBlockSpecial);
+        }
+        if (S_ISCHR(status.st_mode) != 0) {
+            FAttributes.push_back(faCharacterSpecial);
+        }
+        if (S_ISFIFO(status.st_mode) != 0) {
+            FAttributes.push_back(faFIFOSpecial);
+        }
+        if (S_ISREG(status.st_mode) != 0) {
+            FAttributes.push_back(faNormal);
+        }
+        if (S_ISDIR(status.st_mode) != 0) {
+            FAttributes.push_back(faDirectory);
+        }
+        if (S_ISLNK(status.st_mode) != 0) {
+            FAttributes.push_back(faSymbolicLink);
+        }
+        if (S_ISSOCK(status.st_mode) != 0) {
+            FAttributes.push_back(faSocket);
+        }
 
         // Owner
         if (S_ISRUSR(status.st_mode) != 0) {
-            if (S_ISWUSR(status.st_mode) != 0) { FAttributes.push_back(faReadWrite); }
-            else { FAttributes.push_back(faReadOnly); }
+            if (S_ISWUSR(status.st_mode) != 0) {
+                FAttributes.push_back(faReadWrite);
+            } else {
+                FAttributes.push_back(faReadOnly);
+            }
+        } else if (S_ISWUSR(status.st_mode) != 0) {
+            FAttributes.push_back(faWriteOnly);
         }
-        else if (S_ISWUSR(status.st_mode) != 0) { FAttributes.push_back(faWriteOnly); }
 
-        if (S_ISXUSR(status.st_mode) != 0) { FAttributes.push_back(faExecute); }
+        if (S_ISXUSR(status.st_mode) != 0) {
+            FAttributes.push_back(faExecute);
+        }
 
         // Group
         if (S_ISRGRP(status.st_mode) != 0) {
-            if (S_ISWGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupReadWrite); }
-            else { FAttributes.push_back(faGroupReadOnly); }
+            if (S_ISWGRP(status.st_mode) != 0) {
+                FAttributes.push_back(faGroupReadWrite);
+            } else {
+                FAttributes.push_back(faGroupReadOnly);
+            }
+        } else if (S_ISWGRP(status.st_mode) != 0) {
+            FAttributes.push_back(faGroupWriteOnly);
         }
-        else if (S_ISWGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupWriteOnly); }
 
-        if (S_ISXGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupExecute); }
+        if (S_ISXGRP(status.st_mode) != 0) {
+            FAttributes.push_back(faGroupExecute);
+        }
 
 
         // Others
         if (S_ISROTH(status.st_mode) != 0) {
-            if (S_ISWOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersReadWrite); }
-            else { FAttributes.push_back(faOthersReadOnly); }
+            if (S_ISWOTH(status.st_mode) != 0) {
+                FAttributes.push_back(faOthersReadWrite);
+            } else {
+                FAttributes.push_back(faOthersReadOnly);
+            }
         }
-        else if (S_ISWOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersWriteOnly); }
+        else if (S_ISWOTH(status.st_mode) != 0) {
+            FAttributes.push_back(faOthersWriteOnly);
+        }
 
-        if (S_ISXOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersExecute); }
+        if (S_ISXOTH(status.st_mode) != 0) {
+            FAttributes.push_back(faOthersExecute);
+        }
 
         if (FFileName.size() > 0 && FFileName[0] == '.') {
             FAttributes.push_back(faHidden);
         }
     }
-#endif //POSIX
+#endif // POSIX
 
     return result;
 }
@@ -633,7 +702,7 @@
         case faOthersWriteOnly:
         case faOthersReadOnly:
         case faOthersExecute:
-#endif //POSIX
+#endif // POSIX
 
         case faReadOnly: {
             result = true;
@@ -653,7 +722,7 @@
             (Value == faWriteOnly && Contains(faReadOnly) == true)) {
             Value = faReadWrite;
         }
-#endif //POSIX
+#endif // POSIX
 
         FAttributes.push_back(Value);
         WriteAttributes();
@@ -663,7 +732,8 @@
 bool FileAttributes::Contains(FileAttribute Value) {
     bool result = false;
 
-    std::vector<FileAttribute>::const_iterator iterator = std::find(FAttributes.begin(), FAttributes.end(), Value);
+    std::vector<FileAttribute>::const_iterator iterator =
+            std::find(FAttributes.begin(), FAttributes.end(), Value);
 
     if (iterator != FAttributes.end()) {
         result = true;
@@ -683,9 +753,10 @@
             Append(faReadOnly);
             Remove(faReadWrite);
         }
-#endif //POSIX
+#endif // POSIX
 
-        std::vector<FileAttribute>::iterator iterator = std::find(FAttributes.begin(), FAttributes.end(), Value);
+        std::vector<FileAttribute>::iterator iterator =
+            std::find(FAttributes.begin(), FAttributes.end(), Value);
 
         if (iterator != FAttributes.end()) {
             FAttributes.erase(iterator);
--- a/src/jdk.packager/share/native/library/common/FilePath.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/FilePath.h	Wed Oct 17 13:50:11 2018 -0400
@@ -117,9 +117,9 @@
     static TString ExtractFileName(TString Path);
     static TString ChangeFileExt(TString Path, TString Extension);
 
-    static TString IncludeTrailingSeparater(const TString value);
-    static TString IncludeTrailingSeparater(const char* value);
-    static TString IncludeTrailingSeparater(const wchar_t* value);
+    static TString IncludeTrailingSeparator(const TString value);
+    static TString IncludeTrailingSeparator(const char* value);
+    static TString IncludeTrailingSeparator(const wchar_t* value);
     static TString FixPathForPlatform(TString Path);
     static TString FixPathSeparatorForPlatform(TString Path);
     static TString PathSeparator();
--- a/src/jdk.packager/share/native/library/common/GenericPlatform.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/GenericPlatform.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -30,7 +30,7 @@
 
 #ifdef WINDOWS
 #include <codecvt>
-#endif //WINDOWS
+#endif // WINDOWS
 
 
 GenericPlatform::GenericPlatform(void) {
@@ -44,7 +44,7 @@
     TString basedir = GetPackageAppDirectory();
 
     if (basedir.empty() == false) {
-        basedir = FilePath::IncludeTrailingSeparater(basedir);
+        basedir = FilePath::IncludeTrailingSeparator(basedir);
         TString appConfig = basedir + GetAppName() + _T(".cfg");
 
         if (FilePath::FileExists(appConfig) == true) {
@@ -64,19 +64,22 @@
 
 TString GenericPlatform::GetPackageAppDirectory() {
 #if defined(WINDOWS) || defined(LINUX)
-    return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("app");
-#endif //WINDOWS || LINUX
+    return FilePath::IncludeTrailingSeparator(
+            GetPackageRootDirectory()) + _T("app");
+#endif // WINDOWS || LINUX
 #ifdef MAC
-    return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("Java");
+    return FilePath::IncludeTrailingSeparator(
+            GetPackageRootDirectory()) + _T("Java");
 #endif
 }
 
 TString GenericPlatform::GetPackageLauncherDirectory() {
 #if defined(WINDOWS) || defined(LINUX)
     return GetPackageRootDirectory();
-#endif //WINDOWS || LINUX
+#endif // WINDOWS || LINUX
 #ifdef MAC
-    return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("MacOS");
+    return FilePath::IncludeTrailingSeparator(
+            GetPackageRootDirectory()) + _T("MacOS");
 #endif
 }
 
@@ -88,14 +91,15 @@
 
 #ifdef WINDOWS
         const std::locale empty_locale = std::locale::empty();
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
         const std::locale empty_locale = std::locale::classic();
-#endif //POSIX
+#endif // POSIX
 #if defined(WINDOWS)
-        const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
+        const std::locale utf8_locale =
+                std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
         stream.imbue(utf8_locale);
-#endif //WINDOWS
+#endif // WINDOWS
 
         if (stream.is_open() == true) {
             while (stream.eof() == false) {
@@ -126,17 +130,19 @@
 
 #ifdef WINDOWS
     const std::locale empty_locale = std::locale::empty();
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     const std::locale empty_locale = std::locale::classic();
-#endif //POSIX
+#endif // POSIX
 #if defined(WINDOWS)
-    const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
+    const std::locale utf8_locale =
+            std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
     stream.imbue(utf8_locale);
-#endif //WINDOWS || MAC
+#endif // WINDOWS || MAC
 
     if (stream.is_open() == true) {
-        for (std::list<TString>::const_iterator iterator = Contents.begin(); iterator != Contents.end(); iterator++) {
+        for (std::list<TString>::const_iterator iterator =
+                Contents.begin(); iterator != Contents.end(); iterator++) {
             TString line = *iterator;
             stream << PlatformString(line).toUnicodeString() << std::endl;
         }
@@ -152,33 +158,60 @@
 #endif
     return result;
 }
-#endif //WINDOWS || LINUX
+#endif // WINDOWS || LINUX
 
 std::map<TString, TString> GenericPlatform::GetKeys() {
     std::map<TString, TString> keys;
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION,           _T("app.version")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY,       _T("app.mainjar")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY,    _T("app.mainmodule")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINCLASSNAME_KEY, _T("app.mainclass")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_CLASSPATH_KEY,     _T("app.classpath")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_MODULEPATH_KEY,    _T("app.modulepath")));
-    keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY,             _T("app.name")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_ID_KEY,        _T("app.preferences.id")));
-    keys.insert(std::map<TString, TString>::value_type(JVM_RUNTIME_KEY,          _T("app.runtime")));
-    keys.insert(std::map<TString, TString>::value_type(PACKAGER_APP_DATA_DIR,    _T("app.identifier")));
-
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY,        _T("app.splash")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY,        _T("app.memory")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG,         _T("app.debug")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_APPLICATION_INSTANCE, _T("app.application.instance")));
-
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPLICATION,    _T("Application")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMOPTIONS,     _T("JVMOptions")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS, _T("JVMUserOverrideOptions")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS, _T("AppCDSGenerateCacheJVMOptions")));
-    keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_ARGOPTIONS,     _T("ArgOptions")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION,
+            _T("app.version")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY,
+            _T("app.mainjar")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY,
+            _T("app.mainmodule")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINCLASSNAME_KEY,
+            _T("app.mainclass")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_CLASSPATH_KEY,
+            _T("app.classpath")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_MODULEPATH_KEY,
+            _T("app.modulepath")));
+    keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY,
+            _T("app.name")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_ID_KEY,
+            _T("app.preferences.id")));
+    keys.insert(std::map<TString, TString>::value_type(JVM_RUNTIME_KEY,
+            _T("app.runtime")));
+    keys.insert(std::map<TString, TString>::value_type(PACKAGER_APP_DATA_DIR,
+            _T("app.identifier")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY,
+            _T("app.splash")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY,
+            _T("app.memory")));
+    keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG,
+            _T("app.debug")));
+    keys.insert(std::map<TString,
+            TString>::value_type(CONFIG_APPLICATION_INSTANCE,
+            _T("app.application.instance")));
+    keys.insert(std::map<TString,
+            TString>::value_type(CONFIG_SECTION_APPLICATION,
+            _T("Application")));
+    keys.insert(std::map<TString,
+            TString>::value_type(CONFIG_SECTION_JVMOPTIONS,
+            _T("JVMOptions")));
+    keys.insert(std::map<TString,
+            TString>::value_type(CONFIG_SECTION_JVMUSEROPTIONS,
+            _T("JVMUserOptions")));
+    keys.insert(std::map<TString,
+            TString>::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS,
+            _T("JVMUserOverrideOptions")));
+    keys.insert(std::map<TString,
+            TString>::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS,
+            _T("AppCDSJVMOptions")));
+    keys.insert(std::map<TString,
+            TString>::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS,
+            _T("AppCDSGenerateCacheJVMOptions")));
+    keys.insert(std::map<TString,
+            TString>::value_type(CONFIG_SECTION_ARGOPTIONS,
+            _T("ArgOptions")));
 
     return keys;
 }
@@ -193,4 +226,4 @@
 
     return result;
 }
-#endif //DEBUG
+#endif // DEBUG
--- a/src/jdk.packager/share/native/library/common/GenericPlatform.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/GenericPlatform.h	Wed Oct 17 13:50:11 2018 -0400
@@ -27,11 +27,12 @@
 #define GENERICPLATFORM_H
 
 #include "FilePath.h"
-//#include "Platform.h"
+// #include "Platform.h"
 
 #ifdef WINDOWS
 #pragma warning( push )
-#pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member' via dominance
+// C4250 - 'class1' : inherits 'class2::member' via dominance
+#pragma warning( disable : 4250 )
 #endif
 
 class GenericPlatform : virtual public Platform {
@@ -45,19 +46,20 @@
     virtual TString GetConfigFileName();
 
     virtual std::list<TString> LoadFromFile(TString FileName);
-    virtual void SaveToFile(TString FileName, std::list<TString> Contents, bool ownerOnly);
+    virtual void SaveToFile(TString FileName,
+            std::list<TString> Contents, bool ownerOnly);
 
 #if defined(WINDOWS) || defined(LINUX)
     virtual TString GetAppName();
-#endif //WINDOWS || LINUX
+#endif // WINDOWS || LINUX
 
     virtual std::map<TString, TString> GetKeys();
 
 #ifdef DEBUG
     virtual DebugState GetDebugState();
-#endif //DEBUG
+#endif // DEBUG
 };
 #ifdef WINDOWS
 #pragma warning( pop ) // C4250
 #endif
-#endif //GENERICPLATFORM_H
+#endif // GENERICPLATFORM_H
--- a/src/jdk.packager/share/native/library/common/Helpers.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Helpers.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -28,7 +28,8 @@
 #include "PropertyFile.h"
 
 
-bool Helpers::SplitOptionIntoNameValue(TString option, TString& Name, TString& Value) {
+bool Helpers::SplitOptionIntoNameValue(
+        TString option, TString& Name, TString& Value) {
     bool result = false;
     Name = _T("");
     Value = _T("");
@@ -80,7 +81,7 @@
         Value = option.substr(index, index - option.length());
     }
 
-    return true;
+    return result;
 }
 
 
@@ -123,11 +124,13 @@
     return result;
 }
 
-OrderedMap<TString, TString> Helpers::GetJVMArgsFromConfig(IPropertyContainer* config) {
+OrderedMap<TString, TString>
+        Helpers::GetJVMArgsFromConfig(IPropertyContainer* config) {
     OrderedMap<TString, TString> result;
 
     for (unsigned int index = 0; index < config->GetCount(); index++) {
-        TString argname = TString(_T("jvmarg.")) + PlatformString(index + 1).toString();
+        TString argname =
+                TString(_T("jvmarg.")) + PlatformString(index + 1).toString();
         TString argvalue;
 
         if (config->GetValue(argname, argvalue) == false) {
@@ -136,25 +139,29 @@
         else if (argvalue.empty() == false) {
             TString name;
             TString value;
-            Helpers::SplitOptionIntoNameValue(argvalue, name, value);
-            result.Append(name, value);
+            if (Helpers::SplitOptionIntoNameValue(argvalue, name, value)) {
+                result.Append(name, value);
+            }
         }
     }
 
     return result;
 }
 
-OrderedMap<TString, TString> Helpers::GetJVMUserArgsFromConfig(IPropertyContainer* config) {
+OrderedMap<TString, TString>
+        Helpers::GetJVMUserArgsFromConfig(IPropertyContainer* config) {
     OrderedMap<TString, TString> result;
 
     for (unsigned int index = 0; index < config->GetCount(); index++) {
-        TString prefix = TString(_T("jvmuserarg.")) + PlatformString(index + 1).toString();
+        TString prefix = TString(_T("jvmuserarg."))
+                + PlatformString(index + 1).toString();
         TString argname = prefix + _T(".name");
         TString argvalue = prefix + _T(".value");
         TString name;
         TString value;
 
-        if ((config->GetValue(argname, name) == false) || (config->GetValue(argvalue, value) == false)) {
+        if ((config->GetValue(argname, name) == false) ||
+                (config->GetValue(argvalue, value) == false)) {
             break;
         }
         else if ((name.empty() == false) && (value.empty() == false)) {
@@ -169,7 +176,8 @@
     std::list<TString> result;
 
     for (unsigned int index = 0; index < config->GetCount(); index++) {
-        TString argname = TString(_T("arg.")) + PlatformString(index + 1).toString();
+        TString argname = TString(_T("arg."))
+                + PlatformString(index + 1).toString();
         TString argvalue;
 
         if (config->GetValue(argname, argvalue) == false) {
@@ -215,18 +223,22 @@
         AppendToIni(propertyFile, Container, keys[CONFIG_SPLASH_KEY]);
 
         // JVMOptions Section
-        OrderedMap<TString, TString> JVMArgs = Helpers::GetJVMArgsFromConfig(&propertyFile);
+        OrderedMap<TString, TString> JVMArgs =
+                Helpers::GetJVMArgsFromConfig(&propertyFile);
         Container->AppendSection(keys[CONFIG_SECTION_JVMOPTIONS], JVMArgs);
 
         // JVMUserOptions Section
-        OrderedMap<TString, TString> defaultJVMUserArgs = Helpers::GetJVMUserArgsFromConfig(&propertyFile);
-        Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROPTIONS], defaultJVMUserArgs);
+        OrderedMap<TString, TString> defaultJVMUserArgs =
+                Helpers::GetJVMUserArgsFromConfig(&propertyFile);
+        Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROPTIONS],
+                defaultJVMUserArgs);
 
         // ArgOptions Section
         std::list<TString> args = Helpers::GetArgsFromConfig(&propertyFile);
         OrderedMap<TString, TString> convertedArgs;
 
-        for (std::list<TString>::iterator iterator = args.begin(); iterator != args.end(); iterator++) {
+        for (std::list<TString>::iterator iterator = args.begin();
+                iterator != args.end(); iterator++) {
             TString arg = *iterator;
             TString name;
             TString value;
@@ -236,7 +248,8 @@
             }
         }
 
-        Container->AppendSection(keys[CONFIG_SECTION_ARGOPTIONS], convertedArgs);
+        Container->AppendSection(keys[CONFIG_SECTION_ARGOPTIONS],
+                convertedArgs);
     }
 }
 
@@ -251,16 +264,20 @@
         std::map<TString, TString> keys = platform.GetKeys();
 
         // JVMUserOverridesOptions Section
-        OrderedMap<TString, TString> defaultJVMUserArgs = Helpers::GetJVMUserArgsFromConfig(&propertyFile);
-        Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], defaultJVMUserArgs);
+        OrderedMap<TString, TString> defaultJVMUserArgs =
+                Helpers::GetJVMUserArgsFromConfig(&propertyFile);
+        Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS],
+                defaultJVMUserArgs);
     }
 }
 
-std::list<TString> Helpers::MapToNameValueList(OrderedMap<TString, TString> Map) {
+std::list<TString>
+        Helpers::MapToNameValueList(OrderedMap<TString, TString> Map) {
     std::list<TString> result;
     std::vector<TString> keys = Map.GetKeys();
 
-    for (OrderedMap<TString, TString>::const_iterator iterator = Map.begin(); iterator != Map.end(); iterator++) {
+    for (OrderedMap<TString, TString>::const_iterator iterator = Map.begin();
+            iterator != Map.end(); iterator++) {
        pair<TString, TString> *item = *iterator;
        TString key = item->first;
        TString value = item->second;
@@ -296,8 +313,6 @@
     for (unsigned int index = 0; index < Value.length(); index++) {
         TCHAR c = Value[index];
 
-//        Environment::NewLine;
-
         switch (c) {
             case '\n': {
                 result.push_back(line);
--- a/src/jdk.packager/share/native/library/common/Helpers.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Helpers.h	Wed Oct 17 13:50:11 2018 -0400
@@ -43,26 +43,29 @@
     //
     // Example 2:
     // <name=foo=, value=goo>
-    static bool SplitOptionIntoNameValue(TString option, TString& Name, TString& Value);
+    static bool SplitOptionIntoNameValue(TString option,
+            TString& Name, TString& Value);
     static TString ReplaceString(TString subject, const TString& search,
-                                 const TString& replace);
+            const TString& replace);
     static TString ConvertIdToFilePath(TString Value);
     static TString ConvertIdToJavaPath(TString Value);
     static TString ConvertJavaPathToId(TString Value);
 
-    static OrderedMap<TString, TString> GetJVMArgsFromConfig(IPropertyContainer* config);
-    static OrderedMap<TString, TString> GetJVMUserArgsFromConfig(IPropertyContainer* config);
-    //static OrderedMap<TString, TString> GetConfigFromJVMUserArgs(OrderedMap<TString, TString> Value);
+    static OrderedMap<TString, TString>
+            GetJVMArgsFromConfig(IPropertyContainer* config);
+    static OrderedMap<TString, TString>
+            GetJVMUserArgsFromConfig(IPropertyContainer* config);
     static std::list<TString> GetArgsFromConfig(IPropertyContainer* config);
 
     static void LoadOldConfigFile(TString FileName, IniFile* Container);
     static void LoadOldUserConfigFile(TString FileName, IniFile* Container);
 
-    static std::list<TString> MapToNameValueList(OrderedMap<TString, TString> Map);
+    static std::list<TString>
+            MapToNameValueList(OrderedMap<TString, TString> Map);
 
     static TString NameValueToString(TString name, TString value);
 
     static std::list<TString> StringToArray(TString Value);
 };
 
-#endif //HELPERS_H
+#endif // HELPERS_H
--- a/src/jdk.packager/share/native/library/common/IniFile.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/IniFile.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -33,7 +33,8 @@
 }
 
 IniFile::~IniFile() {
-    for (OrderedMap<TString, IniSectionData*>::iterator iterator = FMap.begin(); iterator != FMap.end(); iterator++) {
+    for (OrderedMap<TString, IniSectionData*>::iterator iterator =
+            FMap.begin(); iterator != FMap.end(); iterator++) {
         pair<TString, IniSectionData*> *item = *iterator;
         delete item->second;
     }
@@ -48,9 +49,11 @@
     if (contents.empty() == false) {
         bool found = false;
 
-        // Determine the if file is an INI file or property file. Assign FDefaultSection if it is
+        // Determine the if file is an INI file or property file.
+        // Assign FDefaultSection if it is
         // an INI file. Otherwise FDefaultSection is NULL.
-        for (std::list<TString>::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) {
+        for (std::list<TString>::const_iterator iterator = contents.begin();
+                iterator != contents.end(); iterator++) {
             TString line = *iterator;
 
             if (line[0] == ';') {
@@ -69,7 +72,8 @@
         if (found == true) {
             TString sectionName;
 
-            for (std::list<TString>::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) {
+            for (std::list<TString>::const_iterator iterator = contents.begin();
+                    iterator != contents.end(); iterator++) {
                 TString line = *iterator;
 
                 if (line[0] == ';') {
@@ -83,7 +87,8 @@
                     TString name;
                     TString value;
 
-                    if (Helpers::SplitOptionIntoNameValue(line, name, value) == true) {
+                    if (Helpers::SplitOptionIntoNameValue(
+                            line, name, value) == true) {
                         Append(sectionName, name, value);
                     }
                 }
@@ -120,7 +125,8 @@
     return result;
 }
 
-void IniFile::Append(const TString SectionName, const TString Key, TString Value) {
+void IniFile::Append(const TString SectionName,
+        const TString Key, TString Value) {
     if (FMap.ContainsKey(SectionName) == true) {
         IniSectionData* section;
 
@@ -135,7 +141,8 @@
     }
 }
 
-void IniFile::AppendSection(const TString SectionName, OrderedMap<TString, TString> Values) {
+void IniFile::AppendSection(const TString SectionName,
+        OrderedMap<TString, TString> Values) {
     if (FMap.ContainsKey(SectionName) == true) {
         IniSectionData* section;
 
@@ -149,7 +156,8 @@
     }
 }
 
-bool IniFile::GetValue(const TString SectionName, const TString Key, TString& Value) {
+bool IniFile::GetValue(const TString SectionName,
+        const TString Key, TString& Value) {
     bool result = false;
     IniSectionData* section;
 
@@ -160,7 +168,8 @@
     return result;
 }
 
-bool IniFile::SetValue(const TString SectionName, const TString Key, TString Value) {
+bool IniFile::SetValue(const TString SectionName,
+        const TString Key, TString Value) {
     bool result = false;
     IniSectionData* section;
 
@@ -175,7 +184,8 @@
     return result;
 }
 
-bool IniFile::GetSection(const TString SectionName, OrderedMap<TString, TString> &Data) {
+bool IniFile::GetSection(const TString SectionName,
+        OrderedMap<TString, TString> &Data) {
     bool result = false;
 
     if (FMap.ContainsKey(SectionName) == true) {
@@ -195,7 +205,7 @@
     return FMap.ContainsKey(SectionName);
 }
 
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
 
 IniSectionData::IniSectionData() {
     FMap.SetAllowDuplicates(true);
--- a/src/jdk.packager/share/native/library/common/IniFile.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/IniFile.h	Wed Oct 17 13:50:11 2018 -0400
@@ -66,13 +66,17 @@
     bool SaveToFile(const TString FileName, bool ownerOnly = true);
 
     void Append(const TString SectionName, const TString Key, TString Value);
-    void AppendSection(const TString SectionName, OrderedMap<TString, TString> Values);
-    bool SetValue(const TString SectionName, const TString Key, TString Value);
+    void AppendSection(const TString SectionName,
+            OrderedMap<TString, TString> Values);
+    bool SetValue(const TString SectionName,
+            const TString Key, TString Value);
 
     // ISectionalPropertyContainer
-    virtual bool GetSection(const TString SectionName, OrderedMap<TString, TString> &Data);
+    virtual bool GetSection(const TString SectionName,
+            OrderedMap<TString, TString> &Data);
     virtual bool ContainsSection(const TString SectionName);
-    virtual bool GetValue(const TString SectionName, const TString Key, TString& Value);
+    virtual bool GetValue(const TString SectionName,
+            const TString Key, TString& Value);
 };
 
-#endif //INIFILE_H
+#endif // INIFILE_H
--- a/src/jdk.packager/share/native/library/common/Java.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,324 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "Java.h"
-#include "PlatformString.h"
-
-#include <list>
-
-
-//--------------------------------------------------------------------------------------------------
-
-#ifdef DEBUG
-TString JavaException::CreateExceptionMessage(JNIEnv* Env, jthrowable Exception,
-    jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, jmethodID ThrowableToTStringMethod,
-    jmethodID FrameToTStringMethod) {
-
-    TString result;
-    jobjectArray frames = (jobjectArray)Env->CallObjectMethod(Exception, GetStackTraceMethod);
-
-    // Append Throwable.toTString().
-    if (0 != frames) {
-        jstring jstr = (jstring)Env->CallObjectMethod(Exception, ThrowableToTStringMethod);
-        const char* str = Env->GetStringUTFChars(jstr, 0);
-        result += PlatformString(str).toPlatformString();
-        Env->ReleaseStringUTFChars(jstr, str);
-        Env->DeleteLocalRef(jstr);
-    }
-
-    // Append stack trace if one exists.
-    if (Env->GetArrayLength(frames) > 0) {
-        jsize i = 0;
-
-        for (i = 0; i < Env->GetArrayLength(frames); i++) {
-            // Get the string from the next frame and append it to
-            // the error message.
-            jobject frame = Env->GetObjectArrayElement(frames, i);
-            jstring obj = (jstring)Env->CallObjectMethod(frame, FrameToTStringMethod);
-            const char* str = Env->GetStringUTFChars(obj, 0);
-            result += _T("\n  ");
-            result += PlatformString(str).toPlatformString();
-            Env->ReleaseStringUTFChars(obj, str);
-            Env->DeleteLocalRef(obj);
-            Env->DeleteLocalRef(frame);
-        }
-    }
-
-    // If Exception has a cause then append the stack trace messages.
-    if (0 != frames) {
-        jthrowable cause = (jthrowable)Env->CallObjectMethod(Exception, GetCauseMethod);
-
-        if (cause != NULL) {
-            result += CreateExceptionMessage(Env, cause, GetCauseMethod,
-                GetStackTraceMethod, ThrowableToTStringMethod,
-                FrameToTStringMethod);
-        }
-    }
-
-    return result;
-}
-#endif //DEBUG
-
-JavaException::JavaException() : Exception() {}
-
-//#ifdef WINDOWS
-JavaException::JavaException(JNIEnv *Env, const TString Message) : Exception(Message) {
-//#endif //WINDOWS
-//#ifdef POSIX
-//JavaException::JavaException(JNIEnv *Env, TString message) {
-//#endif //POSIX
-
-    FEnv = Env;
-    FException = Env->ExceptionOccurred();
-    Env->ExceptionClear();
-
-#ifdef DEBUG
-    Platform& platform = Platform::GetInstance();
-
-    if (platform.GetDebugState() == dsNone) {
-        jclass ThrowableClass = Env->FindClass("java/lang/Throwable");
-
-        if (FEnv->ExceptionCheck() == JNI_TRUE) {
-            Env->ExceptionClear();
-            return;
-        }
-
-        jmethodID GetCauseMethod = Env->GetMethodID(ThrowableClass,
-                                                    "getCause",
-                                                    "()Ljava/lang/Throwable;");
-
-        if (FEnv->ExceptionCheck() == JNI_TRUE) {
-            Env->ExceptionClear();
-            return;
-        }
-
-        jmethodID GetStackTraceMethod = Env->GetMethodID(ThrowableClass,
-                                                            "getStackTrace",
-                                                            "()[Ljava/lang/StackTraceElement;");
-
-        if (FEnv->ExceptionCheck() == JNI_TRUE) {
-            Env->ExceptionClear();
-            return;
-        }
-
-        jmethodID ThrowableToTStringMethod = Env->GetMethodID(ThrowableClass,
-                                                                "toString",
-                                                                "()Ljava/lang/String;");
-
-        if (FEnv->ExceptionCheck() == JNI_TRUE) {
-            Env->ExceptionClear();
-            return;
-        }
-
-        jclass FrameClass = Env->FindClass("java/lang/StackTraceElement");
-
-        if (FEnv->ExceptionCheck() == JNI_TRUE) {
-            Env->ExceptionClear();
-            return;
-        }
-
-        jmethodID FrameToTStringMethod = Env->GetMethodID(FrameClass,
-                                                            "toString",
-                                                            "()Ljava/lang/String;");
-
-        if (FEnv->ExceptionCheck() == JNI_TRUE) {
-            Env->ExceptionClear();
-            return;
-        }
-
-        TString lmessage = CreateExceptionMessage(Env, FException, GetCauseMethod,
-            GetStackTraceMethod, ThrowableToTStringMethod, FrameToTStringMethod);
-        SetMessage(lmessage);
-    }
-#endif //DEBUG
-}
-
-void JavaException::Rethrow() {
-    FEnv->Throw(FException);
-}
-
-//--------------------------------------------------------------------------------------------------
-
-JavaStaticMethod::JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method) {
-    FEnv = Env;
-    FClass = Class;
-    FMethod = Method;
-}
-
-void JavaStaticMethod::CallVoidMethod(int Count, ...) {
-    va_list args;
-    va_start(args, Count);
-    FEnv->CallStaticVoidMethodV(FClass, FMethod, args);
-    va_end(args);
-
-    if (FEnv->ExceptionCheck() == JNI_TRUE) {
-        Messages& messages = Messages::GetInstance();
-        throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD));
-    }
-}
-
-JavaStaticMethod::operator jmethodID () {
-    return FMethod;
-}
-
-//--------------------------------------------------------------------------------------------------
-
-JavaMethod::JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method) {
-    FEnv = Env;
-    FObj = Obj;
-    FMethod = Method;
-}
-
-void JavaMethod::CallVoidMethod(int Count, ...) {
-    va_list args;
-    va_start(args, Count);
-    FEnv->CallVoidMethodV(FObj, FMethod, args);
-    va_end(args);
-
-    if (FEnv->ExceptionCheck() == JNI_TRUE) {
-        Messages& messages = Messages::GetInstance();
-        throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD));
-    }
-}
-
-JavaMethod::operator jmethodID () {
-    return FMethod;
-}
-
-//--------------------------------------------------------------------------------------------------
-
-JavaClass::JavaClass(JNIEnv *Env, TString Name) {
-    FEnv = Env;
-    FClassName = Name;
-    FClass = FEnv->FindClass(PlatformString(FClassName));
-
-    if (FClass == NULL || FEnv->ExceptionCheck() == JNI_TRUE) {
-        Messages& messages = Messages::GetInstance();
-        TString message = messages.GetMessage(CLASS_NOT_FOUND);
-        message = PlatformString::Format(message, FClassName.data());
-        throw JavaException(FEnv, message);
-    }
-}
-
-JavaClass::~JavaClass() {
-    FEnv->DeleteLocalRef(FClass);
-
-    if (FEnv->ExceptionCheck() == JNI_TRUE) {
-        // throw JavaException(FEnv, _T("Error"));  // VS2017 - FIXME
-    }
-}
-
-JavaStaticMethod JavaClass::GetStaticMethod(TString Name, TString Signature) {
-    jmethodID method = FEnv->GetStaticMethodID(FClass, PlatformString(Name), PlatformString(Signature));
-
-    if (method == NULL || FEnv->ExceptionCheck() == JNI_TRUE) {
-        Messages& messages = Messages::GetInstance();
-        TString message = messages.GetMessage(METHOD_NOT_FOUND);
-        message = PlatformString::Format(message, Name.data(), FClassName.data());
-        throw JavaException(FEnv, message);
-    }
-
-    return JavaStaticMethod(FEnv, FClass, method);
-}
-
-JavaClass::operator jclass () {
-    return FClass;
-}
-
-//--------------------------------------------------------------------------------------------------
-
-void JavaStringArray::Initialize(size_t Size) {
-    JavaClass jstringClass(FEnv, _T("java/lang/String"));
-
-    if (FEnv->ExceptionCheck() == JNI_TRUE) {
-        Messages& messages = Messages::GetInstance();
-        TString message = messages.GetMessage(CLASS_NOT_FOUND);
-        message = PlatformString::Format(message, _T("String"));
-        throw JavaException(FEnv, message.data());
-    }
-
-    jstring str = PlatformString("").toJString(FEnv);
-    FData = (jobjectArray)FEnv->NewObjectArray((jsize)Size, jstringClass, str);
-
-    if (FEnv->ExceptionCheck() == JNI_TRUE) {
-        throw JavaException(FEnv, _T("Error"));
-    }
-}
-
-JavaStringArray::JavaStringArray(JNIEnv *Env, size_t Size) {
-    FEnv = Env;
-    Initialize(Size);
-}
-
-JavaStringArray::JavaStringArray(JNIEnv *Env, jobjectArray Data) {
-    FEnv = Env;
-    FData = Data;
-}
-
-JavaStringArray::JavaStringArray(JNIEnv *Env, std::list<TString> Items) {
-    FEnv = Env;
-    Initialize(Items.size());
-    unsigned int index = 0;
-
-    for (std::list<TString>::const_iterator iterator = Items.begin(); iterator != Items.end(); iterator++) {
-        TString item = *iterator;
-        SetValue(index, PlatformString(item).toJString(FEnv));
-        index++;
-    }
-}
-
-jobjectArray JavaStringArray::GetData() {
-    return FData;
-}
-
-void JavaStringArray::SetValue(jsize Index, jstring Item) {
-    FEnv->SetObjectArrayElement(FData, Index, Item);
-
-    if (FEnv->ExceptionCheck() == JNI_TRUE) {
-        throw JavaException(FEnv, _T("Error"));
-    }
-}
-
-jstring JavaStringArray::GetValue(jsize Index) {
-    jstring result = (jstring)FEnv->GetObjectArrayElement(FData, Index);
-
-    if (FEnv->ExceptionCheck() == JNI_TRUE) {
-        throw JavaException(FEnv, _T("Error"));
-    }
-
-    return result;
-}
-
-unsigned int JavaStringArray::Count() {
-    unsigned int result = FEnv->GetArrayLength(FData);
-
-    if (FEnv->ExceptionCheck() == JNI_TRUE) {
-        throw JavaException(FEnv, _T("Error"));
-    }
-
-    return result;
-}
-
-//--------------------------------------------------------------------------------------------------
--- a/src/jdk.packager/share/native/library/common/Java.h	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#ifndef JAVA_H
-#define JAVA_H
-
-#include "Platform.h"
-#include "Messages.h"
-
-#include "jni.h"
-
-
-class JavaClass;
-class JavaStaticMethod;
-class JavaMethod;
-class JavaStringArray;
-
-
-class JavaException : public Exception {
-// Prohibit Heap-Based Classes.
-private:
-    static void *operator new(size_t size);
-
-private:
-#ifdef DEBUG
-    static TString CreateExceptionMessage(JNIEnv* Env, jthrowable Exception,
-        jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, jmethodID ThrowableToStringMethod,
-        jmethodID FrameToStringMethod);
-#endif //DEBUG
-
-    jthrowable FException;
-    JNIEnv *FEnv;
-
-public:
-    explicit JavaException();
-    explicit JavaException(JNIEnv *Env, const TString message);
-    virtual ~JavaException() throw() {}
-
-    void Rethrow();
-};
-
-
-class JavaStaticMethod {
-// Prohibit Heap-Based Classes.
-private:
-    static void *operator new(size_t size);
-    static void operator delete(void *ptr);
-
-private:
-    JNIEnv *FEnv;
-    jmethodID FMethod;
-    jclass FClass;
-public:
-    JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method);
-
-    void CallVoidMethod(int Count, ...);
-    operator jmethodID ();
-};
-
-
-class JavaMethod {
-// Prohibit Heap-Based Classes.
-private:
-    static void *operator new(size_t size);
-    static void operator delete(void *ptr);
-
-    JavaMethod(JavaMethod const&); // Don't Implement.
-    void operator=(JavaMethod const&); // Don't implement
-
-private:
-    JNIEnv *FEnv;
-    jmethodID FMethod;
-    jobject FObj;
-public:
-    JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method);
-
-    void CallVoidMethod(int Count, ...);
-    operator jmethodID ();
-};
-
-
-class JavaClass {
-// Prohibit Heap-Based Classes.
-private:
-    static void *operator new(size_t size);
-    static void operator delete(void *ptr);
-
-    JavaClass(JavaClass const&); // Don't Implement.
-    void operator=(JavaClass const&); // Don't implement
-
-private:
-    JNIEnv *FEnv;
-    jclass FClass;
-    TString FClassName;
-
-public:
-    JavaClass(JNIEnv *Env, TString Name);
-    ~JavaClass();
-
-    JavaStaticMethod GetStaticMethod(TString Name, TString Signature);
-    operator jclass ();
-};
-
-
-class JavaStringArray {
-// Prohibit Heap-Based Classes.
-private:
-    static void *operator new(size_t size);
-    static void operator delete(void *ptr);
-
-    JavaStringArray(JavaStringArray const&); // Don't Implement.
-    void operator=(JavaStringArray const&); // Don't implement
-
-private:
-    JNIEnv *FEnv;
-    jobjectArray FData;
-
-    void Initialize(size_t Size);
-
-public:
-    JavaStringArray(JNIEnv *Env, size_t Size);
-    JavaStringArray(JNIEnv *Env, jobjectArray Data);
-    JavaStringArray(JNIEnv *Env, std::list<TString> Array);
-
-    jobjectArray GetData();
-    void SetValue(jsize Index, jstring Item);
-    jstring GetValue(jsize Index);
-    unsigned int Count();
-};
-
-#endif //JAVA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/native/library/common/JavaTypes.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,322 @@
+/*
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "JavaTypes.h"
+#include "PlatformString.h"
+
+#include <list>
+
+
+#ifdef DEBUG
+TString JavaException::CreateExceptionMessage(JNIEnv* Env,
+        jthrowable Exception, jmethodID GetCauseMethod,
+        jmethodID GetStackTraceMethod, jmethodID ThrowableToTStringMethod,
+        jmethodID FrameToTStringMethod) {
+
+    TString result;
+    jobjectArray frames =
+            (jobjectArray)Env->CallObjectMethod(Exception, GetStackTraceMethod);
+
+    // Append Throwable.toTString().
+    if (0 != frames) {
+        jstring jstr = (jstring)Env->CallObjectMethod(Exception,
+                ThrowableToTStringMethod);
+        const char* str = Env->GetStringUTFChars(jstr, 0);
+        result += PlatformString(str).toPlatformString();
+        Env->ReleaseStringUTFChars(jstr, str);
+        Env->DeleteLocalRef(jstr);
+    }
+
+    // Append stack trace if one exists.
+    if (Env->GetArrayLength(frames) > 0) {
+        jsize i = 0;
+
+        for (i = 0; i < Env->GetArrayLength(frames); i++) {
+            // Get the string from the next frame and append it to
+            // the error message.
+            jobject frame = Env->GetObjectArrayElement(frames, i);
+            jstring obj = (jstring)Env->CallObjectMethod(frame,
+                    FrameToTStringMethod);
+            const char* str = Env->GetStringUTFChars(obj, 0);
+            result += _T("\n  ");
+            result += PlatformString(str).toPlatformString();
+            Env->ReleaseStringUTFChars(obj, str);
+            Env->DeleteLocalRef(obj);
+            Env->DeleteLocalRef(frame);
+        }
+    }
+
+    // If Exception has a cause then append the stack trace messages.
+    if (0 != frames) {
+        jthrowable cause =
+                (jthrowable)Env->CallObjectMethod(Exception, GetCauseMethod);
+
+        if (cause != NULL) {
+            result += CreateExceptionMessage(Env, cause, GetCauseMethod,
+                GetStackTraceMethod, ThrowableToTStringMethod,
+                FrameToTStringMethod);
+        }
+    }
+
+    return result;
+}
+#endif //DEBUG
+
+JavaException::JavaException() : Exception() {}
+
+//#ifdef WINDOWS
+JavaException::JavaException(JNIEnv *Env,
+        const TString Message) : Exception(Message) {
+//#endif //WINDOWS
+//#ifdef POSIX
+//JavaException::JavaException(JNIEnv *Env, TString message) {
+//#endif //POSIX
+
+    FEnv = Env;
+    FException = Env->ExceptionOccurred();
+    Env->ExceptionClear();
+
+#ifdef DEBUG
+    Platform& platform = Platform::GetInstance();
+
+    if (platform.GetDebugState() == dsNone) {
+        jclass ThrowableClass = Env->FindClass("java/lang/Throwable");
+
+        if (FEnv->ExceptionCheck() == JNI_TRUE) {
+            Env->ExceptionClear();
+            return;
+        }
+
+        jmethodID GetCauseMethod = Env->GetMethodID(ThrowableClass,
+                "getCause", "()Ljava/lang/Throwable;");
+
+        if (FEnv->ExceptionCheck() == JNI_TRUE) {
+            Env->ExceptionClear();
+            return;
+        }
+
+        jmethodID GetStackTraceMethod = Env->GetMethodID(ThrowableClass,
+                 "getStackTrace", "()[Ljava/lang/StackTraceElement;");
+
+        if (FEnv->ExceptionCheck() == JNI_TRUE) {
+            Env->ExceptionClear();
+            return;
+        }
+
+        jmethodID ThrowableToTStringMethod = Env->GetMethodID(ThrowableClass,
+                "toString", "()Ljava/lang/String;");
+
+        if (FEnv->ExceptionCheck() == JNI_TRUE) {
+            Env->ExceptionClear();
+            return;
+        }
+
+        jclass FrameClass = Env->FindClass("java/lang/StackTraceElement");
+
+        if (FEnv->ExceptionCheck() == JNI_TRUE) {
+            Env->ExceptionClear();
+            return;
+        }
+
+        jmethodID FrameToTStringMethod = Env->GetMethodID(FrameClass,
+                "toString", "()Ljava/lang/String;");
+
+        if (FEnv->ExceptionCheck() == JNI_TRUE) {
+            Env->ExceptionClear();
+            return;
+        }
+
+        TString lmessage = CreateExceptionMessage(Env, FException,
+                GetCauseMethod, GetStackTraceMethod, ThrowableToTStringMethod,
+                FrameToTStringMethod);
+        SetMessage(lmessage);
+    }
+#endif //DEBUG
+}
+
+void JavaException::Rethrow() {
+    FEnv->Throw(FException);
+}
+
+//----------------------------------------------------------------------------
+
+JavaStaticMethod::JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method) {
+    FEnv = Env;
+    FClass = Class;
+    FMethod = Method;
+}
+
+void JavaStaticMethod::CallVoidMethod(int Count, ...) {
+    va_list args;
+    va_start(args, Count);
+    FEnv->CallStaticVoidMethodV(FClass, FMethod, args);
+    va_end(args);
+
+    if (FEnv->ExceptionCheck() == JNI_TRUE) {
+        Messages& messages = Messages::GetInstance();
+        throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD));
+    }
+}
+
+JavaStaticMethod::operator jmethodID () {
+    return FMethod;
+}
+
+//----------------------------------------------------------------------------
+
+JavaMethod::JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method) {
+    FEnv = Env;
+    FObj = Obj;
+    FMethod = Method;
+}
+
+void JavaMethod::CallVoidMethod(int Count, ...) {
+    va_list args;
+    va_start(args, Count);
+    FEnv->CallVoidMethodV(FObj, FMethod, args);
+    va_end(args);
+
+    if (FEnv->ExceptionCheck() == JNI_TRUE) {
+        Messages& messages = Messages::GetInstance();
+        throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD));
+    }
+}
+
+JavaMethod::operator jmethodID () {
+    return FMethod;
+}
+
+//----------------------------------------------------------------------------
+
+JavaClass::JavaClass(JNIEnv *Env, TString Name) {
+    FEnv = Env;
+    FClassName = Name;
+    FClass = FEnv->FindClass(PlatformString(FClassName));
+
+    if (FClass == NULL || FEnv->ExceptionCheck() == JNI_TRUE) {
+        Messages& messages = Messages::GetInstance();
+        TString message = messages.GetMessage(CLASS_NOT_FOUND);
+        message = PlatformString::Format(message, FClassName.data());
+        throw JavaException(FEnv, message);
+    }
+}
+
+JavaClass::~JavaClass() {
+    FEnv->DeleteLocalRef(FClass);
+}
+
+JavaStaticMethod JavaClass::GetStaticMethod(TString Name, TString Signature) {
+    jmethodID method = FEnv->GetStaticMethodID(FClass, PlatformString(Name),
+            PlatformString(Signature));
+
+    if (method == NULL || FEnv->ExceptionCheck() == JNI_TRUE) {
+        Messages& messages = Messages::GetInstance();
+        TString message = messages.GetMessage(METHOD_NOT_FOUND);
+        message = PlatformString::Format(message, Name.data(),
+                FClassName.data());
+        throw JavaException(FEnv, message);
+    }
+
+    return JavaStaticMethod(FEnv, FClass, method);
+}
+
+JavaClass::operator jclass () {
+    return FClass;
+}
+
+//----------------------------------------------------------------------------
+
+void JavaStringArray::Initialize(size_t Size) {
+    JavaClass jstringClass(FEnv, _T("java/lang/String"));
+
+    if (FEnv->ExceptionCheck() == JNI_TRUE) {
+        Messages& messages = Messages::GetInstance();
+        TString message = messages.GetMessage(CLASS_NOT_FOUND);
+        message = PlatformString::Format(message, _T("String"));
+        throw JavaException(FEnv, message.data());
+    }
+
+    jstring str = PlatformString("").toJString(FEnv);
+    FData = (jobjectArray)FEnv->NewObjectArray((jsize)Size, jstringClass, str);
+
+    if (FEnv->ExceptionCheck() == JNI_TRUE) {
+        throw JavaException(FEnv, _T("Error"));
+    }
+}
+
+JavaStringArray::JavaStringArray(JNIEnv *Env, size_t Size) {
+    FEnv = Env;
+    Initialize(Size);
+}
+
+JavaStringArray::JavaStringArray(JNIEnv *Env, jobjectArray Data) {
+    FEnv = Env;
+    FData = Data;
+}
+
+JavaStringArray::JavaStringArray(JNIEnv *Env, std::list<TString> Items) {
+    FEnv = Env;
+    Initialize(Items.size());
+    unsigned int index = 0;
+
+    for (std::list<TString>::const_iterator iterator = Items.begin();
+            iterator != Items.end(); iterator++) {
+        TString item = *iterator;
+        SetValue(index, PlatformString(item).toJString(FEnv));
+        index++;
+    }
+}
+
+jobjectArray JavaStringArray::GetData() {
+    return FData;
+}
+
+void JavaStringArray::SetValue(jsize Index, jstring Item) {
+    FEnv->SetObjectArrayElement(FData, Index, Item);
+
+    if (FEnv->ExceptionCheck() == JNI_TRUE) {
+        throw JavaException(FEnv, _T("Error"));
+    }
+}
+
+jstring JavaStringArray::GetValue(jsize Index) {
+    jstring result = (jstring)FEnv->GetObjectArrayElement(FData, Index);
+
+    if (FEnv->ExceptionCheck() == JNI_TRUE) {
+        throw JavaException(FEnv, _T("Error"));
+    }
+
+    return result;
+}
+
+unsigned int JavaStringArray::Count() {
+    unsigned int result = FEnv->GetArrayLength(FData);
+
+    if (FEnv->ExceptionCheck() == JNI_TRUE) {
+        throw JavaException(FEnv, _T("Error"));
+    }
+
+    return result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/native/library/common/JavaTypes.h	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#ifndef JAVATYPES_H
+#define JAVATYPES_H
+
+#include "Platform.h"
+#include "Messages.h"
+
+#include "jni.h"
+
+
+class JavaClass;
+class JavaStaticMethod;
+class JavaMethod;
+class JavaStringArray;
+
+
+class JavaException : public Exception {
+// Prohibit Heap-Based Classes.
+private:
+    static void *operator new(size_t size);
+
+private:
+#ifdef DEBUG
+    static TString CreateExceptionMessage(JNIEnv* Env, jthrowable Exception,
+            jmethodID GetCauseMethod, jmethodID GetStackTraceMethod,
+            jmethodID ThrowableToStringMethod, jmethodID FrameToStringMethod);
+#endif // DEBUG
+
+    jthrowable FException;
+    JNIEnv *FEnv;
+
+public:
+    explicit JavaException();
+    explicit JavaException(JNIEnv *Env, const TString message);
+    virtual ~JavaException() throw() {}
+
+    void Rethrow();
+};
+
+
+class JavaStaticMethod {
+// Prohibit Heap-Based Classes.
+private:
+    static void *operator new(size_t size);
+    static void operator delete(void *ptr);
+
+private:
+    JNIEnv *FEnv;
+    jmethodID FMethod;
+    jclass FClass;
+public:
+    JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method);
+
+    void CallVoidMethod(int Count, ...);
+    operator jmethodID ();
+};
+
+
+class JavaMethod {
+// Prohibit Heap-Based Classes.
+private:
+    static void *operator new(size_t size);
+    static void operator delete(void *ptr);
+
+    JavaMethod(JavaMethod const&); // Don't Implement.
+    void operator=(JavaMethod const&); // Don't implement
+
+private:
+    JNIEnv *FEnv;
+    jmethodID FMethod;
+    jobject FObj;
+public:
+    JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method);
+
+    void CallVoidMethod(int Count, ...);
+    operator jmethodID ();
+};
+
+
+class JavaClass {
+// Prohibit Heap-Based Classes.
+private:
+    static void *operator new(size_t size);
+    static void operator delete(void *ptr);
+
+    JavaClass(JavaClass const&); // Don't Implement.
+    void operator=(JavaClass const&); // Don't implement
+
+private:
+    JNIEnv *FEnv;
+    jclass FClass;
+    TString FClassName;
+
+public:
+    JavaClass(JNIEnv *Env, TString Name);
+    ~JavaClass();
+
+    JavaStaticMethod GetStaticMethod(TString Name, TString Signature);
+    operator jclass ();
+};
+
+
+class JavaStringArray {
+// Prohibit Heap-Based Classes.
+private:
+    static void *operator new(size_t size);
+    static void operator delete(void *ptr);
+
+    JavaStringArray(JavaStringArray const&); // Don't Implement.
+    void operator=(JavaStringArray const&); // Don't implement
+
+private:
+    JNIEnv *FEnv;
+    jobjectArray FData;
+
+    void Initialize(size_t Size);
+
+public:
+    JavaStringArray(JNIEnv *Env, size_t Size);
+    JavaStringArray(JNIEnv *Env, jobjectArray Data);
+    JavaStringArray(JNIEnv *Env, std::list<TString> Array);
+
+    jobjectArray GetData();
+    void SetValue(jsize Index, jstring Item);
+    jstring GetValue(jsize Index);
+    unsigned int Count();
+};
+
+#endif // JAVATYPES_H
--- a/src/jdk.packager/share/native/library/common/JavaVirtualMachine.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/JavaVirtualMachine.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -28,7 +28,7 @@
 #include "PlatformString.h"
 #include "FilePath.h"
 #include "Package.h"
-#include "Java.h"
+#include "JavaTypes.h"
 #include "Helpers.h"
 #include "Messages.h"
 #include "Macros.h"
@@ -75,7 +75,8 @@
     if (FCreateProc == NULL) {
         Platform& platform = Platform::GetInstance();
         Messages& messages = Messages::GetInstance();
-        platform.ShowMessage(messages.GetMessage(FAILED_LOCATING_JVM_ENTRY_POINT));
+        platform.ShowMessage(
+                messages.GetMessage(FAILED_LOCATING_JVM_ENTRY_POINT));
         return false;
     }
 
@@ -92,7 +93,7 @@
             0) == 0;
 }
 
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
 
 JavaOptions::JavaOptions(): FOptions(NULL) {
 }
@@ -173,9 +174,10 @@
     return FItems.size();
 }
 
-// jvmuserargs can have a trailing equals in the key. This needs to be removed to use
-// other parts of the launcher.
-OrderedMap<TString, TString> RemoveTrailingEquals(OrderedMap<TString, TString> Map) {
+// jvmuserargs can have a trailing equals in the key. This needs to be
+// removed to use other parts of the launcher.
+OrderedMap<TString, TString> RemoveTrailingEquals(
+        OrderedMap<TString, TString> Map) {
     OrderedMap<TString, TString> result;
 
     std::vector<TString> keys = Map.GetKeys();
@@ -185,8 +187,8 @@
         TString value;
 
         if (Map.GetValue(name, value) == true) {
-            // If the last character of the key is an equals, then remove it. If there is no
-            // equals then combine the two as a key.
+            // If the last character of the key is an equals, then remove it.
+            // If there is no equals then combine the two as a key.
             TString::iterator i = name.end();
             i--;
 
@@ -212,7 +214,7 @@
     return result;
 }
 
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
 
 JavaVirtualMachine::JavaVirtualMachine() {
 }
@@ -232,8 +234,11 @@
         options.AppendValue(_T("-Djava.module.path"), modulepath);
     }
 
-    options.AppendValue(_T("-Djava.library.path"), package.GetPackageAppDirectory() + FilePath::PathSeparator() + package.GetPackageLauncherDirectory());
-    options.AppendValue(_T("-Djava.launcher.path"), package.GetPackageLauncherDirectory());
+    options.AppendValue(_T("-Djava.library.path"),
+            package.GetPackageAppDirectory() + FilePath::PathSeparator()
+            + package.GetPackageLauncherDirectory());
+    options.AppendValue(
+            _T("-Djava.launcher.path"), package.GetPackageLauncherDirectory());
     options.AppendValue(_T("-Dapp.preferences.id"), package.GetAppID());
     options.AppendValues(package.GetJVMArgs());
     options.AppendValues(RemoveTrailingEquals(package.GetJVMUserArgs()));
@@ -241,10 +246,12 @@
 #ifdef DEBUG
     if (package.Debugging() == dsJava) {
         options.AppendValue(_T("-Xdebug"), _T(""));
-        options.AppendValue(_T("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005"), _T(""));
+        options.AppendValue(
+                _T("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005"),
+                _T(""));
         platform.ShowMessage(_T("localhost:5005"));
     }
-#endif //DEBUG
+#endif // DEBUG
 
     TString maxHeapSizeOption;
     TString minHeapSizeOption;
@@ -252,7 +259,8 @@
 
     if (package.GetMemoryState() == PackageBootFields::msAuto) {
         TPlatformNumber memorySize = package.GetMemorySize();
-        TString memory = PlatformString((size_t)memorySize).toString() + _T("m");
+        TString memory =
+                PlatformString((size_t)memorySize).toString() + _T("m");
         maxHeapSizeOption = TString(_T("-Xmx")) + memory;
         options.AppendValue(maxHeapSizeOption, _T(""));
 
@@ -277,9 +285,9 @@
 
     // Initialize the arguments to JLI_Launch()
     //
-    // On Mac OS X JLI_Launch spawns a new thread that actually starts the JVM. This
-    // new thread simply re-runs main(argc, argv). Therefore we do not want
-    // to add new args if we are still in the original main thread so we
+    // On Mac OS X JLI_Launch spawns a new thread that actually starts the JVM.
+    // This new thread simply re-runs main(argc, argv). Therefore we do not
+    // want to add new args if we are still in the original main thread so we
     // will treat them as command line args provided by the user ...
     // Only propagate original set of args first time.
 
@@ -290,13 +298,14 @@
     vmargs.push_back(package.GetCommandName());
 
     if (package.HasSplashScreen() == true) {
-        options.AppendValue(TString(_T("-splash:")) + package.GetSplashScreenFileName(), _T(""));
+        options.AppendValue(TString(_T("-splash:"))
+                + package.GetSplashScreenFileName(), _T(""));
     }
 
     if (mainModule.empty() == true) {
-        options.AppendValue(Helpers::ConvertJavaPathToId(mainClassName), _T(""));
-    }
-    else {
+        options.AppendValue(Helpers::ConvertJavaPathToId(mainClassName),
+                _T(""));
+    } else {
         options.AppendValue(_T("-m"));
         options.AppendValue(mainModule);
     }
@@ -311,12 +320,16 @@
     vmargs.push_back(package.GetCommandName());
 
     JavaOptions options;
-    options.AppendValue(_T("-Djava.library.path"), package.GetPackageAppDirectory()
-                      + FilePath::PathSeparator() + package.GetPackageLauncherDirectory());
-    options.AppendValue(_T("-Djava.launcher.path"), package.GetPackageLauncherDirectory());
-    // launch SingleInstanceNewActivation.main() to pass arguments to another instance
+    options.AppendValue(_T("-Djava.library.path"),
+            package.GetPackageAppDirectory() + FilePath::PathSeparator()
+            + package.GetPackageLauncherDirectory());
+    options.AppendValue(_T("-Djava.launcher.path"),
+            package.GetPackageLauncherDirectory());
+    // launch SingleInstanceNewActivation.main() to pass arguments to
+    // another instance
     options.AppendValue(_T("-m"));
-    options.AppendValue(_T("jdk.packager.services/jdk.packager.services.singleton.SingleInstanceNewActivation"));
+    options.AppendValue(
+            _T("jdk.packager.services/jdk.packager.services.singleton.SingleInstanceNewActivation"));
 
     configureLibrary();
 
@@ -326,8 +339,8 @@
 void JavaVirtualMachine::configureLibrary() {
     Platform& platform = Platform::GetInstance();
     Package& package = Package::GetInstance();
-    // TODO: Clean this up. Because of bug JDK-8131321 the opening of the PE file
-    // fails in WindowsPlatform.cpp on the check to
+    // TODO: Clean this up. Because of bug JDK-8131321 the opening of the
+    // PE file ails in WindowsPlatform.cpp on the check to
     // if (pNTHeader->Signature == IMAGE_NT_SIGNATURE)
     TString libName = package.GetJVMLibraryFileName();
 #ifdef _WIN64
@@ -336,12 +349,14 @@
     }
 #else
     javaLibrary.AddDependencies(
-        platform.FilterOutRuntimeDependenciesForPlatform(platform.GetLibraryImports(libName)));
+            platform.FilterOutRuntimeDependenciesForPlatform(
+            platform.GetLibraryImports(libName)));
 #endif
     javaLibrary.Load(libName);
 }
 
-bool JavaVirtualMachine::launchVM(JavaOptions& options, std::list<TString>& vmargs, bool addSiProcessId) {
+bool JavaVirtualMachine::launchVM(JavaOptions& options,
+        std::list<TString>& vmargs, bool addSiProcessId) {
     Platform& platform = Platform::GetInstance();
     Package& package = Package::GetInstance();
 
@@ -350,7 +365,8 @@
     // filter out the psn since they it's not expected in the app
     if (platform.IsMainThread() == false) {
         std::list<TString> loptions = options.ToList();
-        vmargs.splice(vmargs.end(), loptions, loptions.begin(), loptions.end());
+        vmargs.splice(vmargs.end(), loptions,
+                loptions.begin(), loptions.end());
     }
 #else
     std::list<TString> loptions = options.ToList();
@@ -378,21 +394,22 @@
         std::string arg = PlatformString(item).toStdString();
 #ifdef DEBUG
         printf("%i %s\n", index, arg.c_str());
-#endif //DEBUG
+#endif // DEBUG
         argv[index] = PlatformString::duplicate(arg.c_str());
         index++;
     }
 
     argv[argc] = NULL;
 
-// On Mac we can only free the boot fields if the calling thread is not the main thread.
+// On Mac we can only free the boot fields if the calling thread is
+// not the main thread.
 #ifdef MAC
     if (platform.IsMainThread() == false) {
         package.FreeBootFields();
     }
 #else
     package.FreeBootFields();
-#endif //MAC
+#endif // MAC
 
     if (javaLibrary.JavaVMCreate(argc, argv.GetData()) == true) {
         return true;
--- a/src/jdk.packager/share/native/library/common/JavaVirtualMachine.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/JavaVirtualMachine.h	Wed Oct 17 13:50:11 2018 -0400
@@ -89,7 +89,8 @@
     JavaLibrary javaLibrary;
 
     void configureLibrary();
-    bool launchVM(JavaOptions& options, std::list<TString>& vmargs, bool addSiProcessId);
+    bool launchVM(JavaOptions& options, std::list<TString>& vmargs,
+            bool addSiProcessId);
 public:
     JavaVirtualMachine();
     ~JavaVirtualMachine(void);
@@ -100,4 +101,4 @@
 
 bool RunVM(JvmLaunchType type);
 
-#endif //JAVAVIRTUALMACHINE_H
+#endif // JAVAVIRTUALMACHINE_H
--- a/src/jdk.packager/share/native/library/common/LinuxPlatform.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/LinuxPlatform.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -56,7 +56,8 @@
     return result;
 }
 
-LinuxPlatform::LinuxPlatform(void) : Platform(), GenericPlatform(), PosixPlatform() {
+LinuxPlatform::LinuxPlatform(void) : Platform(),
+        GenericPlatform(), PosixPlatform() {
     FMainThread = pthread_self();
 }
 
@@ -64,22 +65,26 @@
 }
 
 void LinuxPlatform::ShowMessage(TString title, TString description) {
-    printf("%s %s\n", PlatformString(title).toPlatformString(), PlatformString(description).toPlatformString());
+    printf("%s %s\n", PlatformString(title).toPlatformString(),
+            PlatformString(description).toPlatformString());
     fflush(stdout);
 }
 
 void LinuxPlatform::ShowMessage(TString description) {
     TString appname = GetModuleFileName();
     appname = FilePath::ExtractFileName(appname);
-    ShowMessage(PlatformString(appname).toPlatformString(), PlatformString(description).toPlatformString());
+    ShowMessage(PlatformString(appname).toPlatformString(),
+            PlatformString(description).toPlatformString());
 }
 
-TCHAR* LinuxPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) {
+TCHAR* LinuxPlatform::ConvertStringToFileSystemString(TCHAR* Source,
+         bool &release) {
     // Not Implemented.
     return NULL;
 }
 
-TCHAR* LinuxPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) {
+TCHAR* LinuxPlatform::ConvertFileSystemStringToString(TCHAR* Source,
+         bool &release) {
     // Not Implemented.
     return NULL;
 }
@@ -89,7 +94,8 @@
     TString result;
     DynamicBuffer<TCHAR> buffer(MAX_PATH);
 
-    if ((len = readlink("/proc/self/exe", buffer.GetData(), MAX_PATH - 1)) != -1) {
+    if ((len = readlink("/proc/self/exe", buffer.GetData(),
+            MAX_PATH - 1)) != -1) {
         buffer[len] = '\0';
         result = buffer.GetData();
     }
@@ -111,7 +117,7 @@
     TString home = GetEnv(_T("HOME"));
 
     if (home.empty() == false) {
-        result += FilePath::IncludeTrailingSeparater(home) + _T(".local");
+        result += FilePath::IncludeTrailingSeparator(home) + _T(".local");
     }
 
     return result;
@@ -121,7 +127,8 @@
     IniFile *result = new IniFile();
 
     if (result->LoadFromFile(FileName) == false) {
-        // New property file format was not found, attempt to load old property file format.
+        // New property file format was not found,
+        // attempt to load old property file format.
         Helpers::LoadOldConfigFile(FileName, result);
     }
 
@@ -129,11 +136,11 @@
 }
 
 TString LinuxPlatform::GetBundledJVMLibraryFileName(TString RuntimePath) {
-    TString result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+    TString result = FilePath::IncludeTrailingSeparator(RuntimePath) +
         "lib/libjli.so";
 
     if (FilePath::FileExists(result) == false) {
-        result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+        result = FilePath::IncludeTrailingSeparator(RuntimePath) +
             "lib/jli/libjli.so";
         if (FilePath::FileExists(result) == false) {
             printf("Cannot find libjli.so!");
@@ -190,10 +197,10 @@
 }
 #endif //DEBUG
 
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
 
-#ifndef __UNIX_DEPLOY_PLATFORM__
-#define __UNIX_DEPLOY_PLATFORM__
+#ifndef __UNIX_PACKAGER_PLATFORM__
+#define __UNIX_PACKAGER_PLATFORM__
 
 /** Provide an abstraction for difference in the platform APIs,
      e.g. string manipulation functions, etc. */
@@ -206,25 +213,26 @@
 
 #define _T(x) x
 
-#define DEPLOY_MULTIBYTE_SNPRINTF snprintf
+#define PACKAGER_MULTIBYTE_SNPRINTF snprintf
 
-#define DEPLOY_SNPRINTF(buffer, sizeOfBuffer, count, format, ...) \
+#define PACKAGER_SNPRINTF(buffer, sizeOfBuffer, count, format, ...) \
     snprintf((buffer), (count), (format), __VA_ARGS__)
 
-#define DEPLOY_PRINTF(format, ...) \
+#define PACKAGER_PRINTF(format, ...) \
     printf((format), ##__VA_ARGS__)
 
-#define DEPLOY_FPRINTF(dest, format, ...) \
+#define PACKAGER_FPRINTF(dest, format, ...) \
     fprintf((dest), (format), __VA_ARGS__)
 
-#define DEPLOY_SSCANF(buf, format, ...) \
+#define PACKAGER_SSCANF(buf, format, ...) \
     sscanf((buf), (format), __VA_ARGS__)
 
-#define DEPLOY_STRDUP(strSource) \
+#define PACKAGER_STRDUP(strSource) \
     strdup((strSource))
 
 //return "error code" (like on Windows)
-static int DEPLOY_STRNCPY(char *strDest, size_t numberOfElements, const char *strSource, size_t count) {
+static int PACKAGER_STRNCPY(char *strDest, size_t numberOfElements,
+        const char *strSource, size_t count) {
     char *s = strncpy(strDest, strSource, count);
     // Duplicate behavior of the Windows' _tcsncpy_s() by adding a NULL
     // terminator at the end of the string.
@@ -236,78 +244,78 @@
     return (s == strDest) ? 0 : 1;
 }
 
-#define DEPLOY_STRICMP(x, y) \
+#define PACKAGER_STRICMP(x, y) \
     strcasecmp((x), (y))
 
-#define DEPLOY_STRNICMP(x, y, cnt) \
+#define PACKAGER_STRNICMP(x, y, cnt) \
     strncasecmp((x), (y), (cnt))
 
-#define DEPLOY_STRNCMP(x, y, cnt) \
+#define PACKAGER_STRNCMP(x, y, cnt) \
     strncmp((x), (y), (cnt))
 
-#define DEPLOY_STRLEN(x) \
+#define PACKAGER_STRLEN(x) \
     strlen((x))
 
-#define DEPLOY_STRSTR(x, y) \
+#define PACKAGER_STRSTR(x, y) \
     strstr((x), (y))
 
-#define DEPLOY_STRCHR(x, y) \
+#define PACKAGER_STRCHR(x, y) \
     strchr((x), (y))
 
-#define DEPLOY_STRRCHR(x, y) \
+#define PACKAGER_STRRCHR(x, y) \
     strrchr((x), (y))
 
-#define DEPLOY_STRPBRK(x, y) \
+#define PACKAGER_STRPBRK(x, y) \
     strpbrk((x), (y))
 
-#define DEPLOY_GETENV(x) \
+#define PACKAGER_GETENV(x) \
     getenv((x))
 
-#define DEPLOY_PUTENV(x) \
+#define PACKAGER_PUTENV(x) \
     putenv((x))
 
-#define DEPLOY_STRCMP(x, y) \
+#define PACKAGER_STRCMP(x, y) \
     strcmp((x), (y))
 
-#define DEPLOY_STRCPY(x, y) \
+#define PACKAGER_STRCPY(x, y) \
     strcpy((x), (y))
 
-#define DEPLOY_STRCAT(x, y) \
+#define PACKAGER_STRCAT(x, y) \
     strcat((x), (y))
 
-#define DEPLOY_ATOI(x) \
+#define PACKAGER_ATOI(x) \
     atoi((x))
 
-#define DEPLOY_FOPEN(x, y) \
+#define PACKAGER_FOPEN(x, y) \
     fopen((x), (y))
 
-#define DEPLOY_FGETS(x, y, z) \
+#define PACKAGER_FGETS(x, y, z) \
     fgets((x), (y), (z))
 
-#define DEPLOY_REMOVE(x) \
+#define PACKAGER_REMOVE(x) \
     remove((x))
 
-#define DEPLOY_SPAWNV(mode, cmd, args) \
+#define PACKAGER_SPAWNV(mode, cmd, args) \
     spawnv((mode), (cmd), (args))
 
-#define DEPLOY_ISDIGIT(ch) isdigit(ch)
+#define PACKAGER_ISDIGIT(ch) isdigit(ch)
 
 // for non-unicode, just return the input string for
 // the following 2 conversions
-#define DEPLOY_NEW_MULTIBYTE(message) message
+#define PACKAGER_NEW_MULTIBYTE(message) message
 
-#define DEPLOY_NEW_FROM_MULTIBYTE(message) message
+#define PACKAGER_NEW_FROM_MULTIBYTE(message) message
 
 // for non-unicode, no-op for the relase operation
 // since there is no memory allocated for the
 // string conversions
-#define DEPLOY_RELEASE_MULTIBYTE(tmpMBCS)
+#define PACKAGER_RELEASE_MULTIBYTE(tmpMBCS)
 
-#define DEPLOY_RELEASE_FROM_MULTIBYTE(tmpMBCS)
+#define PACKAGER_RELEASE_FROM_MULTIBYTE(tmpMBCS)
 
 // The size will be used for converting from 1 byte to 1 byte encoding.
 // Ensure have space for zero-terminator.
-#define DEPLOY_GET_SIZE_FOR_ENCODING(message, theLength) (theLength + 1)
+#define PACKAGER_GET_SIZE_FOR_ENCODING(message, theLength) (theLength + 1)
 
 #endif
 #define xmlTagType    0
@@ -384,18 +392,53 @@
 #define JMP_NO_ERROR     0
 #define JMP_OUT_OF_RANGE 1
 
-#define NEXT_CHAR(p) {if (*p != 0) { p++;} else {longjmp(jmpbuf, JMP_OUT_OF_RANGE);}}
-#define NEXT_CHAR_OR_BREAK(p) {if (*p != 0) { p++;} else {break;}}
-#define NEXT_CHAR_OR_RETURN(p) {if (*p != 0) { p++;} else {return;}}
-#define SKIP_CHARS(p,n) {int i; for (i = 0; i < (n); i++) \
-                                            {if (*p != 0) { p++;} else \
-                                                {longjmp(jmpbuf, JMP_OUT_OF_RANGE);}}}
-#define SKIP_CHARS_OR_BREAK(p,n) {int i; for (i = 0; i < (n); i++) \
-                                            {if (*p != 0) { p++;} else {break;}} \
-                                            {if (i < (n)) {break;}}}
+#define NEXT_CHAR(p) { \
+    if (*p != 0) { \
+        p++; \
+    } else { \
+        longjmp(jmpbuf, JMP_OUT_OF_RANGE); \
+    } \
+}
+#define NEXT_CHAR_OR_BREAK(p) { \
+    if (*p != 0) { \
+        p++; \
+    } else { \
+        break; \
+    } \
+}
+#define NEXT_CHAR_OR_RETURN(p) { \
+    if (*p != 0) { \
+        p++; \
+    } else { \
+        return; \
+    } \
+}
+#define SKIP_CHARS(p,n) { \
+    int i; \
+    for (i = 0; i < (n); i++) { \
+        if (*p != 0) { \
+            p++; \
+        } else { \
+           longjmp(jmpbuf, JMP_OUT_OF_RANGE); \
+        } \
+    } \
+}
+#define SKIP_CHARS_OR_BREAK(p,n) { \
+    int i; \
+    for (i = 0; i < (n); i++) { \
+        if (*p != 0) { \
+            p++; \
+        } else { \
+            break; \
+        } \
+    } \
+    if (i < (n)) { \
+        break; \
+    } \
+}
 
-/** Iterates through the null-terminated buffer (i.e., C string) and replaces all
- *  UTF-8 encoded character >255 with 255
+/** Iterates through the null-terminated buffer (i.e., C string) and
+ *  replaces all UTF-8 encoded character >255 with 255
  *
  *  UTF-8 encoding:
  *
@@ -414,8 +457,8 @@
     char* q;
     char c;
     p = q = buf;
-    /* We are not using NEXT_CHAR() to check if *q is NULL, as q is output location
-       and offset for q is smaller than for p. */
+    // We are not using NEXT_CHAR() to check if *q is NULL, as q is output
+    // location and offset for q is smaller than for p.
     while(*p != '\0') {
         c = *p;
         if ( (c & 0x80) == 0) {
@@ -438,8 +481,6 @@
     *q = '\0';
 }
 
-/* --------------------------------------------------------------------- */
-
 static TCHAR* SkipWhiteSpace(TCHAR *p) {
     if (p != NULL) {
         while(iswspace(*p))
@@ -469,10 +510,10 @@
 
 static TCHAR* SkipXMLComment(TCHAR *p) {
     if (p != NULL) {
-        if (DEPLOY_STRNCMP(p, _T("<!--"), 4) == 0) {
+        if (PACKAGER_STRNCMP(p, _T("<!--"), 4) == 0) {
             SKIP_CHARS(p, 4);
             do {
-                if (DEPLOY_STRNCMP(p, _T("-->"), 3) == 0) {
+                if (PACKAGER_STRNCMP(p, _T("-->"), 3) == 0) {
                     SKIP_CHARS(p, 3);
                     return p;
                 }
@@ -485,7 +526,7 @@
 
 static TCHAR* SkipXMLDocType(TCHAR *p) {
     if (p != NULL) {
-        if (DEPLOY_STRNCMP(p, _T("<!"), 2) == 0) {
+        if (PACKAGER_STRNCMP(p, _T("<!"), 2) == 0) {
             SKIP_CHARS(p, 2);
             while (*p != '\0') {
                 if (*p == '>') {
@@ -501,10 +542,10 @@
 
 static TCHAR* SkipXMLProlog(TCHAR *p) {
     if (p != NULL) {
-        if (DEPLOY_STRNCMP(p, _T("<?"), 2) == 0) {
+        if (PACKAGER_STRNCMP(p, _T("<?"), 2) == 0) {
             SKIP_CHARS(p, 2);
             do {
-                if (DEPLOY_STRNCMP(p, _T("?>"), 2) == 0) {
+                if (PACKAGER_STRNCMP(p, _T("?>"), 2) == 0) {
                     SKIP_CHARS(p, 2);
                     return p;
                 }
@@ -522,38 +563,38 @@
 static void ConvertBuiltInEntities(TCHAR* p) {
     TCHAR* q;
     q = p;
-    /* We are not using NEXT_CHAR() to check if *q is NULL, as q is output location
-       and offset for q is smaller than for p. */
+    // We are not using NEXT_CHAR() to check if *q is NULL,
+    // as q is output location and offset for q is smaller than for p.
     while(*p) {
-      if (IsPCData(p)) {
-        /* dont convert &xxx values within PData */
-        TCHAR *end;
-        end = SkipPCData(p);
-        while(p < end) {
-            *q++ = *p;
-            NEXT_CHAR(p);
+        if (IsPCData(p)) {
+            /* dont convert &xxx values within PData */
+            TCHAR *end;
+            end = SkipPCData(p);
+            while(p < end) {
+                *q++ = *p;
+                NEXT_CHAR(p);
+            }
+        } else {
+            if (PACKAGER_STRNCMP(p, _T("&amp;"), 5) == 0) {
+                *q++ = '&';
+                SKIP_CHARS(p, 5);
+            } else if (PACKAGER_STRNCMP(p, _T("&lt;"), 4)  == 0) {
+                *q = '<';
+                SKIP_CHARS(p, 4);
+            } else if (PACKAGER_STRNCMP(p, _T("&gt;"), 4)  == 0) {
+                *q = '>';
+                SKIP_CHARS(p, 4);
+            } else if (PACKAGER_STRNCMP(p, _T("&apos;"), 6)  == 0) {
+                *q = '\'';
+                SKIP_CHARS(p, 6);
+            } else if (PACKAGER_STRNCMP(p, _T("&quote;"), 7)  == 0) {
+                *q = '\"';
+              SKIP_CHARS(p, 7);
+            } else {
+              *q++ = *p;
+              NEXT_CHAR(p);
+            }
         }
-      } else {
-        if (DEPLOY_STRNCMP(p, _T("&amp;"), 5) == 0) {
-            *q++ = '&';
-            SKIP_CHARS(p, 5);
-        } else if (DEPLOY_STRNCMP(p, _T("&lt;"), 4)  == 0) {
-            *q = '<';
-            SKIP_CHARS(p, 4);
-        } else if (DEPLOY_STRNCMP(p, _T("&gt;"), 4)  == 0) {
-            *q = '>';
-            SKIP_CHARS(p, 4);
-        } else if (DEPLOY_STRNCMP(p, _T("&apos;"), 6)  == 0) {
-            *q = '\'';
-            SKIP_CHARS(p, 6);
-        } else if (DEPLOY_STRNCMP(p, _T("&quote;"), 7)  == 0) {
-            *q = '\"';
-            SKIP_CHARS(p, 7);
-        } else {
-            *q++ = *p;
-            NEXT_CHAR(p);
-        }
-      }
     }
     *q = '\0';
 }
@@ -588,7 +629,7 @@
     }
 
     CurTokenType = type;
-    DEPLOY_STRNCPY(CurTokenName, len + 1, start, len);
+    PACKAGER_STRNCPY(CurTokenName, len + 1, start, len);
     CurTokenName[len] = '\0';
 }
 
@@ -727,7 +768,7 @@
     if (CurTokenType == TOKEN_BEGIN_TAG) {
 
         /* Create node for new element tag */
-        node = CreateXMLNode(xmlTagType, DEPLOY_STRDUP(CurTokenName));
+        node = CreateXMLNode(xmlTagType, PACKAGER_STRDUP(CurTokenName));
         /* We need to save root node pointer to be able to cleanup
            if an error happens during parsing */
         if(!root_node) {
@@ -769,21 +810,22 @@
                 /* Find closing bracket '>' for end tag */
                 do {
                    GetNextToken();
-                } while(CurTokenType != TOKEN_EOF && CurTokenType != TOKEN_CLOSE_BRACKET);
+                } while(CurTokenType != TOKEN_EOF &&
+                        CurTokenType != TOKEN_CLOSE_BRACKET);
                 GetNextToken();
             }
         }
 
         /* Continue parsing rest on same level */
         if (CurTokenType != TOKEN_EOF) {
-                /* Parse rest of stream at same level */
-                node->_next = ParseXMLElement();
+            /* Parse rest of stream at same level */
+            node->_next = ParseXMLElement();
         }
         return node;
 
     } else if (CurTokenType == TOKEN_PCDATA) {
         /* Create node for pcdata */
-        node = CreateXMLNode(xmlPCDataType, DEPLOY_STRDUP(CurTokenName));
+        node = CreateXMLNode(xmlPCDataType, PACKAGER_STRDUP(CurTokenName));
         /* We need to save root node pointer to be able to cleanup
            if an error happens during parsing */
         if(!root_node) {
@@ -843,7 +885,7 @@
             free(name);
             name = NULL;
         }
-        name = DEPLOY_STRDUP(CurTokenName);
+        name = PACKAGER_STRDUP(CurTokenName);
 
         /* Skip any whitespace */
         CurPos = q;
@@ -875,80 +917,80 @@
     //Note: no need to free name and CurTokenName duplicate; they're assigned
     // to an XMLAttribute structure in CreateXMLAttribute
 
-    return CreateXMLAttribute(name, DEPLOY_STRDUP(CurTokenName));
+    return CreateXMLAttribute(name, PACKAGER_STRDUP(CurTokenName));
 }
 
 void FreeXMLDocument(XMLNode* root) {
-  if (root == NULL) return;
-  FreeXMLDocument(root->_sub);
-  FreeXMLDocument(root->_next);
-  FreeXMLAttribute(root->_attributes);
-  free(root->_name);
-  free(root);
+    if (root == NULL) return;
+    FreeXMLDocument(root->_sub);
+    FreeXMLDocument(root->_next);
+    FreeXMLAttribute(root->_attributes);
+    free(root->_name);
+    free(root);
 }
 
 static void FreeXMLAttribute(XMLAttribute* attr) {
-  if (attr == NULL) return;
-  free(attr->_name);
-  free(attr->_value);
-  FreeXMLAttribute(attr->_next);
-  free(attr);
+    if (attr == NULL) return;
+    free(attr->_name);
+    free(attr->_value);
+    FreeXMLAttribute(attr->_next);
+    free(attr);
 }
 
 /* Find element at current level with a given name */
 XMLNode* FindXMLChild(XMLNode* root, const TCHAR* name) {
-  if (root == NULL) return NULL;
+    if (root == NULL) return NULL;
 
-  if (root->_type == xmlTagType && DEPLOY_STRCMP(root->_name, name) == 0) {
-    return root;
-  }
+    if (root->_type == xmlTagType && PACKAGER_STRCMP(root->_name, name) == 0) {
+        return root;
+    }
 
-  return FindXMLChild(root->_next, name);
+    return FindXMLChild(root->_next, name);
 }
 
 /* Search for an attribute with the given name and returns the contents. Returns NULL if
  * attribute is not found
  */
 TCHAR* FindXMLAttribute(XMLAttribute* attr, const TCHAR* name) {
-  if (attr == NULL) return NULL;
-  if (DEPLOY_STRCMP(attr->_name, name) == 0) return attr->_value;
-  return FindXMLAttribute(attr->_next, name);
+    if (attr == NULL) return NULL;
+    if (PACKAGER_STRCMP(attr->_name, name) == 0) return attr->_value;
+    return FindXMLAttribute(attr->_next, name);
 }
 
 
 void PrintXMLDocument(XMLNode* node, int indt) {
-  if (node == NULL) return;
+    if (node == NULL) return;
 
-  if (node->_type == xmlTagType) {
-     DEPLOY_PRINTF(_T("\n"));
-     indent(indt);
-     DEPLOY_PRINTF(_T("<%s"), node->_name);
-     PrintXMLAttributes(node->_attributes);
-     if (node->_sub == NULL) {
-       DEPLOY_PRINTF(_T("/>\n"));
-     } else {
-       DEPLOY_PRINTF(_T(">"));
-       PrintXMLDocument(node->_sub, indt + 1);
-       indent(indt);
-       DEPLOY_PRINTF(_T("</%s>"), node->_name);
-     }
-  } else {
-    DEPLOY_PRINTF(_T("%s"), node->_name);
-  }
-  PrintXMLDocument(node->_next, indt);
+    if (node->_type == xmlTagType) {
+        PACKAGER_PRINTF(_T("\n"));
+        indent(indt);
+        PACKAGER_PRINTF(_T("<%s"), node->_name);
+        PrintXMLAttributes(node->_attributes);
+        if (node->_sub == NULL) {
+            PACKAGER_PRINTF(_T("/>\n"));
+        } else {
+            PACKAGER_PRINTF(_T(">"));
+            PrintXMLDocument(node->_sub, indt + 1);
+            indent(indt);
+            PACKAGER_PRINTF(_T("</%s>"), node->_name);
+        }
+    } else {
+        PACKAGER_PRINTF(_T("%s"), node->_name);
+    }
+    PrintXMLDocument(node->_next, indt);
 }
 
 static void PrintXMLAttributes(XMLAttribute* attr) {
-  if (attr == NULL) return;
+    if (attr == NULL) return;
 
-  DEPLOY_PRINTF(_T(" %s=\"%s\""), attr->_name, attr->_value);
-  PrintXMLAttributes(attr->_next);
+    PACKAGER_PRINTF(_T(" %s=\"%s\""), attr->_name, attr->_value);
+    PrintXMLAttributes(attr->_next);
 }
 
 static void indent(int indt) {
     int i;
     for(i = 0; i < indt; i++) {
-        DEPLOY_PRINTF(_T("  "));
+        PACKAGER_PRINTF(_T("  "));
     }
 }
 
@@ -957,7 +999,7 @@
 
 
 static TCHAR* SkipPCData(TCHAR *p) {
-    TCHAR *end = DEPLOY_STRSTR(p, CDEnd);
+    TCHAR *end = PACKAGER_STRSTR(p, CDEnd);
     if (end != NULL) {
         return end+sizeof(CDEnd);
     }
@@ -966,12 +1008,13 @@
 
 static int IsPCData(TCHAR *p) {
     const int size = sizeof(CDStart);
-    return (DEPLOY_STRNCMP(CDStart, p, size) == 0);
+    return (PACKAGER_STRNCMP(CDStart, p, size) == 0);
 }
 
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
 
-LinuxJavaUserPreferences::LinuxJavaUserPreferences(void) : JavaUserPreferences() {
+LinuxJavaUserPreferences::LinuxJavaUserPreferences(void) :
+        JavaUserPreferences() {
 }
 
 LinuxJavaUserPreferences::~LinuxJavaUserPreferences(void) {
@@ -981,10 +1024,10 @@
     TString result;
     struct passwd *pw = getpwuid(getuid());
     TString homedir = pw->pw_dir;
-    TString userOverrideFileName = FilePath::IncludeTrailingSeparater(homedir) +
-        FilePath::IncludeTrailingSeparater(_T(".java/.userPrefs")) +
-        FilePath::IncludeTrailingSeparater(Appid) +
-        _T("JVMUserOptions/prefs.xml");
+    TString userOverrideFileName = FilePath::IncludeTrailingSeparator(homedir)
+            + FilePath::IncludeTrailingSeparator(_T(".java/.userPrefs"))
+            + FilePath::IncludeTrailingSeparator(Appid)
+            + _T("JVMUserOptions/prefs.xml");
 
     if (FilePath::FileExists(userOverrideFileName) == true) {
         result = userOverrideFileName;
@@ -1055,31 +1098,35 @@
 }
 
 namespace {
-template<class funcType>
-class DllFunction {
-    const Library& lib;
-    funcType funcPtr;
-    std::string theName;
+    template<class funcType>
+    class DllFunction {
+        const Library& lib;
+        funcType funcPtr;
+        std::string theName;
 
-public:
-    DllFunction(const Library& library, const std::string &funcName): lib(library) {
-        funcPtr = reinterpret_cast<funcType>(lib.GetProcAddress(funcName));
-        if (!funcPtr) {
-            throw std::runtime_error("Failed to load function \"" + funcName + "\" from \"" + library.GetName() + "\" library");
+    public:
+        DllFunction(const Library& library,
+                const std::string &funcName): lib(library) {
+            funcPtr = reinterpret_cast<funcType>(lib.GetProcAddress(funcName));
+            if (!funcPtr) {
+                throw std::runtime_error("Failed to load function \""
+                        + funcName + "\" from \""
+                        + library.GetName() + "\" library");
+            }
         }
-    }
 
-    operator funcType() const {
-        return funcPtr;
-    }
-};
+        operator funcType() const {
+            return funcPtr;
+        }
+    };
 } // namespace
 
 extern "C" {
 typedef Status (*XInitThreadsFuncPtr)();
 typedef Display* (*XOpenDisplayFuncPtr)(char *display_name);
 
-typedef Atom (*XInternAtomFuncPtr)(Display *display, char *atom_name, Bool only_if_exists);
+typedef Atom (*XInternAtomFuncPtr)(
+        Display *display, char *atom_name, Bool only_if_exists);
 
 typedef Window (*XDefaultRootWindowFuncPtr)(Display *display);
 
@@ -1108,32 +1155,37 @@
         return;
     }
 
-    DllFunction<XDefaultRootWindowFuncPtr> XDefaultRootWindowFunc(libX11, "XDefaultRootWindow");
+    DllFunction<XDefaultRootWindowFuncPtr> XDefaultRootWindowFunc(libX11,
+            "XDefaultRootWindow");
 
     searchWindowHelper(XDefaultRootWindowFunc(_display));
 
     reactivateProcess();
 
-    DllFunction<XCloseDisplayFuncPtr> XCloseDisplayFunc(libX11, "XCloseDisplay");
+    DllFunction<XCloseDisplayFuncPtr> XCloseDisplayFunc(libX11,
+            "XCloseDisplay");
 
     XCloseDisplayFunc(_display);
 }
 
 extern "C" {
-typedef int (*XGetWindowPropertyFuncPtr)(Display *display, Window w, Atom property,
-        long long_offset, long long_length, Bool d, Atom req_type, Atom *actual_type_return,
+typedef int (*XGetWindowPropertyFuncPtr)(
+        Display *display, Window w, Atom property, long long_offset,
+        long long_length, Bool d, Atom req_type, Atom *actual_type_return,
         int *actual_format_return, unsigned long *nitems_return,
         unsigned long *bytes_after_return, unsigned char **prop_return);
 
-typedef Status (*XQueryTreeFuncPtr)(Display *display, Window w, Window *root_return,
-        Window *parent_return, Window **children_return, unsigned int *nchildren_return);
+typedef Status (*XQueryTreeFuncPtr)(
+        Display *display, Window w, Window *root_return, Window *parent_return,
+         Window **children_return, unsigned int *nchildren_return);
 
 typedef int (*XFreeFuncPtr)(void *data);
 }
 
 void ProcessReactivator::searchWindowHelper(Window w) {
 
-    DllFunction<XGetWindowPropertyFuncPtr> XGetWindowPropertyFunc(libX11, "XGetWindowProperty");
+    DllFunction<XGetWindowPropertyFuncPtr> XGetWindowPropertyFunc(libX11,
+            "XGetWindowProperty");
 
     DllFunction<XFreeFuncPtr> XFreeFunc(libX11, "XFree");
 
@@ -1141,8 +1193,8 @@
     int format;
     unsigned long  num, bytesAfter;
     unsigned char* propPid = 0;
-    if (Success == XGetWindowPropertyFunc(_display, w, _atomPid, 0, 1, False, XA_CARDINAL,
-                                     &type, &format, &num, &bytesAfter, &propPid)) {
+    if (Success == XGetWindowPropertyFunc(_display, w, _atomPid, 0, 1,
+            False, XA_CARDINAL, &type, &format, &num, &bytesAfter, &propPid)) {
         if (propPid != 0) {
             if (_pid == *((pid_t *)propPid)) {
                 _result.push_back(w);
@@ -1156,7 +1208,8 @@
     Window root, parent;
     Window* child;
     unsigned int numChildren;
-    if (0 != XQueryTreeFunc(_display, w, &root, &parent, &child, &numChildren)) {
+    if (0 != XQueryTreeFunc(_display, w, &root,
+            &parent, &child, &numChildren)) {
         for (unsigned int i = 0; i < numChildren; i++) {
             searchWindowHelper(child[i]);
         }
@@ -1176,7 +1229,8 @@
 
 void ProcessReactivator::reactivateProcess() {
 
-    DllFunction<XGetWindowAttributesFuncPtr> XGetWindowAttributesFunc(libX11, "XGetWindowAttributes");
+    DllFunction<XGetWindowAttributesFuncPtr> XGetWindowAttributesFunc(libX11,
+            "XGetWindowAttributes");
 
     DllFunction<XSendEventFuncPtr> XSendEventFunc(libX11, "XSendEvent");
 
@@ -1184,11 +1238,13 @@
 
     DllFunction<XInternAtomFuncPtr> XInternAtomFunc(libX11, "XInternAtom");
 
-    for (std::list<Window>::const_iterator it = _result.begin(); it != _result.end(); it++) {
+    for (std::list<Window>::const_iterator it = _result.begin();
+            it != _result.end(); it++) {
         // try sending an event to activate window,
         // after that we can try to raise it.
         XEvent xev;
-        Atom atom = XInternAtomFunc (_display, (char*)"_NET_ACTIVE_WINDOW", False);
+        Atom atom = XInternAtomFunc (
+                _display, (char*)"_NET_ACTIVE_WINDOW", False);
         xev.xclient.type = ClientMessage;
         xev.xclient.serial = 0;
         xev.xclient.send_event = True;
@@ -1209,6 +1265,5 @@
     }
 }
 
-//--------------------------------------------------------------------------------------------------
 
 #endif // LINUX
--- a/src/jdk.packager/share/native/library/common/LinuxPlatform.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/LinuxPlatform.h	Wed Oct 17 13:50:11 2018 -0400
@@ -54,8 +54,10 @@
     virtual void ShowMessage(TString title, TString description);
     virtual void ShowMessage(TString description);
 
-    virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release);
-    virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release);
+    virtual TCHAR* ConvertStringToFileSystemString(
+            TCHAR* Source, bool &release);
+    virtual TCHAR* ConvertFileSystemStringToString(
+            TCHAR* Source, bool &release);
 
     virtual void SetCurrentDirectory(TString Value);
     virtual TString GetPackageRootDirectory();
--- a/src/jdk.packager/share/native/library/common/Lock.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Lock.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -41,40 +41,40 @@
 void Lock::Initialize() {
 #ifdef WINDOWS
     InitializeCriticalSectionAndSpinCount(&FCriticalSection, 0x00000400);
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef MAC
-    //FMutex =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
-#endif //MAC
+    // FMutex =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
+#endif // MAC
 #ifdef LINUX
-    //FMutex =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-#endif //LINUX
+    // FMutex =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+#endif // LINUX
 }
 
 Lock::~Lock(void) {
 #ifdef WINDOWS
     DeleteCriticalSection(&FCriticalSection);
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     pthread_mutex_unlock(&FMutex);
-#endif //POSIX
+#endif // POSIX
 }
 
 void Lock::Enter() {
 #ifdef WINDOWS
     EnterCriticalSection(&FCriticalSection);
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     pthread_mutex_lock(&FMutex);
-#endif //POSIX
+#endif // POSIX
 }
 
 void Lock::Leave() {
 #ifdef WINDOWS
     LeaveCriticalSection(&FCriticalSection);
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     pthread_mutex_unlock(&FMutex);
-#endif //POSIX
+#endif // POSIX
 }
 
 bool Lock::TryEnter() {
@@ -82,10 +82,10 @@
 #ifdef WINDOWS
     if (TryEnterCriticalSection (&FCriticalSection) != 0)
         result = true;
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     if (pthread_mutex_lock(&FMutex) == 0)
         result = true;
-#endif //POSIX
+#endif // POSIX
     return result;
 }
--- a/src/jdk.packager/share/native/library/common/Lock.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Lock.h	Wed Oct 17 13:50:11 2018 -0400
@@ -54,4 +54,4 @@
     bool TryEnter();
 };
 
-#endif //LOCK_H
+#endif // LOCK_H
--- a/src/jdk.packager/share/native/library/common/MacPlatform.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/MacPlatform.h	Wed Oct 17 13:50:11 2018 -0400
@@ -50,8 +50,10 @@
     virtual void ShowMessage(TString title, TString description);
     virtual void ShowMessage(TString description);
 
-    virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release);
-    virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release);
+    virtual TCHAR* ConvertStringToFileSystemString(
+            TCHAR* Source, bool &release);
+    virtual TCHAR* ConvertFileSystemStringToString(
+            TCHAR* Source, bool &release);
 
     virtual void SetCurrentDirectory(TString Value);
     virtual TString GetPackageRootDirectory();
@@ -71,7 +73,7 @@
 #ifdef DEBUG
     virtual bool IsNativeDebuggerPresent();
     virtual int GetProcessID();
-#endif //DEBUG
+#endif // DEBUG
 };
 
 
@@ -82,6 +84,6 @@
   virtual bool Load(TString Appid);
 };
 
-#endif //MACPLATFORM_H
+#endif // MACPLATFORM_H
 
-#endif //MAC
+#endif // MAC
--- a/src/jdk.packager/share/native/library/common/Macros.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Macros.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -44,7 +44,8 @@
     macros.AddMacro(_T("$LAUNCHERDIR"), package.GetPackageLauncherDirectory());
     macros.AddMacro(_T("$APPDATADIR"), package.GetAppDataDirectory());
 
-    TString javaHome = FilePath::ExtractFilePath(package.GetJVMLibraryFileName());
+    TString javaHome =
+            FilePath::ExtractFilePath(package.GetJVMLibraryFileName());
     macros.AddMacro(_T("$JREHOME"), javaHome);
 
     // App CDS Macros
--- a/src/jdk.packager/share/native/library/common/Macros.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Macros.h	Wed Oct 17 13:50:11 2018 -0400
@@ -46,4 +46,4 @@
     void AddMacro(TString Key, TString Value);
 };
 
-#endif //MACROS_H
+#endif // MACROS_H
--- a/src/jdk.packager/share/native/library/common/Messages.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Messages.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -36,19 +36,20 @@
     FMessages.SetReadOnly(false);
     FMessages.SetValue(LIBRARY_NOT_FOUND, _T("Failed to find library."));
     FMessages.SetValue(FAILED_CREATING_JVM, _T("Failed to create JVM"));
-    FMessages.SetValue(FAILED_LOCATING_JVM_ENTRY_POINT, _T("Failed to locate JLI_Launch"));
+    FMessages.SetValue(FAILED_LOCATING_JVM_ENTRY_POINT,
+            _T("Failed to locate JLI_Launch"));
     FMessages.SetValue(NO_MAIN_CLASS_SPECIFIED, _T("No main class specified"));
     FMessages.SetValue(METHOD_NOT_FOUND, _T("No method %s in class %s."));
     FMessages.SetValue(CLASS_NOT_FOUND, _T("Class %s not found."));
     FMessages.SetValue(ERROR_INVOKING_METHOD, _T("Error invoking method."));
-    //FMessages.SetValue(CONFIG_FILE_NOT_FOUND, _T("Configuration file %s is not found."));
-    //FMessages.SetValue(BUNDLED_JVM_NOT_FOUND, _T("$JAVAVMLIBRARYNAME is not found in the bundled runtime."));
-    FMessages.SetValue(APPCDS_CACHE_FILE_NOT_FOUND, _T("Error: AppCDS cache does not exists:\n%s\n"));
+    FMessages.SetValue(APPCDS_CACHE_FILE_NOT_FOUND,
+            _T("Error: AppCDS cache does not exists:\n%s\n"));
 }
 
 Messages& Messages::GetInstance() {
     //Lock lock;
-    static Messages instance; // Guaranteed to be destroyed. Instantiated on first use.
+    static Messages instance;
+    // Guaranteed to be destroyed. Instantiated on first use.
     return instance;
 }
 
--- a/src/jdk.packager/share/native/library/common/Messages.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Messages.h	Wed Oct 17 13:50:11 2018 -0400
@@ -55,4 +55,4 @@
     TString GetMessage(const TString Key);
 };
 
-#endif //MESSAGES_H
+#endif // MESSAGES_H
--- a/src/jdk.packager/share/native/library/common/OrderedMap.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/OrderedMap.h	Wed Oct 17 13:50:11 2018 -0400
@@ -74,7 +74,8 @@
     typename list_type::iterator FindListItem(const key_type Key) {
         typename list_type::iterator result = FList.end();
 
-        for (typename list_type::iterator iterator = FList.begin(); iterator != FList.end(); iterator++) {
+        for (typename list_type::iterator iterator =
+                FList.begin(); iterator != FList.end(); iterator++) {
             container_type *item = *iterator;
 
             if (item->first == Key) {
@@ -120,7 +121,8 @@
     }
 
     void Clear() {
-        for (typename list_type::iterator iterator = FList.begin(); iterator != FList.end(); iterator++) {
+        for (typename list_type::iterator iterator =
+                FList.begin(); iterator != FList.end(); iterator++) {
             container_type *item = *iterator;
 
             if (item != NULL) {
@@ -245,4 +247,4 @@
     }
 };
 
-#endif //ORDEREDMAP_H
+#endif // ORDEREDMAP_H
--- a/src/jdk.packager/share/native/library/common/Package.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Package.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -38,7 +38,8 @@
     Initialize();
 }
 
-TPlatformNumber StringToPercentageOfNumber(TString Value, TPlatformNumber Number) {
+TPlatformNumber StringToPercentageOfNumber(TString Value,
+        TPlatformNumber Number) {
     TPlatformNumber result = 0;
     size_t percentage = atoi(PlatformString(Value.c_str()));
 
@@ -62,12 +63,16 @@
     }
     TString appName;
     TString appVersion;
-    AutoFreePtr<ISectionalPropertyContainer> config = platform.GetConfigFile(platform.GetConfigFileName());
+    AutoFreePtr<ISectionalPropertyContainer> config =
+            platform.GetConfigFile(platform.GetConfigFileName());
     std::map<TString, TString> keys = platform.GetKeys();
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[APP_NAME_KEY], appName);
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_VERSION], appVersion);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[APP_NAME_KEY], appName);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_VERSION], appVersion);
     TString singleInstance;
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APPLICATION_INSTANCE], singleInstance);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_APPLICATION_INSTANCE], singleInstance);
     if (singleInstance == _T("single")) {
         TString uniqueID = appName + FBootFields->FAppID + appVersion;
         // if another instance is running, later we can try to reactivate it
@@ -88,51 +93,68 @@
 
     FBootFields->FPackageRootDirectory = platform.GetPackageRootDirectory();
     FBootFields->FPackageAppDirectory = platform.GetPackageAppDirectory();
-    FBootFields->FPackageLauncherDirectory = platform.GetPackageLauncherDirectory();
+    FBootFields->FPackageLauncherDirectory =
+            platform.GetPackageLauncherDirectory();
     FBootFields->FAppDataDirectory = platform.GetAppDataDirectory();
 
     std::map<TString, TString> keys = platform.GetKeys();
 
     // Read from configure.cfg/Info.plist
-    AutoFreePtr<ISectionalPropertyContainer> config = platform.GetConfigFile(platform.GetConfigFileName());
+    AutoFreePtr<ISectionalPropertyContainer> config =
+            platform.GetConfigFile(platform.GetConfigFileName());
 
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_ID_KEY], FBootFields->FAppID);
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[PACKAGER_APP_DATA_DIR], FBootFields->FPackageAppDataDirectory);
-    FBootFields->FPackageAppDataDirectory = FilePath::FixPathForPlatform(FBootFields->FPackageAppDataDirectory);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_APP_ID_KEY], FBootFields->FAppID);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[PACKAGER_APP_DATA_DIR], FBootFields->FPackageAppDataDirectory);
+    FBootFields->FPackageAppDataDirectory =
+            FilePath::FixPathForPlatform(FBootFields->FPackageAppDataDirectory);
 
     // Main JAR.
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINJAR_KEY], FBootFields->FMainJar);
-    FBootFields->FMainJar = FilePath::IncludeTrailingSeparater(GetPackageAppDirectory()) +
-                            FilePath::FixPathForPlatform(FBootFields->FMainJar);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_MAINJAR_KEY], FBootFields->FMainJar);
+    FBootFields->FMainJar =
+            FilePath::IncludeTrailingSeparator(GetPackageAppDirectory())
+            + FilePath::FixPathForPlatform(FBootFields->FMainJar);
 
     // Main Module.
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINMODULE_KEY], FBootFields->FMainModule);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_MAINMODULE_KEY], FBootFields->FMainModule);
 
     // Classpath.
-    // 1. If the provided class path contains main jar then only use provided class path.
+    // 1. If the provided class path contains main jar then only use
+    //    provided class path.
     // 2. If class path provided by config file is empty then add main jar.
     // 3. If main jar is not in provided class path then add it.
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_CLASSPATH_KEY], FBootFields->FClassPath);
-    FBootFields->FClassPath = FilePath::FixPathSeparatorForPlatform(FBootFields->FClassPath);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_CLASSPATH_KEY], FBootFields->FClassPath);
+    FBootFields->FClassPath =
+            FilePath::FixPathSeparatorForPlatform(FBootFields->FClassPath);
 
     if (FBootFields->FClassPath.empty() == true) {
         FBootFields->FClassPath = GetMainJar();
-    }
-    else if (FBootFields->FClassPath.find(GetMainJar()) == TString::npos) {
-        FBootFields->FClassPath = GetMainJar() + FilePath::PathSeparator() + FBootFields->FClassPath;
+    } else if (FBootFields->FClassPath.find(GetMainJar()) == TString::npos) {
+        FBootFields->FClassPath = GetMainJar()
+                + FilePath::PathSeparator() + FBootFields->FClassPath;
     }
 
     // Modulepath.
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MODULEPATH_KEY], FBootFields->FModulePath);
-    FBootFields->FModulePath = FilePath::FixPathSeparatorForPlatform(FBootFields->FModulePath);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_MODULEPATH_KEY], FBootFields->FModulePath);
+    FBootFields->FModulePath =
+            FilePath::FixPathSeparatorForPlatform(FBootFields->FModulePath);
 
     // Main Class.
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINCLASSNAME_KEY], FBootFields->FMainClassName);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_MAINCLASSNAME_KEY], FBootFields->FMainClassName);
 
     // Splash Screen.
-    if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_SPLASH_KEY], FBootFields->FSplashScreenFileName) == true) {
-        FBootFields->FSplashScreenFileName = FilePath::IncludeTrailingSeparater(GetPackageAppDirectory()) +
-                                             FilePath::FixPathForPlatform(FBootFields->FSplashScreenFileName);
+    if (config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_SPLASH_KEY],
+            FBootFields->FSplashScreenFileName) == true) {
+        FBootFields->FSplashScreenFileName =
+            FilePath::IncludeTrailingSeparator(GetPackageAppDirectory())
+            + FilePath::FixPathForPlatform(FBootFields->FSplashScreenFileName);
 
         if (FilePath::FileExists(FBootFields->FSplashScreenFileName) == false) {
             FBootFields->FSplashScreenFileName = _T("");
@@ -140,7 +162,8 @@
     }
 
     // Runtime.
-    config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[JVM_RUNTIME_KEY], FBootFields->FJVMRuntimeDirectory);
+    config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[JVM_RUNTIME_KEY], FBootFields->FJVMRuntimeDirectory);
 
     // Read jvmargs.
     PromoteAppCDSState(config);
@@ -156,7 +179,8 @@
     }
 
     // Read jvmuserarg defaults.
-    config->GetSection(keys[CONFIG_SECTION_JVMUSEROPTIONS], FDefaultJVMUserArgs);
+    config->GetSection(keys[CONFIG_SECTION_JVMUSEROPTIONS],
+            FDefaultJVMUserArgs);
 
     // Load JVM user overrides.
     TString jvmUserArgsConfigFileName = GetJVMUserArgsConfigFileName();
@@ -166,15 +190,18 @@
         IniFile userConfig;
 
         if (userConfig.LoadFromFile(jvmUserArgsConfigFileName) == false) {
-            // New property file format was not found, attempt to load old property file format.
-            userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], FJVMUserArgsOverrides);
+            // New property file format was not found,
+            // attempt to load old property file format.
+            userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS],
+                    FJVMUserArgsOverrides);
         }
 
-        userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], FJVMUserArgsOverrides);
-    }
-    else {
+        userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS],
+                FJVMUserArgsOverrides);
+    } else {
         // Attemp to load java.util.prefs for legacy JVM user overrides.
-        AutoFreePtr<JavaUserPreferences> javaPreferences(JavaUserPreferences::CreateInstance());
+        AutoFreePtr<JavaUserPreferences> javaPreferences(
+                JavaUserPreferences::CreateInstance());
 
         if (javaPreferences->Load(GetAppID()) == true) {
             FJVMUserArgsOverrides = javaPreferences->GetData();
@@ -184,20 +211,24 @@
     // Auto Memory.
     TString autoMemory;
 
-    if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_MEMORY], autoMemory) == true) {
+    if (config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_APP_MEMORY], autoMemory) == true) {
         if (autoMemory == _T("auto") || autoMemory == _T("100%")) {
             FBootFields->FMemoryState = PackageBootFields::msAuto;
             FBootFields->FMemorySize = platform.GetMemorySize();
-        }
-        else if (autoMemory.length() == 2 && isdigit(autoMemory[0]) && autoMemory[1] == '%') {
+        } else if (autoMemory.length() == 2 && isdigit(autoMemory[0]) &&
+                autoMemory[1] == '%') {
             FBootFields->FMemoryState = PackageBootFields::msAuto;
-            FBootFields->FMemorySize = StringToPercentageOfNumber(autoMemory.substr(0, 1), platform.GetMemorySize());
-        }
-        else if (autoMemory.length() == 3 && isdigit(autoMemory[0]) && isdigit(autoMemory[1]) && autoMemory[2] == '%') {
+            FBootFields->FMemorySize =
+                    StringToPercentageOfNumber(autoMemory.substr(0, 1),
+                    platform.GetMemorySize());
+        } else if (autoMemory.length() == 3 && isdigit(autoMemory[0]) &&
+                isdigit(autoMemory[1]) && autoMemory[2] == '%') {
             FBootFields->FMemoryState = PackageBootFields::msAuto;
-            FBootFields->FMemorySize = StringToPercentageOfNumber(autoMemory.substr(0, 2), platform.GetMemorySize());
-        }
-        else {
+            FBootFields->FMemorySize =
+                    StringToPercentageOfNumber(autoMemory.substr(0, 2),
+                    platform.GetMemorySize());
+        } else {
             FBootFields->FMemoryState = PackageBootFields::msManual;
             FBootFields->FMemorySize = 0;
         }
@@ -205,7 +236,8 @@
 
     // Debug
     TString debug;
-    if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_DEBUG], debug) == true) {
+    if (config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+            keys[CONFIG_APP_DEBUG], debug) == true) {
         FBootFields->FArgs.push_back(debug);
     }
 
@@ -229,7 +261,8 @@
 //    -> cdsGenCache If -Xappcds:generatecache
 //    -> cdsDisabled If -Xappcds:off
 //    -> cdsEnabled If "AppCDSJVMOptions" section is present
-//    -> cdsAuto If "AppCDSJVMOptions" section is present and app.appcds.cache=auto
+//    -> cdsAuto If "AppCDSJVMOptions" section is present and
+//               app.appcds.cache=auto
 //    -> cdsDisabled Default
 //
 void Package::PromoteAppCDSState(ISectionalPropertyContainer* Config) {
@@ -247,21 +280,24 @@
         }
 
         case cdsUninitialized: {
-            if (Config->ContainsSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS]) == true) {
+            if (Config->ContainsSection(
+                    keys[CONFIG_SECTION_APPCDSJVMOPTIONS]) == true) {
                 // If the AppCDS section is present then enable AppCDS.
                 TString appCDSCacheValue;
 
-                // If running with AppCDS enabled, and the configuration has been setup so "auto" is enabled, then
-                // the launcher will attempt to generate the cache file automatically and run the application.
-                if (Config->GetValue(keys[CONFIG_SECTION_APPLICATION], _T("app.appcds.cache"), appCDSCacheValue) == true &&
+                // If running with AppCDS enabled, and the configuration has
+                // been setup so "auto" is enabled, then
+                // the launcher will attempt to generate the cache file
+                // automatically and run the application.
+                if (Config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+                        _T("app.appcds.cache"), appCDSCacheValue) == true &&
                     appCDSCacheValue == _T("auto")) {
                     platform.SetAppCDSState(cdsAuto);
                 }
                 else {
                     platform.SetAppCDSState(cdsEnabled);
                 }
-            }
-            else {
+            } else {
 
                 platform.SetAppCDSState(cdsDisabled);
             }
@@ -277,35 +313,44 @@
     switch (platform.GetAppCDSState()) {
         case cdsUninitialized: {
             throw Exception(_T("Internal Error"));
-    }
+        }
 
         case cdsDisabled: {
-            Config->GetSection(keys[CONFIG_SECTION_JVMOPTIONS], FBootFields->FJVMArgs);
+            Config->GetSection(keys[CONFIG_SECTION_JVMOPTIONS],
+                    FBootFields->FJVMArgs);
             break;
         }
 
         case cdsGenCache: {
-            Config->GetSection(keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS], FBootFields->FJVMArgs);
+            Config->GetSection(keys[
+                    CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS],
+                    FBootFields->FJVMArgs);
             break;
         }
 
         case cdsAuto:
         case cdsEnabled: {
             if (Config->GetValue(keys[CONFIG_SECTION_APPCDSJVMOPTIONS],
-                                 _T( "-XX:SharedArchiveFile"), FBootFields->FAppCDSCacheFileName) == true) {
-                // File names may contain the incorrect path separators. The cache file name must be
-                // corrected at this point.
+                    _T( "-XX:SharedArchiveFile"),
+                    FBootFields->FAppCDSCacheFileName) == true) {
+                // File names may contain the incorrect path separators.
+                // The cache file name must be corrected at this point.
                 if (FBootFields->FAppCDSCacheFileName.empty() == false) {
                     IniFile* iniConfig = dynamic_cast<IniFile*>(Config);
 
                     if (iniConfig != NULL) {
-                        FBootFields->FAppCDSCacheFileName = FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName);
-                        iniConfig->SetValue(keys[CONFIG_SECTION_APPCDSJVMOPTIONS],
-                                     _T( "-XX:SharedArchiveFile"), FBootFields->FAppCDSCacheFileName);
+                        FBootFields->FAppCDSCacheFileName =
+                                FilePath::FixPathForPlatform(
+                                FBootFields->FAppCDSCacheFileName);
+                        iniConfig->SetValue(keys[
+                                CONFIG_SECTION_APPCDSJVMOPTIONS],
+                                _T( "-XX:SharedArchiveFile"),
+                                FBootFields->FAppCDSCacheFileName);
                     }
                 }
 
-                Config->GetSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS], FBootFields->FJVMArgs);
+                Config->GetSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS],
+                        FBootFields->FJVMArgs);
             }
 
             break;
@@ -317,7 +362,8 @@
     if (argc > 0) {
         std::list<TString> args;
 
-        // Prepare app arguments. Skip value at index 0 - this is path to executable.
+        // Prepare app arguments. Skip value at index 0 -
+        // this is path to executable.
         FBootFields->FCommandName = argv[0];
 
         // Path to executable is at 0 index so start at index 1.
@@ -346,7 +392,8 @@
             }
 
             if (arg == _T("-NSDocumentRevisionsDebugMode")) {
-                // Ignore -NSDocumentRevisionsDebugMode and the following YES/NO
+                // Ignore -NSDocumentRevisionsDebugMode and
+                // the following YES/NO
                 index++;
                 continue;
             }
@@ -362,7 +409,8 @@
 }
 
 Package& Package::GetInstance() {
-    static Package instance; // Guaranteed to be destroyed. Instantiated on first use.
+    static Package instance;
+    // Guaranteed to be destroyed. Instantiated on first use.
     return instance;
 }
 
@@ -389,8 +437,8 @@
     return FJVMUserArgsOverrides;
 }
 
-std::vector<TString> GetKeysThatAreNotDuplicates(OrderedMap<TString, TString> &Defaults,
-                                               OrderedMap<TString, TString> &Overrides) {
+std::vector<TString> GetKeysThatAreNotDuplicates(OrderedMap<TString,
+        TString> &Defaults, OrderedMap<TString, TString> &Overrides) {
     std::vector<TString> result;
     std::vector<TString> overrideKeys = Overrides.GetKeys();
 
@@ -410,8 +458,8 @@
     return result;
 }
 
-OrderedMap<TString, TString> CreateOrderedMapFromKeyList(OrderedMap<TString, TString> &Map,
-                                                         std::vector<TString> &Keys) {
+OrderedMap<TString, TString> CreateOrderedMapFromKeyList(OrderedMap<TString,
+        TString> &Map, std::vector<TString> &Keys) {
     OrderedMap<TString, TString> result;
 
     for (size_t index = 0; index < Keys.size(); index++) {
@@ -431,10 +479,12 @@
     OrderedMap<TString, TString> overrides = Value;
 
     // 1. Remove entries in the overrides that are the same as the defaults.
-    std::vector<TString> overrideKeys = GetKeysThatAreNotDuplicates(defaults, overrides);
+    std::vector<TString> overrideKeys =
+            GetKeysThatAreNotDuplicates(defaults, overrides);
 
     // 2. Create an ordered map from the overrides that weren't removed.
-    FJVMUserArgsOverrides = CreateOrderedMapFromKeyList(overrides, overrideKeys);
+    FJVMUserArgsOverrides =
+            CreateOrderedMapFromKeyList(overrides, overrideKeys);
 
     // 3. Overwrite JVM user config overrides with provided key/value pair.
     SaveJVMUserArgOverrides(FJVMUserArgsOverrides);
@@ -447,7 +497,8 @@
     IniFile userConfig;
     Platform& platform = Platform::GetInstance();
     std::map<TString, TString> keys = platform.GetKeys();
-    userConfig.AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], Data);
+    userConfig.AppendSection(
+           keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], Data);
     userConfig.SaveToFile(GetJVMUserArgsConfigFileName());
 }
 
@@ -455,8 +506,9 @@
     return FJVMUserArgs;
 }
 
-std::vector<TString> GetKeysThatAreNotOverridesOfDefaultValues(OrderedMap<TString, TString> &Defaults,
-                                                               OrderedMap<TString, TString> &Overrides) {
+std::vector<TString> GetKeysThatAreNotOverridesOfDefaultValues(
+        OrderedMap<TString, TString> &Defaults, OrderedMap<TString,
+        TString> &Overrides) {
     std::vector<TString> result;
     std::vector<TString> keys = Overrides.GetKeys();
 
@@ -480,12 +532,16 @@
 }
 
 void Package::MergeJVMDefaultsWithOverrides() {
-    // Merge jvmuserarg defaults and jvmuserarg overrides to populate FJVMUserArgs.
-    // 1. If the key is in the config file and not the java.user.preferences the default value is used,
+    // Merge jvmuserarg defaults and jvmuserarg overrides to populate
+    // FJVMUserArgs.
+    // 1. If the key is in the config file and not the
+    //    java.user.preferences the default value is used,
     //    the one from the config file.
-    // 2. If the key is in the java.user.preferences then the value from the java.user.preferences is used and
+    // 2. If the key is in the java.user.preferences then the value
+    //    from the java.user.preferences is used and
     //    the config file value is ignored.
-    // 3. If the key is not in the config file but it is in the java.user.preferences then it is added anyway.
+    // 3. If the key is not in the config file but it is in
+    //    the java.user.preferences then it is added anyway.
     //    And if it is removed it won't show back up.
     FJVMUserArgs.Clear();
     FJVMUserArgs.Append(FDefaultJVMUserArgs);
@@ -494,7 +550,8 @@
 
     // 1. Iterate over all elements in overrides to see if any items
     //    override a default value.
-    std::vector<TString> keys = GetKeysThatAreNotOverridesOfDefaultValues(FJVMUserArgs, overrides);
+    std::vector<TString> keys =
+            GetKeysThatAreNotOverridesOfDefaultValues(FJVMUserArgs, overrides);
 
 
     // 2. All remaining items in overrides are appended to the end.
@@ -537,10 +594,12 @@
     if (FJVMUserArgsConfigFileName.empty()) {
         Platform& platform = Platform::GetInstance();
 
-        FJVMUserArgsConfigFileName = FilePath::IncludeTrailingSeparater(platform.GetAppDataDirectory()) +
-                                        FilePath::IncludeTrailingSeparater(GetPackageAppDataDirectory()) +
-                                        FilePath::IncludeTrailingSeparater(_T("packager")) +
-                                        _T("jvmuserargs.cfg");
+        FJVMUserArgsConfigFileName = FilePath::IncludeTrailingSeparator(
+                platform.GetAppDataDirectory())
+                + FilePath::IncludeTrailingSeparator(
+                GetPackageAppDataDirectory())
+                + FilePath::IncludeTrailingSeparator(_T("packager"))
+                + _T("jvmuserargs.cfg");
     }
 
     return FJVMUserArgsConfigFileName;
@@ -549,13 +608,15 @@
 TString Package::GetAppCDSCacheDirectory() {
     if (FAppCDSCacheDirectory.empty()) {
         Platform& platform = Platform::GetInstance();
-        FAppCDSCacheDirectory = FilePath::IncludeTrailingSeparater(platform.GetAppDataDirectory()) +
-                                FilePath::IncludeTrailingSeparater(GetPackageAppDataDirectory()) +
-                                _T("cache");
+        FAppCDSCacheDirectory = FilePath::IncludeTrailingSeparator(
+                platform.GetAppDataDirectory())
+                + FilePath::IncludeTrailingSeparator(
+                GetPackageAppDataDirectory()) + _T("cache");
 
         Macros& macros = Macros::GetInstance();
         FAppCDSCacheDirectory = macros.ExpandMacros(FAppCDSCacheDirectory);
-        FAppCDSCacheDirectory = FilePath::FixPathForPlatform(FAppCDSCacheDirectory);
+        FAppCDSCacheDirectory =
+                FilePath::FixPathForPlatform(FAppCDSCacheDirectory);
     }
 
     return FAppCDSCacheDirectory;
@@ -566,8 +627,10 @@
 
     if (FBootFields->FAppCDSCacheFileName.empty() == false) {
         Macros& macros = Macros::GetInstance();
-        FBootFields->FAppCDSCacheFileName = macros.ExpandMacros(FBootFields->FAppCDSCacheFileName);
-        FBootFields->FAppCDSCacheFileName = FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName);
+        FBootFields->FAppCDSCacheFileName =
+                macros.ExpandMacros(FBootFields->FAppCDSCacheFileName);
+        FBootFields->FAppCDSCacheFileName =
+                FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName);
     }
 
     return FBootFields->FAppCDSCacheFileName;
@@ -615,7 +678,8 @@
         Platform& platform = Platform::GetInstance();
         Macros& macros = Macros::GetInstance();
         TString jvmRuntimePath = macros.ExpandMacros(GetJVMRuntimeDirectory());
-        FBootFields->FJVMLibraryFileName = platform.GetBundledJVMLibraryFileName(jvmRuntimePath);
+        FBootFields->FJVMLibraryFileName =
+                platform.GetBundledJVMLibraryFileName(jvmRuntimePath);
     }
 
     return FBootFields->FJVMLibraryFileName;
--- a/src/jdk.packager/share/native/library/common/Package.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Package.h	Wed Oct 17 13:50:11 2018 -0400
@@ -81,13 +81,13 @@
     DebugState FDebugging;
 
     OrderedMap<TString, TString> FJVMUserArgsOverrides;
-    OrderedMap<TString, TString> FDefaultJVMUserArgs; // Contains JVM user defaults
-    OrderedMap<TString, TString> FJVMUserArgs; // Contains a merge of JVM defaults and user overrides
-
+    // Contains JVM user defaults
+    OrderedMap<TString, TString> FDefaultJVMUserArgs;
+    // Contains a merge of JVM defaults and user overrides
+    OrderedMap<TString, TString> FJVMUserArgs;
 
     Package(void);
 
-    //void Initialize();
     void MergeJVMDefaultsWithOverrides();
     TString GetMainJar();
     void SaveJVMUserArgOverrides(OrderedMap<TString, TString> Data);
@@ -140,4 +140,4 @@
     DebugState Debugging();
 };
 
-#endif //PACKAGE_H
+#endif // PACKAGE_H
--- a/src/jdk.packager/share/native/library/common/Platform.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Platform.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -36,24 +36,22 @@
 StaticReadProperty<TString, &Environment::GetNewLine> Environment::NewLine;
 
 
-//--------------------------------------------------------------------------------------------------
+Platform& Platform::GetInstance() {
 
-Platform& Platform::GetInstance() {
-    //Lock lock(true);
 #ifdef WINDOWS
     static WindowsPlatform instance;
 #endif // WINDOWS
+
 #ifdef LINUX
     static LinuxPlatform instance;
 #endif // LINUX
+
 #ifdef MAC
     static MacPlatform instance;
 #endif // MAC
     return instance;
 }
 
-//--------------------------------------------------------------------------------------------------
-
 
 Library::Library() {
     Initialize();
@@ -86,7 +84,8 @@
 
 void Library::LoadDependencies() {
     if (FDependentLibraryNames != NULL && FDependenciesLibraries != NULL) {
-        for (std::vector<TString>::const_iterator iterator = FDependentLibraryNames->begin();
+        for (std::vector<TString>::const_iterator iterator =
+                FDependentLibraryNames->begin();
                 iterator != FDependentLibraryNames->end(); iterator++) {
             Library* library = new Library();
 
@@ -102,7 +101,8 @@
 
 void Library::UnloadDependencies() {
     if (FDependenciesLibraries != NULL) {
-        for (std::vector<Library*>::const_iterator iterator = FDependenciesLibraries->begin();
+        for (std::vector<Library*>::const_iterator iterator =
+                FDependenciesLibraries->begin();
                 iterator != FDependenciesLibraries->end(); iterator++) {
             Library* library = *iterator;
 
@@ -132,7 +132,8 @@
 
         if (FModule == NULL) {
             Messages& messages = Messages::GetInstance();
-            platform.ShowMessage(messages.GetMessage(LIBRARY_NOT_FOUND), FileName);
+            platform.ShowMessage(messages.GetMessage(LIBRARY_NOT_FOUND),
+                    FileName);
             result = false;
         } else {
             fname = PlatformString(FileName).toStdString();
@@ -169,7 +170,8 @@
         InitializeDependencies();
 
         if (FDependentLibraryNames != NULL) {
-            for (std::vector<TString>::const_iterator iterator = FDependentLibraryNames->begin();
+            for (std::vector<TString>::const_iterator iterator =
+                    FDependentLibraryNames->begin();
                 iterator != FDependentLibraryNames->end(); iterator++) {
                 TString fileName = *iterator;
                 AddDependency(fileName);
@@ -177,4 +179,3 @@
         }
     }
 }
-//--------------------------------------------------------------------------------------------------
--- a/src/jdk.packager/share/native/library/common/Platform.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Platform.h	Wed Oct 17 13:50:11 2018 -0400
@@ -120,13 +120,15 @@
 
 
 // Config file sections
-#define CONFIG_SECTION_APPLICATION                   _T("CONFIG_SECTION_APPLICATION")
-#define CONFIG_SECTION_JVMOPTIONS                    _T("CONFIG_SECTION_JVMOPTIONS")
-#define CONFIG_SECTION_JVMUSEROPTIONS                _T("CONFIG_SECTION_JVMUSEROPTIONS")
-#define CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS       _T("CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS")
-#define CONFIG_SECTION_APPCDSJVMOPTIONS              _T("CONFIG_SECTION_APPCDSJVMOPTIONS")
-#define CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS _T("CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS")
-#define CONFIG_SECTION_ARGOPTIONS                    _T("CONFIG_SECTION_ARGOPTIONS")
+#define CONFIG_SECTION_APPLICATION       _T("CONFIG_SECTION_APPLICATION")
+#define CONFIG_SECTION_JVMOPTIONS        _T("CONFIG_SECTION_JVMOPTIONS")
+#define CONFIG_SECTION_JVMUSEROPTIONS    _T("CONFIG_SECTION_JVMUSEROPTIONS")
+#define CONFIG_SECTION_APPCDSJVMOPTIONS  _T("CONFIG_SECTION_APPCDSJVMOPTIONS")
+#define CONFIG_SECTION_ARGOPTIONS        _T("CONFIG_SECTION_ARGOPTIONS")
+#define CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS \
+        _T("CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS")
+#define CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS \
+        _T("CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS")
 
 // Config file keys.
 #define CONFIG_VERSION            _T("CONFIG_VERSION")
@@ -151,7 +153,9 @@
 typedef void* Procedure;
 
 
-template <typename ObjectType, typename ValueType, ValueType (ObjectType::*getter)(void), void (ObjectType::*setter)(ValueType)>
+template <typename ObjectType, typename ValueType,
+        ValueType (ObjectType::*getter)(void),
+        void (ObjectType::*setter)(ValueType)>
 class Property {
 private:
     ObjectType* FObject;
@@ -179,7 +183,8 @@
     }
 };
 
-template <typename ObjectType, typename ValueType, ValueType (ObjectType::*getter)(void)>
+template <typename ObjectType, typename ValueType,
+        ValueType (ObjectType::*getter)(void)>
 class ReadProperty {
 private:
     ObjectType* FObject;
@@ -200,7 +205,8 @@
     }
 };
 
-template <typename ObjectType, typename ValueType, void (ObjectType::*setter)(ValueType)>
+template <typename ObjectType, typename ValueType,
+        void (ObjectType::*setter)(ValueType)>
 class WriteProperty {
 private:
     ObjectType* FObject;
@@ -222,7 +228,8 @@
     }
 };
 
-template <typename ValueType, ValueType (*getter)(void), void (*setter)(ValueType)>
+template <typename ValueType,
+        ValueType (*getter)(void), void (*setter)(ValueType)>
 class StaticProperty {
 public:
     StaticProperty() {
@@ -280,8 +287,8 @@
 
     virtual bool IsRunning() = 0;
     virtual bool Terminate() = 0;
-    virtual bool Execute(const TString Application, const std::vector<TString> Arguments,
-        bool AWait = false) = 0;
+    virtual bool Execute(const TString Application,
+        const std::vector<TString> Arguments, bool AWait = false) = 0;
     virtual bool Wait() = 0;
     virtual TProcessID GetProcessID() = 0;
 
@@ -350,9 +357,11 @@
     ISectionalPropertyContainer(void) {}
     virtual ~ISectionalPropertyContainer(void) {}
 
-    virtual bool GetValue(const TString SectionName, const TString Key, TString& Value) = 0;
+    virtual bool GetValue(const TString SectionName,
+            const TString Key, TString& Value) = 0;
     virtual bool ContainsSection(const TString SectionName) = 0;
-    virtual bool GetSection(const TString SectionName, OrderedMap<TString, TString> &Data) = 0;
+    virtual bool GetSection(const TString SectionName,
+            OrderedMap<TString, TString> &Data) = 0;
 };
 
 class Environment {
@@ -376,7 +385,8 @@
 
 enum DebugState {dsNone, dsNative, dsJava};
 enum MessageResponse {mrOK, mrCancel};
-enum AppCDSState {cdsUninitialized, cdsDisabled, cdsEnabled, cdsAuto, cdsGenCache};
+enum AppCDSState {cdsUninitialized, cdsDisabled,
+        cdsEnabled, cdsAuto, cdsGenCache};
 
 class Platform {
 private:
@@ -400,21 +410,25 @@
 public:
     virtual void ShowMessage(TString title, TString description) = 0;
     virtual void ShowMessage(TString description) = 0;
-    virtual MessageResponse ShowResponseMessage(TString title, TString description) = 0;
-//    virtual MessageResponse ShowResponseMessage(TString description) = 0;
+    virtual MessageResponse ShowResponseMessage(TString title,
+           TString description) = 0;
 
     virtual void SetCurrentDirectory(TString Value) = 0;
 
     // Caller must free result using delete[].
-    virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release) = 0;
+    virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source,
+            bool &release) = 0;
 
     // Caller must free result using delete[].
-    virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release) = 0;
+    virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source,
+            bool &release) = 0;
 
     // Returns:
-    // Windows=C:\Users\<username>\AppData\Local\<app.identifier>\packager\jvmuserargs.cfg
+    // Windows=C:\Users\<username>\AppData\Local\<app.identifier>
+    //     \packager\jvmuserargs.cfg
     // Linux=~/.local/<app.identifier>/packager/jvmuserargs.cfg
-    // Mac=~/Library/Application Support/<app.identifier>/packager/jvmuserargs.cfg
+    // Mac=~/Library/Application Support/<app.identifier>
+    //     /packager/jvmuserargs.cfg
     virtual TString GetAppDataDirectory() = 0;
 
     virtual TString GetPackageAppDirectory() = 0;
@@ -435,7 +449,8 @@
     virtual void FreeLibrary(Module Module) = 0;
     virtual Procedure GetProcAddress(Module Module, std::string MethodName) = 0;
     virtual std::vector<TString> GetLibraryImports(const TString FileName) = 0;
-    virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports) = 0;
+    virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(
+            std::vector<TString> Imports) = 0;
 
     // Caller must free result.
     virtual Process* CreateProcess() = 0;
@@ -450,7 +465,8 @@
     virtual std::map<TString, TString> GetKeys() = 0;
 
     virtual std::list<TString> LoadFromFile(TString FileName) = 0;
-    virtual void SaveToFile(TString FileName, std::list<TString> Contents, bool ownerOnly) = 0;
+    virtual void SaveToFile(TString FileName,
+             std::list<TString> Contents, bool ownerOnly) = 0;
 
     virtual TString GetTempDirectory() = 0;
 
@@ -518,4 +534,4 @@
     explicit FileNotFoundException(const TString Message) : Exception(Message) {}
 };
 
-#endif //PLATFORM_H
+#endif // PLATFORM_H
--- a/src/jdk.packager/share/native/library/common/PlatformString.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PlatformString.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,7 @@
 
 #include "PlatformString.h"
 
-#include "Java.h"
+#include "JavaTypes.h"
 #include "Helpers.h"
 
 #include <stdio.h>
@@ -37,8 +37,6 @@
 
 #include "jni.h"
 
-//--------------------------------------------------------------------------------------------------
-
 #ifdef MAC
 StringToFileSystemString::StringToFileSystemString(const TString &value) {
     FRelease = false;
@@ -58,8 +56,6 @@
 }
 #endif //MAC
 
-//--------------------------------------------------------------------------------------------------
-
 #ifdef MAC
 FileSystemStringToString::FileSystemStringToString(const TCHAR* value) {
     bool release = false;
@@ -79,16 +75,14 @@
 #endif //MAC
 
 
-//--------------------------------------------------------------------------------------------------
-
-
 void PlatformString::initialize() {
     FWideTStringToFree = NULL;
     FLength = 0;
     FData = NULL;
 }
 
-void PlatformString::CopyString(char *Destination, size_t NumberOfElements, const char *Source) {
+void PlatformString::CopyString(char *Destination,
+        size_t NumberOfElements, const char *Source) {
 #ifdef WINDOWS
     strcpy_s(Destination, NumberOfElements, Source);
 #endif //WINDOWS
@@ -101,7 +95,8 @@
     }
 }
 
-void PlatformString::CopyString(wchar_t *Destination, size_t NumberOfElements, const wchar_t *Source) {
+void PlatformString::CopyString(wchar_t *Destination,
+        size_t NumberOfElements, const wchar_t *Source) {
 #ifdef WINDOWS
     wcscpy_s(Destination, NumberOfElements, Source);
 #endif //WINDOWS
@@ -129,7 +124,8 @@
 }
 
 // Owner must free the return value.
-MultibyteString PlatformString::WideStringToMultibyteString(const wchar_t* value) {
+MultibyteString PlatformString::WideStringToMultibyteString(
+        const wchar_t* value) {
     MultibyteString result;
     size_t count = 0;
 
@@ -142,7 +138,8 @@
 
     if (count > 0) {
         result.data = new char[count + 1];
-        result.length = WideCharToMultiByte(CP_UTF8, 0, value, -1, result.data, (int)count, NULL, NULL);
+        result.length = WideCharToMultiByte(CP_UTF8, 0, value, -1,
+                result.data, (int)count, NULL, NULL);
 #endif //WINDOWS
 
 #ifdef POSIX
@@ -269,7 +266,6 @@
 }
 
 TString PlatformString::Format(const TString value, ...) {
-//std::string PlatformString::Format(std::string value, ...) {
     TString result = value;
 
     va_list arglist;
--- a/src/jdk.packager/share/native/library/common/PlatformString.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PlatformString.h	Wed Oct 17 13:50:11 2018 -0400
@@ -81,7 +81,9 @@
 
         if (FSize != 0) {
             FData = new T[FSize];
-            Zero();
+            if (FData != NULL) {
+                Zero();
+            }
         }
     }
 
@@ -96,7 +98,8 @@
 
 
 #ifdef MAC
-// StringToFileSystemString is a stack object. It's usage is simply inline to convert a
+// StringToFileSystemString is a stack object. It's usage is
+// simply inline to convert a
 // TString to a file system string. Example:
 //
 // return dlopen(StringToFileSystemString(FileName), RTLD_LAZY);
@@ -119,7 +122,8 @@
 };
 
 
-// FileSystemStringToString is a stack object. It's usage is simply inline to convert a
+// FileSystemStringToString is a stack object. It's usage is
+// simply inline to convert a
 // file system string to a TString. Example:
 //
 // DynamicBuffer<TCHAR> buffer(MAX_PATH);
@@ -157,10 +161,12 @@
     void initialize();
 
     // Caller must free result using delete[].
-    static void CopyString(char *Destination, size_t NumberOfElements, const char *Source);
+    static void CopyString(char *Destination,
+            size_t NumberOfElements, const char *Source);
 
     // Caller must free result using delete[].
-    static void CopyString(wchar_t *Destination, size_t NumberOfElements, const wchar_t *Source);
+    static void CopyString(wchar_t *Destination,
+            size_t NumberOfElements, const wchar_t *Source);
 
     static WideString MultibyteStringToWideString(const char* value);
     static MultibyteString WideStringToMultibyteString(const wchar_t* value);
@@ -207,4 +213,4 @@
 };
 
 
-#endif //PLATFORMSTRING_H
+#endif // PLATFORMSTRING_H
--- a/src/jdk.packager/share/native/library/common/PlatformThread.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PlatformThread.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -40,38 +40,38 @@
     self->Execute();
     return 0;
 }
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
 void* PlatformThread::Do(void *Data) {
     PlatformThread* self = (PlatformThread*)Data;
     self->Execute();
     pthread_exit(NULL);
 }
-#endif //POSIX
+#endif // POSIX
 
 void PlatformThread::Run() {
 #ifdef WINDOWS
     FHandle = CreateThread(NULL, 0, Do, this, 0, &FThreadID);
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     pthread_create(&FHandle, NULL, Do, this);
-#endif //POSIX
+#endif // POSIX
 }
 
 void PlatformThread::Terminate() {
 #ifdef WINDOWS
     CloseHandle(FHandle);
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     pthread_cancel(FHandle);
-#endif //POSIX
+#endif // POSIX
 }
 
 void PlatformThread::Wait() {
 #ifdef WINDOWS
     WaitForSingleObject(FHandle, INFINITE);
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     pthread_join(FHandle, NULL);
-#endif //POSIX
+#endif // POSIX
 }
--- a/src/jdk.packager/share/native/library/common/PlatformThread.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PlatformThread.h	Wed Oct 17 13:50:11 2018 -0400
@@ -30,7 +30,7 @@
 
 #ifdef POSIX
 #include <pthread.h>
-#endif //POSIX
+#endif // POSIX
 
 
 class PlatformThread {
@@ -39,14 +39,15 @@
     HANDLE FHandle;
     DWORD FThreadID;
     static DWORD WINAPI Do(LPVOID lpParam);
-#endif //WINDOWS
+#endif // WINDOWS
 #ifdef POSIX
     pthread_t FHandle;
     static void* Do(void *threadid);
-#endif //POSIX
+#endif // POSIX
 
 protected:
-    // Never call directly. Override this method and this is your code that runs in a thread.
+    // Never call directly. Override this method and this is your code
+    // that runs in a thread.
     virtual void Execute() = 0;
 
 public:
@@ -58,4 +59,4 @@
     void Wait();
 };
 
-#endif //PLATFORMTHREAD_H
+#endif // PLATFORMTHREAD_H
--- a/src/jdk.packager/share/native/library/common/PosixPlatform.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PosixPlatform.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -76,7 +76,8 @@
     TString fixedName(name);
     const TString chars("?:*<>/\\");
     for (TString::const_iterator it = chars.begin(); it != chars.end(); it++) {
-        fixedName.erase(std::remove(fixedName.begin(), fixedName.end(), *it), fixedName.end());
+        fixedName.erase(std::remove(fixedName.begin(),
+                fixedName.end(), *it), fixedName.end());
     }
     return fixedName;
 }
@@ -118,10 +119,12 @@
     return false;
 }
 
-MessageResponse PosixPlatform::ShowResponseMessage(TString title, TString description) {
+MessageResponse PosixPlatform::ShowResponseMessage(TString title,
+        TString description) {
     MessageResponse result = mrCancel;
 
-    printf("%s %s (Y/N)\n", PlatformString(title).toPlatformString(), PlatformString(description).toPlatformString());
+    printf("%s %s (Y/N)\n", PlatformString(title).toPlatformString(),
+            PlatformString(description).toPlatformString());
     fflush(stdout);
 
     std::string input;
@@ -134,12 +137,6 @@
     return result;
 }
 
-//MessageResponse PosixPlatform::ShowResponseMessageB(TString description) {
-//    TString appname = GetModuleFileName();
-//    appname = FilePath::ExtractFileName(appname);
-//    return ShowResponseMessage(appname, description);
-//}
-
 void PosixPlatform::SetCurrentDirectory(TString Value) {
     chdir(StringToFileSystemString(Value));
 }
@@ -152,16 +149,19 @@
     dlclose(AModule);
 }
 
-Procedure PosixPlatform::GetProcAddress(Module AModule, std::string MethodName) {
+Procedure PosixPlatform::GetProcAddress(Module AModule,
+        std::string MethodName) {
     return dlsym(AModule, PlatformString(MethodName));
 }
 
-std::vector<std::string> PosixPlatform::GetLibraryImports(const TString FileName) {
+std::vector<std::string> PosixPlatform::GetLibraryImports(
+       const TString FileName) {
  std::vector<TString> result;
  return result;
 }
 
-std::vector<TString> PosixPlatform::FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports) {
+std::vector<TString> PosixPlatform::FilterOutRuntimeDependenciesForPlatform(
+       std::vector<TString> Imports) {
  std::vector<TString> result;
  return result;
 }
@@ -170,9 +170,6 @@
     return new PosixProcess();
 }
 
-//--------------------------------------------------------------------------------------------------
-
-
 PosixProcess::PosixProcess() : Process() {
     FChildPID = 0;
     FRunning = false;
@@ -207,19 +204,18 @@
 
     if (FOutputHandle != 0 && IsRunning() == true) {
         char buffer[4096];
-        //select(p[0] + 1, &rfds, NULL, NULL, NULL);
 
         ssize_t count = read(FOutputHandle, buffer, sizeof(buffer));
 
         if (count == -1) {
             if (errno == EINTR) {
-                //continue;
+                // continue;
             } else {
                 perror("read");
                 exit(1);
             }
         } else if (count == 0) {
-            //break;
+            // break;
         } else {
             if (buffer[count] == EOF) {
                 buffer[count] = '\0';
@@ -254,16 +250,16 @@
 
         if (status == 0) {
             result = true;
-        }
-        else {
+        } else {
 #ifdef DEBUG
-            if (errno == EINVAL)
+            if (errno == EINVAL) {
                 printf("Kill error: The value of the sig argument is an invalid or unsupported signal number.");
-            else if (errno == EPERM)
+            } else if (errno == EPERM) {
                 printf("Kill error: The process does not have permission to send the signal to any receiving process.");
-            else if (errno == ESRCH)
+            } else if (errno == ESRCH) {
                 printf("Kill error: No process or process group can be found corresponding to that specified by pid.");
-#endif //DEBUG
+            }
+#endif // DEBUG
             if (IsRunning() == true) {
                 status = kill(FChildPID, SIGKILL);
 
@@ -280,7 +276,8 @@
 #define PIPE_READ 0
 #define PIPE_WRITE 1
 
-bool PosixProcess::Execute(const TString Application, const std::vector<TString> Arguments, bool AWait) {
+bool PosixProcess::Execute(const TString Application,
+        const std::vector<TString> Arguments, bool AWait) {
     bool result = false;
 
     if (FRunning == false) {
@@ -289,8 +286,6 @@
         int handles[2];
 
         if (pipe(handles) == -1) {
-            //perror("pipe");
-            //exit(1);
             return false;
         }
 
@@ -305,35 +300,33 @@
         sigaction(SIGQUIT, &sa, &savequit);
         sigaddset(&sa.sa_mask, SIGCHLD);
         sigprocmask(SIG_BLOCK, &sa.sa_mask, &saveblock);
-#endif //MAC
+#endif // MAC
         FChildPID = fork();
 
-        // PID returned by vfork is 0 for the child process and the PID of the child
-        // process for the parent.
+        // PID returned by vfork is 0 for the child process and the
+        // PID of the child process for the parent.
         if (FChildPID == -1) {
             // Error
-            TString message = PlatformString::Format(_T("Error: Unable to create process %s"), Application.data());
+            TString message = PlatformString::Format(
+                    _T("Error: Unable to create process %s"),
+                    Application.data());
             throw Exception(message);
         }
         else if (FChildPID == 0) {
             Cleanup();
             TString command = Application;
 
-            for (std::vector<TString>::const_iterator iterator = Arguments.begin(); iterator != Arguments.end(); iterator++) {
+            for (std::vector<TString>::const_iterator iterator =
+                    Arguments.begin(); iterator != Arguments.end();
+                    iterator++) {
                 command += TString(_T(" ")) + *iterator;
             }
 #ifdef DEBUG
             printf("%s\n", command.data());
-#endif //DEBUG
-//            dup2(FOutputHandle, STDOUT_FILENO);
-//            dup2(FInputHandle, STDIN_FILENO);
-//            close(FOutputHandle);
-//            close(FInputHandle);
+#endif // DEBUG
 
             dup2(handles[PIPE_READ], STDIN_FILENO);
             dup2(handles[PIPE_WRITE], STDOUT_FILENO);
-//            setvbuf(stdout,NULL,_IONBF,0);
-//            setvbuf(stdin,NULL,_IONBF,0);
 
             close(handles[PIPE_READ]);
             close(handles[PIPE_WRITE]);
@@ -342,13 +335,6 @@
 
             _exit(127);
         } else {
-//            close(handles[PIPE_READ]);
-//            close(handles[PIPE_WRITE]);
-
-//            close(output[1]);
-//            int nbytes = read(output[0], foo, sizeof(foo));
-//            printf("Output: (%.*s)\n", nbytes, foo);
-//            wait(NULL);
             FOutputHandle = handles[PIPE_READ];
             FInputHandle = handles[PIPE_WRITE];
 
@@ -397,11 +383,11 @@
 #ifdef WIFCONTINUED // Not all implementations support this
     } else if (WIFCONTINUED(status)) {
         printf("child continued\n");
-#endif //WIFCONTINUED
+#endif // WIFCONTINUED
     } else { // Non-standard case -- may never happen
         printf("Unexpected status (0x%x)\n", status);
     }
-#endif //DEBUG
+#endif // DEBUG
 
     if (wpid != -1) {
         result = true;
@@ -425,4 +411,4 @@
     return Process::GetOutput();
 }
 
-#endif //POSIX
+#endif // POSIX
--- a/src/jdk.packager/share/native/library/common/PosixPlatform.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PosixPlatform.h	Wed Oct 17 13:50:11 2018 -0400
@@ -44,8 +44,8 @@
     virtual ~PosixPlatform(void);
 
 public:
-    virtual MessageResponse ShowResponseMessage(TString title, TString description);
-    //virtual MessageResponse ShowResponseMessageB(TString description);
+    virtual MessageResponse ShowResponseMessage(TString title,
+            TString description);
 
     virtual void SetCurrentDirectory(TString Value);
 
@@ -54,7 +54,8 @@
     virtual void FreeLibrary(Module AModule);
     virtual Procedure GetProcAddress(Module AModule, std::string MethodName);
     virtual std::vector<TString> GetLibraryImports(const TString FileName);
-    virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports);
+    virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(
+            std::vector<TString> Imports);
 
     virtual Process* CreateProcess();
     virtual TString GetTempDirectory();
@@ -74,7 +75,6 @@
 
     void Cleanup();
     bool ReadOutput();
-    //static void ProcessOutput(Process *Instance, std::vector<TString> Output);
 
 public:
     PosixProcess();
@@ -82,13 +82,13 @@
 
     virtual bool IsRunning();
     virtual bool Terminate();
-    virtual bool Execute(const TString Application, const std::vector<TString> Arguments,
-        bool AWait = false);
+    virtual bool Execute(const TString Application,
+            const std::vector<TString> Arguments, bool AWait = false);
     virtual bool Wait();
     virtual TProcessID GetProcessID();
     virtual void SetInput(TString Value);
     virtual std::list<TString> GetOutput();
 };
 
-#endif //POSIXPLATFORM_H
-#endif //POSX
+#endif // POSIXPLATFORM_H
+#endif // POSX
--- a/src/jdk.packager/share/native/library/common/PropertyFile.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PropertyFile.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -46,10 +46,6 @@
     FData.Append(Value);
 }
 
-//PropertyFile::PropertyFile(std::map<TString, TString> Value) : PropertyContainer() {
-//    FData.Append(Value);
-//}
-
 PropertyFile::PropertyFile(const PropertyFile &Value) {
     FData = Value.FData;
     FReadOnly = Value.FReadOnly;
@@ -76,12 +72,6 @@
     FReadOnly = Value;
 }
 
-//void PropertyFile::Assign(std::map<TString, TString> Value) {
-//    FData.Clear();
-//    FData.Assign(Value);
-//    SetModified(true);
-//}
-
 bool PropertyFile::LoadFromFile(const TString FileName) {
     bool result = false;
     Platform& platform = Platform::GetInstance();
@@ -89,7 +79,8 @@
     std::list<TString> contents = platform.LoadFromFile(FileName);
 
     if (contents.empty() == false) {
-        for (std::list<TString>::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) {
+        for (std::list<TString>::const_iterator iterator = contents.begin();
+                iterator != contents.end(); iterator++) {
             TString line = *iterator;
             TString name;
             TString value;
@@ -172,10 +163,6 @@
     return FData.Count();
 }
 
-//std::vector<TString> PropertyFile::GetKeys() {
-//    return FData.GetKeys();
-//}
-
 OrderedMap<TString, TString> PropertyFile::GetData() {
     return FData;
 }
--- a/src/jdk.packager/share/native/library/common/PropertyFile.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PropertyFile.h	Wed Oct 17 13:50:11 2018 -0400
@@ -62,7 +62,7 @@
     // IPropertyContainer
     virtual bool GetValue(const TString Key, TString& Value);
     virtual size_t GetCount();
-    //virtual std::vector<TString> GetKeys();
+    // virtual std::vector<TString> GetKeys();
 };
 
-#endif //PROPERTYFILE_H
+#endif // PROPERTYFILE_H
--- a/src/jdk.packager/share/native/library/common/WindowsPlatform.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/WindowsPlatform.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -38,9 +38,9 @@
 #include <vector>
 #include <regex>
 
-#define WINDOWS_PACKAGER_TMP_DIR L"\\AppData\\LocalLow\\Sun\\Java\\Packager\\tmp"
+#define WINDOWS_PACKAGER_TMP_DIR \
+        L"\\AppData\\LocalLow\\Sun\\Java\\Packager\\tmp"
 
-//--------------------------------------------------------------------------------------------------
 
 class Registry {
 private:
@@ -68,7 +68,8 @@
         bool result = false;
         Close();
 
-        if (RegOpenKeyEx(FKey, SubKey.data(), 0, KEY_READ, &FOpenKey) == ERROR_SUCCESS) {
+        if (RegOpenKeyEx(FKey, SubKey.data(), 0, KEY_READ, &FOpenKey) ==
+                ERROR_SUCCESS) {
             result = true;
         }
 
@@ -80,7 +81,7 @@
         DWORD count;
 
         if (RegQueryInfoKey(FOpenKey, NULL, NULL, NULL, NULL, NULL, NULL,
-                            &count, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) {
+                 &count, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) {
 
             DWORD length = 255;
             DynamicBuffer<TCHAR> buffer(length);
@@ -114,10 +115,12 @@
         DynamicBuffer<wchar_t> buffer(0);
         length = 0;
 
-        dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, NULL, &length);
+        dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, NULL,
+                &length);
         if (dwRet == ERROR_MORE_DATA || dwRet == 0) {
             buffer.Resize(length + 1);
-            dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, (LPBYTE)buffer.GetData(), &length);
+            dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL,
+                    (LPBYTE)buffer.GetData(), &length);
             result = buffer.GetData();
         }
 
@@ -125,8 +128,6 @@
     }
 };
 
-//--------------------------------------------------------------------------------------------------
-
 WindowsPlatform::WindowsPlatform(void) : Platform(), GenericPlatform() {
     FMainThread = ::GetCurrentThreadId();
 }
@@ -134,12 +135,14 @@
 WindowsPlatform::~WindowsPlatform(void) {
 }
 
-TCHAR* WindowsPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) {
+TCHAR* WindowsPlatform::ConvertStringToFileSystemString(TCHAR* Source,
+        bool &release) {
     // Not Implemented.
     return NULL;
 }
 
-TCHAR* WindowsPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) {
+TCHAR* WindowsPlatform::ConvertFileSystemStringToString(TCHAR* Source,
+        bool &release) {
     // Not Implemented.
     return NULL;
 }
@@ -165,7 +168,9 @@
 }
 
 void WindowsPlatform::ShowMessage(TString title, TString description) {
-    MessageBox(NULL, description.data(), !title.empty() ? title.data() : description.data(), MB_ICONERROR | MB_OK);
+    MessageBox(NULL, description.data(),
+            !title.empty() ? title.data() : description.data(),
+            MB_ICONERROR | MB_OK);
 }
 
 void WindowsPlatform::ShowMessage(TString description) {
@@ -174,28 +179,24 @@
     MessageBox(NULL, description.data(), appname.data(), MB_ICONERROR | MB_OK);
 }
 
-MessageResponse WindowsPlatform::ShowResponseMessage(TString title, TString description) {
+MessageResponse WindowsPlatform::ShowResponseMessage(TString title,
+        TString description) {
     MessageResponse result = mrCancel;
 
-    if (::MessageBox(NULL, description.data(), title.data(), MB_OKCANCEL) == IDOK) {
+    if (::MessageBox(NULL, description.data(), title.data(), MB_OKCANCEL) ==
+            IDOK) {
         result = mrOK;
     }
 
     return result;
 }
 
-//MessageResponse WindowsPlatform::ShowResponseMessage(TString description) {
-//    TString appname = GetModuleFileName();
-//    appname = FilePath::ExtractFileName(appname);
-//    return ShowResponseMessage(appname, description);
-//}
-
 TString WindowsPlatform::GetBundledJVMLibraryFileName(TString RuntimePath) {
-    TString result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+    TString result = FilePath::IncludeTrailingSeparator(RuntimePath) +
         _T("jre\\bin\\jli.dll");
 
     if (FilePath::FileExists(result) == false) {
-        result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+        result = FilePath::IncludeTrailingSeparator(RuntimePath) +
             _T("bin\\jli.dll");
     }
 
@@ -206,7 +207,8 @@
     IniFile *result = new IniFile();
 
     if (result->LoadFromFile(FileName) == false) {
-        // New property file format was not found, attempt to load old property file format.
+        // New property file format was not found,
+        // attempt to load old property file format.
         Helpers::LoadOldConfigFile(FileName, result);
     }
 
@@ -216,11 +218,13 @@
 TString WindowsPlatform::GetModuleFileName() {
     TString result;
     DynamicBuffer<wchar_t> buffer(MAX_PATH);
-    ::GetModuleFileName(NULL, buffer.GetData(), static_cast<DWORD>(buffer.GetSize()));
+    ::GetModuleFileName(NULL, buffer.GetData(),
+            static_cast<DWORD>(buffer.GetSize()));
 
     while (ERROR_INSUFFICIENT_BUFFER == GetLastError()) {
         buffer.Resize(buffer.GetSize() * 2);
-        ::GetModuleFileName(NULL, buffer.GetData(), static_cast<DWORD>(buffer.GetSize()));
+        ::GetModuleFileName(NULL, buffer.GetData(),
+                static_cast<DWORD>(buffer.GetSize()));
     }
 
     result = buffer.GetData();
@@ -235,7 +239,8 @@
     ::FreeLibrary((HMODULE)AModule);
 }
 
-Procedure WindowsPlatform::GetProcAddress(Module AModule, std::string MethodName) {
+Procedure WindowsPlatform::GetProcAddress(Module AModule,
+        std::string MethodName) {
     return ::GetProcAddress((HMODULE)AModule, MethodName.c_str());
 }
 
@@ -297,10 +302,11 @@
     return false;
 }
 
-SingleInstance::SingleInstance(TString& name_): BUF_SIZE(256), _name(name_), _hMapFile(NULL), _pBuf(NULL) {
+SingleInstance::SingleInstance(TString& name_): BUF_SIZE(256), _name(name_),
+        _hMapFile(NULL), _pBuf(NULL) {
     _mutex = CreateMutex(NULL, TRUE, name_.data());
     _lastError = GetLastError();
-    _sharedMemoryName = _T("Local\\javapackager-") + _name;
+    _sharedMemoryName = _T("Local\\jpackager-") + _name;
 }
 
 SingleInstance::~SingleInstance() {
@@ -386,17 +392,20 @@
     return result;
 }
 
-std::vector<TString> WindowsPlatform::GetLibraryImports(const TString FileName) {
+std::vector<TString> WindowsPlatform::GetLibraryImports(
+       const TString FileName) {
  std::vector<TString> result;
     WindowsLibrary library(FileName);
     result = library.GetImports();
  return result;
 }
 
-std::vector<TString> FilterList(std::vector<TString> &Items, std::wregex Pattern) {
+std::vector<TString> FilterList(std::vector<TString> &Items,
+        std::wregex Pattern) {
     std::vector<TString> result;
 
-    for (std::vector<TString>::iterator it = Items.begin(); it != Items.end(); ++it) {
+    for (std::vector<TString>::iterator it = Items.begin();
+            it != Items.end(); ++it) {
         TString item = *it;
         std::wsmatch match;
 
@@ -407,24 +416,28 @@
     return result;
 }
 
-std::vector<TString> WindowsPlatform::FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports) {
- std::vector<TString> result;
-
+std::vector<TString> WindowsPlatform::FilterOutRuntimeDependenciesForPlatform(
+        std::vector<TString> Imports) {
+    std::vector<TString> result;
     Package& package = Package::GetInstance();
     Macros& macros = Macros::GetInstance();
     TString runtimeDir = macros.ExpandMacros(package.GetJVMRuntimeDirectory());
-    std::vector<TString> filelist = FilterList(Imports, std::wregex(_T("MSVCR.*.DLL"), std::regex_constants::icase));
+    std::vector<TString> filelist = FilterList(Imports,
+            std::wregex(_T("MSVCR.*.DLL"), std::regex_constants::icase));
 
-    for (std::vector<TString>::iterator it = filelist.begin(); it != filelist.end(); ++it) {
+    for (std::vector<TString>::iterator it = filelist.begin();
+            it != filelist.end(); ++it) {
         TString filename = *it;
-        TString msvcr100FileName = FilePath::IncludeTrailingSeparater(runtimeDir) + _T("jre\\bin\\") + filename;
+        TString msvcr100FileName = FilePath::IncludeTrailingSeparator(
+                runtimeDir) + _T("jre\\bin\\") + filename;
 
         if (FilePath::FileExists(msvcr100FileName) == true) {
             result.push_back(msvcr100FileName);
             break;
         }
         else {
-            msvcr100FileName = FilePath::IncludeTrailingSeparater(runtimeDir) + _T("bin\\") + filename;
+            msvcr100FileName = FilePath::IncludeTrailingSeparator(runtimeDir)
+                    + _T("bin\\") + filename;
 
             if (FilePath::FileExists(msvcr100FileName) == true) {
                 result.push_back(msvcr100FileName);
@@ -457,16 +470,18 @@
 }
 #endif //DEBUG
 
-//--------------------------------------------------------------------------------------------------
 
-WindowsJavaUserPreferences::WindowsJavaUserPreferences(void) : JavaUserPreferences() {
+WindowsJavaUserPreferences::WindowsJavaUserPreferences(void) :
+        JavaUserPreferences() {
 }
 
 WindowsJavaUserPreferences::~WindowsJavaUserPreferences(void) {
 }
 
-// Java Preferences API encodes it's strings, so we need to match what Java does to work with Java.
-// CAVEAT: Java also does unicode encoding which this doesn't do yet. Should be sufficient for jvm args.
+// Java Preferences API encodes it's strings, so we need to match what
+// Java does to work with Java.
+// CAVEAT: Java also does unicode encoding which this doesn't do yet.
+// Should be sufficient for jvm args.
 // See WindowsPreferences.java toWindowsName()
 TString ConvertStringToJavaEcodedString(TString Value) {
     TString result;
@@ -499,8 +514,10 @@
     return result;
 }
 
-// Java Preferences API encodes it's strings, so we need to match what Java does to work with Java.
-// CAVEAT: Java also does unicode encoding which this doesn't do yet. Should be sufficient for jvm args.
+// Java Preferences API encodes it's strings,
+// so we need to match what Java does to work with Java.
+// CAVEAT: Java also does unicode encoding which this doesn't do yet.
+// Should be sufficient for jvm args.
 // See WindowsPreferences.java toJavaName()
 TString ConvertJavaEcodedStringToString(TString Value) {
     TString result;
@@ -538,14 +555,16 @@
     bool result = false;
     TString lappid = Helpers::ConvertIdToFilePath(Appid);
     lappid = ConvertStringToJavaEcodedString(Appid);
-    TString registryKey = TString(_T("SOFTWARE\\JavaSoft\\Prefs\\")) + lappid + TString(_T("\\/J/V/M/User/Options"));
+    TString registryKey = TString(_T("SOFTWARE\\JavaSoft\\Prefs\\"))
+            + lappid + TString(_T("\\/J/V/M/User/Options"));
     Registry registry(HKEY_CURRENT_USER);
 
     if (registry.Open(registryKey) == true) {
         std::list<TString> keys = registry.GetKeys();
         OrderedMap<TString, TString> mapOfKeysAndValues;
 
-        for (std::list<TString>::const_iterator iterator = keys.begin(); iterator != keys.end(); iterator++) {
+        for (std::list<TString>::const_iterator iterator = keys.begin();
+                iterator != keys.end(); iterator++) {
             TString key = *iterator;
             TString value = registry.ReadString(key);
             key = ConvertJavaEcodedStringToString(key);
@@ -563,11 +582,9 @@
     return result;
 }
 
-//--------------------------------------------------------------------------------------------------
-
 FileHandle::FileHandle(std::wstring FileName) {
-    FHandle = ::CreateFile(FileName.data(), GENERIC_READ, FILE_SHARE_READ, NULL,
-                            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
+    FHandle = ::CreateFile(FileName.data(), GENERIC_READ, FILE_SHARE_READ,
+            NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 }
 
 FileHandle::~FileHandle() {
@@ -636,9 +653,10 @@
             FileData fileData(mapping.GetHandle());
 
             if (fileData.IsValid() == true) {
-                PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)fileData.GetBaseAddress();
-                PIMAGE_FILE_HEADER pImgFileHdr = (PIMAGE_FILE_HEADER)fileData.GetBaseAddress();
-
+                PIMAGE_DOS_HEADER dosHeader =
+                        (PIMAGE_DOS_HEADER)fileData.GetBaseAddress();
+                PIMAGE_FILE_HEADER pImgFileHdr =
+                        (PIMAGE_FILE_HEADER)fileData.GetBaseAddress();
                 if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) {
                     result = DumpPEFile(dosHeader);
                 }
@@ -656,7 +674,8 @@
     PIMAGE_SECTION_HEADER result = 0;
     PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(pNTHeader);
 
-    for (unsigned index = 0; index < pNTHeader->FileHeader.NumberOfSections; index++, section++) {
+    for (unsigned index = 0; index < pNTHeader->FileHeader.NumberOfSections;
+            index++, section++) {
         // Is the RVA is within this section?
         if ((rva >= section->VirtualAddress) &&
             (rva < (section->VirtualAddress + section->Misc.VirtualSize))) {
@@ -667,12 +686,15 @@
     return result;
 }
 
-LPVOID WindowsLibrary::GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, DWORD imageBase) {
+LPVOID WindowsLibrary::GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader,
+        DWORD imageBase) {
     LPVOID result = 0;
-    PIMAGE_SECTION_HEADER pSectionHdr = GetEnclosingSectionHeader(rva, pNTHeader);
+    PIMAGE_SECTION_HEADER pSectionHdr = GetEnclosingSectionHeader(rva,
+            pNTHeader);
 
     if (pSectionHdr != NULL) {
-        INT delta = (INT)(pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData);
+        INT delta = (INT)(
+                pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData);
         DWORD_PTR dwp = (DWORD_PTR) (imageBase + rva - delta);
         result = reinterpret_cast<LPVOID>(dwp); // VS2017 - FIXME
     }
@@ -680,29 +702,38 @@
     return result;
 }
 
-std::vector<TString> WindowsLibrary::GetImportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader) {
+std::vector<TString> WindowsLibrary::GetImportsSection(DWORD base,
+        PIMAGE_NT_HEADERS pNTHeader) {
     std::vector<TString> result;
 
-    // Look up where the imports section is located. Normally in the .idata section,
+    // Look up where the imports section is located. Normally in
+    // the .idata section,
     // but not necessarily so. Therefore, grab the RVA from the data dir.
-    DWORD importsStartRVA = pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
+    DWORD importsStartRVA = pNTHeader->OptionalHeader.DataDirectory[
+            IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
 
     if (importsStartRVA != NULL) {
         // Get the IMAGE_SECTION_HEADER that contains the imports. This is
         // usually the .idata section, but doesn't have to be.
-        PIMAGE_SECTION_HEADER pSection = GetEnclosingSectionHeader(importsStartRVA, pNTHeader);
+        PIMAGE_SECTION_HEADER pSection =
+                GetEnclosingSectionHeader(importsStartRVA, pNTHeader);
 
         if (pSection != NULL) {
-            PIMAGE_IMPORT_DESCRIPTOR importDesc = (PIMAGE_IMPORT_DESCRIPTOR)GetPtrFromRVA(importsStartRVA, pNTHeader,base);
+            PIMAGE_IMPORT_DESCRIPTOR importDesc =
+                    (PIMAGE_IMPORT_DESCRIPTOR)GetPtrFromRVA(
+                    importsStartRVA, pNTHeader,base);
 
             if (importDesc != NULL) {
                 while (true)
                 {
                     // See if we've reached an empty IMAGE_IMPORT_DESCRIPTOR
-                    if ((importDesc->TimeDateStamp == 0) && (importDesc->Name == 0))
+                    if ((importDesc->TimeDateStamp == 0) &&
+                            (importDesc->Name == 0)) {
                         break;
+                    }
 
-                    std::string filename = (char*)GetPtrFromRVA(importDesc->Name, pNTHeader, base);
+                    std::string filename = (char*)GetPtrFromRVA(
+                            importDesc->Name, pNTHeader, base);
                     result.push_back(PlatformString(filename));
                     importDesc++;   // advance to next IMAGE_IMPORT_DESCRIPTOR
                 }
@@ -724,7 +755,8 @@
 
     // Verify that the e_lfanew field gave us a reasonable
     // pointer and the PE signature.
-    // TODO: To really fix JDK-8131321 this condition needs to be changed. There is a matching change
+    // TODO: To really fix JDK-8131321 this condition needs to be changed.
+    // There is a matching change
     // in JavaVirtualMachine.cpp that also needs to be changed.
     if (pNTHeader->Signature == IMAGE_NT_SIGNATURE) {
         DWORD base = (DWORD)(dwDosHeaders);
@@ -734,8 +766,6 @@
     return result;
 }
 
-//--------------------------------------------------------------------------------------------------
-
 #include <TlHelp32.h>
 
 WindowsJob::WindowsJob() {
@@ -754,17 +784,21 @@
 
         if (FHandle == NULL)
         {
-            ::MessageBox( 0, _T("Could not create job object"), _T("TEST"), MB_OK);
+            ::MessageBox( 0, _T("Could not create job object"),
+                    _T("TEST"), MB_OK);
         }
         else
         {
             JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli = { 0 };
 
-            // Configure all child processes associated with the job to terminate when the
-            jeli.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
-            if (0 == SetInformationJobObject(FHandle, JobObjectExtendedLimitInformation, &jeli, sizeof(jeli)))
-            {
-                ::MessageBox( 0, _T("Could not SetInformationJobObject"), _T("TEST"), MB_OK);
+            // Configure all child processes associated with
+            // the job to terminate when the
+            jeli.BasicLimitInformation.LimitFlags =
+                    JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
+            if (0 == SetInformationJobObject(FHandle,
+                    JobObjectExtendedLimitInformation, &jeli, sizeof(jeli))) {
+                ::MessageBox( 0, _T("Could not SetInformationJobObject"),
+                        _T("TEST"), MB_OK);
             }
         }
     }
@@ -820,7 +854,8 @@
     return result;
 }
 
-bool WindowsProcess::Execute(const TString Application, const std::vector<TString> Arguments, bool AWait) {
+bool WindowsProcess::Execute(const TString Application,
+        const std::vector<TString> Arguments, bool AWait) {
     bool result = false;
 
     if (FRunning == false) {
@@ -833,19 +868,24 @@
 
         TString command = Application;
 
-        for (std::vector<TString>::const_iterator iterator = Arguments.begin(); iterator != Arguments.end(); iterator++) {
+        for (std::vector<TString>::const_iterator iterator = Arguments.begin();
+                iterator != Arguments.end(); iterator++) {
             command += TString(_T(" ")) + *iterator;
         }
 
         if (::CreateProcess(Application.data(), (wchar_t*)command.data(), NULL,
             NULL, FALSE, 0, NULL, NULL, &startupInfo, &FProcessInfo) == FALSE) {
-            TString message = PlatformString::Format(_T("Error: Unable to create process %s"), Application.data());
+            TString message = PlatformString::Format(
+                    _T("Error: Unable to create process %s"),
+                     Application.data());
             throw Exception(message);
         }
         else {
             if (FJob.GetHandle() != NULL) {
-                if (::AssignProcessToJobObject(FJob.GetHandle(), FProcessInfo.hProcess) == 0) {
-                    // Failed to assign process to job. It doesn't prevent anything from continuing so continue.
+                if (::AssignProcessToJobObject(FJob.GetHandle(),
+                         FProcessInfo.hProcess) == 0) {
+                    // Failed to assign process to job. It doesn't prevent
+                    // anything from continuing so continue.
                 }
             }
 
@@ -874,12 +914,12 @@
 
 bool WindowsProcess::ReadOutput() {
     bool result = false;
-    //TODO implement
+    // TODO implement
     return result;
 }
 
 void WindowsProcess::SetInput(TString Value) {
-    //TODO implement
+    // TODO implement
 }
 
 std::list<TString> WindowsProcess::GetOutput() {
@@ -887,4 +927,4 @@
     return Process::GetOutput();
 }
 
-#endif //WINDOWS
+#endif // WINDOWS
--- a/src/jdk.packager/share/native/library/common/WindowsPlatform.h	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/WindowsPlatform.h	Wed Oct 17 13:50:11 2018 -0400
@@ -74,7 +74,8 @@
 };
 
 #pragma warning( push )
-#pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member'
+// C4250 - 'class1' : inherits 'class2::member'
+#pragma warning( disable : 4250 )
 class WindowsPlatform : virtual public Platform, GenericPlatform {
 private:
     DWORD FMainThread;
@@ -83,12 +84,15 @@
     WindowsPlatform(void);
     virtual ~WindowsPlatform(void);
 
-    virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release);
-    virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release);
+    virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source,
+            bool &release);
+    virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source,
+            bool &release);
 
     virtual void ShowMessage(TString title, TString description);
     virtual void ShowMessage(TString description);
-    virtual MessageResponse ShowResponseMessage(TString title, TString description);
+    virtual MessageResponse ShowResponseMessage(TString title,
+            TString description);
     //virtual MessageResponse ShowResponseMessage(TString description);
 
     virtual void SetCurrentDirectory(TString Value);
@@ -103,7 +107,8 @@
     virtual void FreeLibrary(Module AModule);
     virtual Procedure GetProcAddress(Module AModule, std::string MethodName);
     virtual std::vector<TString> GetLibraryImports(const TString FileName);
-    virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports);
+    virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(
+            std::vector<TString> Imports);
 
     virtual Process* CreateProcess();
 
@@ -176,9 +181,12 @@
 
     // Given an RVA, look up the section header that encloses it and return a
     // pointer to its IMAGE_SECTION_HEADER
-    static PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, PIMAGE_NT_HEADERS pNTHeader);
-    static LPVOID GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, DWORD imageBase);
-    static std::vector<TString> GetImportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader);
+    static PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva,
+            PIMAGE_NT_HEADERS pNTHeader);
+    static LPVOID GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader,
+            DWORD imageBase);
+    static std::vector<TString> GetImportsSection(DWORD base,
+            PIMAGE_NT_HEADERS pNTHeader);
     static std::vector<TString> DumpPEFile(PIMAGE_DOS_HEADER dosHeader);
 
 public:
@@ -216,8 +224,8 @@
 
     virtual bool IsRunning();
     virtual bool Terminate();
-    virtual bool Execute(const TString Application, const std::vector<TString> Arguments,
-        bool AWait = false);
+    virtual bool Execute(const TString Application,
+            const std::vector<TString> Arguments, bool AWait = false);
     virtual bool Wait();
     virtual TProcessID GetProcessID();
     virtual void SetInput(TString Value);
@@ -227,6 +235,6 @@
 
 
 
-#endif //WINDOWSPLATFORM_H
+#endif // WINDOWSPLATFORM_H
 
 #endif // WINDOWS
--- a/src/jdk.packager/share/native/library/common/main.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/main.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -44,13 +44,16 @@
 #include <stdlib.h>
 
 /*
-This is the launcher program for application packaging on Windows, Mac and Linux.
+This is the launcher program for application packaging on Windows, Mac,
+    and Linux.
 
 Basic approach:
-  - Launcher executable loads packager.dll/libpackager.dylib/libpackager.so and calls start_launcher below.
-  - Reads app/package.cfg or Info.plist or app/<appname>.cfg for application launch configuration
-     (package.cfg is property file).
-  - Load JVM with requested JVM settings (bundled client JVM if availble, server or installed JVM otherwise).
+  - Launcher executable loads packager.dll/libpackager.dylib/libpackager.so
+    and calls start_launcher below.
+  - Reads app/package.cfg or Info.plist or app/<appname>.cfg for application
+    launch configuration (package.cfg is property file).
+  - Load JVM with requested JVM settings (bundled client JVM if availble,
+    server or installed JVM otherwise).
   - Wait for JVM to exit and then exit from Main
   - To debug application by passing command line argument.
   - Application folder is added to the library path (so LoadLibrary()) works.
@@ -65,7 +68,8 @@
 extern "C" {
 
 #ifdef WINDOWS
-    BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
+    BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
+            LPVOID lpvReserved) {
         return true;
     }
 #endif //WINDOWS
@@ -91,11 +95,13 @@
                     parentProcess = false;
                 }
 #ifdef DEBUG
-                // There is a compiler bug on Mac when overloading ShowResponseMessage.
+                // There is a compiler bug on Mac when overloading
+                // ShowResponseMessage.
                 else if (argument == _T("-nativedebug")) {
                     if (platform.ShowResponseMessage(_T("Test"),
-                                                     TString(_T("Would you like to debug?\n\nProcessID: ")) +
-                                                     PlatformString(platform.GetProcessID()).toString()) == mrOK) {
+                        TString(_T("Would you like to debug?\n\nProcessID: "))
+                        + PlatformString(platform.GetProcessID()).toString())
+                         == mrOK) {
                         while (platform.IsNativeDebuggerPresent() == false) {
                         }
                     }
@@ -112,8 +118,9 @@
             if (package.CheckForSingleInstance()) {
                 // reactivate the first instance if the process Id is valid
                 platform.reactivateAnotherInstance();
-                if (package.GetArgs().size() > 0 && platform.GetSingleInstanceProcessId() != 0) {
-                    // if user specified args, try to pass them to the first instance
+                if (package.GetArgs().size() > 0 &&
+                        platform.GetSingleInstanceProcessId() != 0) {
+                    // if user specified args, pass them to the first instance
                     return RunVM(SINGLE_INSTANCE_NOTIFICATION_LAUNCH);
                 }
                 return true;
@@ -127,31 +134,32 @@
                 }
 
                 case cdsGenCache: {
-                        TString cacheDirectory = package.GetAppCDSCacheDirectory();
-
-                        if (FilePath::DirectoryExists(cacheDirectory) == false) {
-                            FilePath::CreateDirectory(cacheDirectory, true);
-                        }
-                        else {
-                            TString cacheFileName = package.GetAppCDSCacheFileName();
+                    TString cacheDirectory = package.GetAppCDSCacheDirectory();
 
-                            if (FilePath::FileExists(cacheFileName) == true) {
-                                FilePath::DeleteFile(cacheFileName);
-                            }
+                    if (FilePath::DirectoryExists(cacheDirectory) == false) {
+                        FilePath::CreateDirectory(cacheDirectory, true);
+                    } else {
+                        TString cacheFileName =
+                                package.GetAppCDSCacheFileName();
+                        if (FilePath::FileExists(cacheFileName) == true) {
+                            FilePath::DeleteFile(cacheFileName);
                         }
+                    }
 
-                        break;
-                    }
+                    break;
+                }
 
                 case cdsAuto: {
                     TString cacheFileName = package.GetAppCDSCacheFileName();
 
-                    if (parentProcess == true && FilePath::FileExists(cacheFileName) == false) {
+                    if (parentProcess == true &&
+                            FilePath::FileExists(cacheFileName) == false) {
                         AutoFreePtr<Process> process = platform.CreateProcess();
                         std::vector<TString> args;
                         args.push_back(_T("-Xappcds:generatecache"));
                         args.push_back(_T("-Xapp:child"));
-                        process->Execute(platform.GetModuleFileName(), args, true);
+                        process->Execute(
+                                platform.GetModuleFileName(), args, true);
 
                         if (FilePath::FileExists(cacheFileName) == false) {
                             // Cache does not exist after trying to generate it,
@@ -167,37 +175,38 @@
             }
 
             // Validation
-            {
-                switch (platform.GetAppCDSState()) {
-                    case cdsDisabled:
-                    case cdsGenCache: {
-                        // Do nothing.
-                        break;
-                    }
+            switch (platform.GetAppCDSState()) {
+                case cdsDisabled:
+                case cdsGenCache: {
+                    // Do nothing.
+                    break;
+                }
 
-                    case cdsEnabled:
-                    case cdsAuto: {
-                            TString cacheFileName = package.GetAppCDSCacheFileName();
+                case cdsEnabled:
+                case cdsAuto: {
+                    TString cacheFileName =
+                            package.GetAppCDSCacheFileName();
 
-                            if (FilePath::FileExists(cacheFileName) == false) {
-                                Messages& messages = Messages::GetInstance();
-                                TString message = PlatformString::Format(messages.GetMessage(APPCDS_CACHE_FILE_NOT_FOUND), cacheFileName.data());
-                                throw FileNotFoundException(message);
-                            }
-                            break;
-                        }
+                    if (FilePath::FileExists(cacheFileName) == false) {
+                        Messages& messages = Messages::GetInstance();
+                        TString message = PlatformString::Format(
+                                messages.GetMessage(
+                                APPCDS_CACHE_FILE_NOT_FOUND),
+                                cacheFileName.data());
+                        throw FileNotFoundException(message);
+                    }
+                    break;
+                }
 
-                    case cdsUninitialized: {
-                        // throw Exception(_T("Internal Error")); // VS2017
-                        platform.ShowMessage(_T("Internal Error"));
-                        break;
-                    }
+                case cdsUninitialized: {
+                    platform.ShowMessage(_T("Internal Error"));
+                    break;
                 }
             }
+
             // Run App
             result = RunVM(USER_APP_LAUNCH);
-        }
-        catch (FileNotFoundException &e) {
+        } catch (FileNotFoundException &e) {
             platform.ShowMessage(e.GetMessage());
         }
 
--- a/src/jdk.packager/unix/scripts/jpackager	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/unix/scripts/jpackager	Wed Oct 17 13:50:11 2018 -0400
@@ -1,6 +1,6 @@
 #!/bin/bash
 #
-# Java Packager tool execution script for Linux and OS X.
+# Java Packager tool execution script for Linux and MacOS.
 #
 
 # Default values.
@@ -99,5 +99,5 @@
 # This is similar to "$@" except we had to strip out some arguments
 # that we don't want to be passed to the Java Packager.
 eval exec "$JAVA_CMD" ${DEBUG} ${MEMORY} ${JAVA_ARGS} \
-    -m jdk.packager/jdk.packager.Main $args
-    
\ No newline at end of file
+    -m jdk.packager/jdk.packager.main.Main $args
+    
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/builders/windows/WindowsAppImageBuilder.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/builders/windows/WindowsAppImageBuilder.java	Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
 
 package jdk.packager.internal.builders.windows;
 
-
 import jdk.packager.internal.BundlerParamInfo;
 import jdk.packager.internal.Log;
 import jdk.packager.internal.RelativeFileSet;
@@ -34,6 +33,7 @@
 import jdk.packager.internal.resources.windows.WinResources;
 import jdk.packager.internal.windows.WindowsBundlerParam;
 import jdk.packager.internal.builders.AbstractAppImageBuilder;
+import jdk.packager.internal.windows.WindowsDefender;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -62,8 +62,6 @@
 import jdk.packager.internal.Arguments;
 
 import static jdk.packager.internal.StandardBundlerParam.*;
-import jdk.packager.internal.windows.WindowsDefender;
-
 
 public class WindowsAppImageBuilder extends AbstractAppImageBuilder {
 
@@ -501,11 +499,6 @@
     }
 
     @Override
-    protected String getCacheLocation(Map<String, ? super Object> params) {
-        return "$CACHEDIR/";
-    }
-
-    @Override
     public String getPlatformSpecificModulesFile() {
         return MODULES_FILENAME;
     }
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.rebrand-executable.name = Rebrand Launcher
 param.rebrand-executable.description = Update the launcher with the application icon and update ownership information.
 
@@ -16,4 +42,4 @@
 message.config-save-location=Config files are saved to {0}. Use them to customize package.
 message.potential.windows.defender.issue=Warning: Windows Defender may prevent the Java Packager from functioning. If there is an issue, it can be addressed by either disabling realtime monitoring, or adding an exclusion for the directory "{0}".
 
-resource.executable-properties-template=Template for creating executable properties file.
\ No newline at end of file
+resource.executable-properties-template=Template for creating executable properties file.
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.rebrand-executable.name = \u30E9\u30F3\u30C1\u30E3\u306E\u30EA\u30D6\u30E9\u30F3\u30C9
 param.rebrand-executable.description = \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A2\u30A4\u30B3\u30F3\u3092\u542B\u3080\u30E9\u30F3\u30C1\u30E3\u304A\u3088\u3073\u6240\u6709\u8005\u60C5\u5831\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.rebrand-executable.name = \u66F4\u6539\u542F\u52A8\u7A0B\u5E8F\u54C1\u724C
 param.rebrand-executable.description = \u4F7F\u7528\u5E94\u7528\u7A0B\u5E8F\u56FE\u6807\u66F4\u65B0\u542F\u52A8\u7A0B\u5E8F\u5E76\u66F4\u65B0\u6240\u6709\u6743\u4FE1\u606F\u3002
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Windows Application Image
 bundler.description=A Directory based image of a windows Application with an optionally co-bundled JRE.  Used as a base for the Installer bundlers
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Windows\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8
 bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BWindows\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30E9\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=Windows \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF
 bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 Windows \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinExeBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinExeBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=EXE Installer
 bundler.description=Microsoft Windows EXE Installer, via InnoIDE.
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinLauncher.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinLauncher.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 Comments=COMMENTS
 CompanyName=COMPANY_NAME	
 FileDescription=FILE_DESCRIPTION
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=MSI Installer
 bundler.description=Microsoft Windows MSI Installer, via WiX.
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=MSI\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9
 bundler.description=WiX\u3092\u4F7F\u7528\u3057\u305FMicrosoft Windows MSI\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u3002
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 bundler.name=MSI \u5B89\u88C5\u7A0B\u5E8F
 bundler.description=Microsoft Windows MSI \u5B89\u88C5\u7A0B\u5E8F, \u901A\u8FC7 WiX\u3002
 
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.menu-group.name=Menu Group
 param.menu-group.description=The Start Menu group this application should be placed in
 param.menu-group.default=Unknown
@@ -14,8 +40,5 @@
 param.registry-name.name=Registry Name
 param.registry-name.description=The name of the application for registry references.  Default is the Application Name with only alphanumerics, dots, and dashes (no whitespace).
 
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle.  The default value is the current JRE running the bundler.  A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
 param.installdir-chooser.name=Install Directory Chooser
 param.installdir-chooser.description=Adds a dialog to let the user choose a directory where the product will be installed.
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_ja.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_ja.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.menu-group.name=\u30E1\u30CB\u30E5\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7
 param.menu-group.description=\u3053\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u8D77\u52D5\u30E1\u30CB\u30E5\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7
 param.menu-group.default=\u4E0D\u660E
@@ -14,8 +40,5 @@
 param.registry-name.name=\u30EC\u30B8\u30B9\u30C8\u30EA\u540D
 param.registry-name.description=\u30EC\u30B8\u30B9\u30C8\u30EA\u53C2\u7167\u7528\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u540D\u524D\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u3001\u82F1\u6570\u5B57\u3001\u30C9\u30C3\u30C8\u304A\u3088\u3073\u30C0\u30C3\u30B7\u30E5(\u7A7A\u767D\u306A\u3057)\u306E\u307F\u3092\u4F7F\u7528\u3057\u305F\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D\u3067\u3059\u3002
 
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
 param.installdir-chooser.name=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9078\u629E
 param.installdir-chooser.description=\u30E6\u30FC\u30B6\u30FC\u304C\u88FD\u54C1\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9078\u629E\u3059\u308B\u305F\u3081\u306E\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_zh_CN.properties	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_zh_CN.properties	Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
 param.menu-group.name=\u83DC\u5355\u7EC4
 param.menu-group.description=\u5E94\u5C06\u6B64\u5E94\u7528\u7A0B\u5E8F\u653E\u7F6E\u5230\u7684\u5F00\u59CB\u83DC\u5355\u7EC4
 param.menu-group.default=\u672A\u77E5
@@ -14,8 +40,5 @@
 param.registry-name.name=\u6CE8\u518C\u8868\u540D\u79F0
 param.registry-name.description=\u7528\u4E8E\u6CE8\u518C\u8868\u5F15\u7528\u7684\u5E94\u7528\u7A0B\u5E8F\u7684\u540D\u79F0\u3002\u9ED8\u8BA4\u503C\u4E3A\u53EA\u5305\u542B\u5B57\u6BCD\u6570\u5B57, \u70B9\u548C\u77ED\u5212\u7EBF (\u65E0\u7A7A\u683C) \u7684\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0\u3002
 
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
 param.installdir-chooser.name=\u5B89\u88C5\u76EE\u5F55\u9009\u62E9\u5668
 param.installdir-chooser.description=\u6DFB\u52A0\u5BF9\u8BDD\u6846\u4EE5\u5141\u8BB8\u7528\u6237\u9009\u62E9\u5C06\u5728\u5176\u4E2D\u5B89\u88C5\u4EA7\u54C1\u7684\u76EE\u5F55\u3002
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.iss	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.iss	Wed Oct 17 13:50:11 2018 -0400
@@ -8,9 +8,6 @@
 AppPublisher=APPLICATION_VENDOR
 AppComments=APPLICATION_COMMENTS
 AppCopyright=APPLICATION_COPYRIGHT
-;AppPublisherURL=http://java.com/
-;AppSupportURL=http://java.com/
-;AppUpdatesURL=http://java.com/
 DefaultDirName=APPLICATION_INSTALL_ROOT\APPLICATION_NAME
 DisableStartupPrompt=Yes
 DisableDirPage=DISABLE_DIR_PAGE
@@ -71,6 +68,5 @@
 // Possible future improvements:
 //   if version less or same => just launch app
 //   if upgrade => check if same app is running and wait for it to exit
-//   Add pack200/unpack200 support? 
   Result := True;
 end;  
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.jre.iss	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.jre.iss	Wed Oct 17 13:50:11 2018 -0400
@@ -8,9 +8,6 @@
 AppPublisher=APPLICATION_VENDOR
 AppComments=APPLICATION_COMMENTS
 AppCopyright=APPLICATION_COPYRIGHT
-;AppPublisherURL=http://java.com/
-;AppSupportURL=http://java.com/
-;AppUpdatesURL=http://java.com/
 DefaultDirName=APPLICATION_INSTALL_ROOT\APPLICATION_NAME
 DisableStartupPrompt=Yes
 DisableDirPage=DISABLE_DIR_PAGE
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinAppBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinAppBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -35,8 +35,9 @@
 import jdk.packager.internal.UnsupportedPlatformException;
 import jdk.packager.internal.builders.windows.WindowsAppImageBuilder;
 import jdk.packager.internal.resources.windows.WinResources;
-
 import jdk.packager.internal.JLinkBundlerHelper;
+import jdk.packager.internal.Arguments;
+import jdk.packager.internal.builders.AbstractAppImageBuilder;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -47,10 +48,8 @@
 import java.util.Collection;
 import java.util.Map;
 import java.util.ResourceBundle;
-import jdk.packager.internal.Arguments;
 
 import static jdk.packager.internal.windows.WindowsBundlerParam.*;
-import jdk.packager.internal.builders.AbstractAppImageBuilder;
 import static jdk.packager.internal.windows.WinMsiBundler.WIN_APP_IMAGE;
 
 public class WinAppBundler extends AbstractImageBundler {
@@ -159,14 +158,18 @@
     }
 
     private static String appName;
-    private synchronized static String getAppName(Map<String, ? super Object> p) {
+    private synchronized static String getAppName(
+            Map<String, ? super Object> p) {
         // If we building from predefined app image, then we should use names
         // from image and not from CLI.
         if (usePredefineAppName(p)) {
             if (appName == null) {
-                // Use WIN_APP_IMAGE here, since we already copy pre-defined image to WIN_APP_IMAGE
-                File appImageDir = new File(WIN_APP_IMAGE.fetchFrom(p).toString() + "\\app");
-                File [] files = appImageDir.listFiles((File dir, String name) -> name.endsWith(".cfg"));
+                // Use WIN_APP_IMAGE here, since we already copy pre-defined
+                // image to WIN_APP_IMAGE
+                File appImageDir = new File(
+                        WIN_APP_IMAGE.fetchFrom(p).toString() + "\\app");
+                File [] files = appImageDir.listFiles(
+                        (File dir, String name) -> name.endsWith(".cfg"));
                 if (files == null || files.length != 1) {
                     throw new RuntimeException(MessageFormat.format(
                         I18N.getString("error.cannot-find-cfg"),
@@ -361,7 +364,6 @@
                 MAIN_CLASS,
                 MAIN_JAR,
                 PREFERENCES_ID,
-                PRELOADER_CLASS,
                 VERSION,
                 VERBOSE
             );
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinExeBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinExeBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -22,6 +22,7 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
 package jdk.packager.internal.windows;
 
 import jdk.packager.internal.*;
@@ -146,7 +147,9 @@
             "win.exe.iscc.exe",
             String.class,
             params -> {
-                for (String dirString : (System.getenv("PATH") + ";C:\\Program Files (x86)\\Inno Setup 5;C:\\Program Files\\Inno Setup 5").split(";")) {
+                for (String dirString : (System.getenv("PATH")
+                        + ";C:\\Program Files (x86)\\Inno Setup 5;"
+                        + "C:\\Program Files\\Inno Setup 5").split(";")) {
                     File f = new File(dirString.replace("\"", ""),
                             TOOL_INNO_SETUP_COMPILER);
                     if (f.isFile()) {
@@ -197,11 +200,7 @@
                 LICENSE_FILE,
                 MENU_GROUP,
                 MENU_HINT,
-                // RUN_AT_STARTUP,
                 SHORTCUT_HINT,
-                // SERVICE_HINT,
-                // START_ON_INSTALL,
-                // STOP_ON_UNINSTALL,
                 EXE_SYSTEM_WIDE,
                 TITLE,
                 VENDOR,
@@ -303,28 +302,6 @@
                         getString("error.copyright-is-too-long.advice"));
             }
 
-            // validate license file, if used, exists in the proper place
-            if (p.containsKey(LICENSE_FILE.getID())) {
-                List<RelativeFileSet> appResourcesList =
-                        APP_RESOURCES_LIST.fetchFrom(p);
-                for (String license : LICENSE_FILE.fetchFrom(p)) {
-                    boolean found = false;
-                    for (RelativeFileSet appResources : appResourcesList) {
-                        found = found || appResources.contains(license);
-                    }
-                    if (!found) {
-                        throw new ConfigException(
-                                getString("error.license-missing"),
-                                MessageFormat.format(getString(
-                                "error.license-missing.advice"), license));
-                    }
-                }
-            }
-//
-//            if (SERVICE_HINT.fetchFrom(p)) {
-//                SERVICE_BUNDLER.fetchFrom(p).validate(p);
-//            }
-
             double innoVersion = findToolVersion(
                     TOOL_INNO_SETUP_COMPILER_EXECUTABLE.fetchFrom(p));
 
@@ -418,7 +395,8 @@
                 for (String s : licenseFiles) {
                     if (rfs.contains(s)) {
                         File lfile = new File(rfs.getBaseDirectory(), s);
-                        File destFile = new File(appDir, lfile.getName());
+                        File destFile =
+                            new File(appDir.getParentFile(), lfile.getName());
                         IOUtils.copyFile(lfile, destFile);
                         ensureByMutationFileIsRTF(destFile);
                         break outerLoop;
@@ -448,15 +426,6 @@
             }
         }
 
-//
-//        if (SERVICE_HINT.fetchFrom(p)) {
-//            // copies the service launcher to the app root folder
-//            appDir = SERVICE_BUNDLER.fetchFrom(p).doBundle(
-//                    p, appOutputDir, true);
-//            if (appDir == null) {
-//                return false;
-//            }
-//        }
         return true;
     }
 
@@ -654,39 +623,14 @@
         } else {
             data.put("ARCHITECTURE_BIT_MODE", "");
         }
-//
-//        if (SERVICE_HINT.fetchFrom(p)) {
-//            data.put("RUN_FILENAME",
-//                innosetupEscape(WinServiceBundler.getAppSvcName(p)));
-//        } else {
-              validateValueAndPut(data, "RUN_FILENAME", APP_NAME, p);
-//        }
+        validateValueAndPut(data, "RUN_FILENAME", APP_NAME, p);
 
         validateValueAndPut(data, "APPLICATION_DESCRIPTION",
                 DESCRIPTION, p);
 
-//        data.put("APPLICATION_SERVICE",
-//                SERVICE_HINT.fetchFrom(p) ? "returnTrue" : "returnFalse");
         data.put("APPLICATION_SERVICE", "returnFalse");
-
-//        data.put("APPLICATION_NOT_SERVICE",
-//                SERVICE_HINT.fetchFrom(p) ? "returnFalse" : "returnTrue");
         data.put("APPLICATION_NOT_SERVICE", "returnFalse");
-
-//        data.put("APPLICATION_APP_CDS_INSTALL",
-//                (UNLOCK_COMMERCIAL_FEATURES.fetchFrom(p) &&
-//                ENABLE_APP_CDS.fetchFrom(p) &&
-//                ("install".equals(APP_CDS_CACHE_MODE.fetchFrom(p)) ||
-//                "auto+install".equals(APP_CDS_CACHE_MODE.fetchFrom(p))))
-//                ? "returnTrue" : "returnFalse");
         data.put("APPLICATION_APP_CDS_INSTALL", "returnFalse");
-
-//        data.put("START_ON_INSTALL",
-//                START_ON_INSTALL.fetchFrom(p) ? "-startOnInstall" : "");
-//        data.put("STOP_ON_UNINSTALL",
-//                STOP_ON_UNINSTALL.fetchFrom(p) ? "-stopOnUninstall" : "");
-//        data.put("RUN_AT_STARTUP",
-//                RUN_AT_STARTUP.fetchFrom(p) ? "-runAtStartup" : "");
         data.put("START_ON_INSTALL", "");
         data.put("STOP_ON_UNINSTALL", "");
         data.put("RUN_AT_STARTUP", "");
@@ -749,13 +693,16 @@
                         // Flags: uninsdeletevalue"
                         registryEntries.append("Root: HKCR; Subkey: \".")
                                 .append(ext)
-                                .append("\"; ValueType: string; ValueName: \"\"; ValueData: \"")
+                                .append("\"; ValueType: string;"
+                                + " ValueName: \"\"; ValueData: \"")
                                 .append(entryName)
                                 .append("\"; Flags: uninsdeletevalue\r\n");
                     } else {
-                        registryEntries.append("Root: HKCU; Subkey: \"Software\\Classes\\.")
+                        registryEntries.append(
+                                "Root: HKCU; Subkey: \"Software\\Classes\\.")
                                 .append(ext)
-                                .append("\"; ValueType: string; ValueName: \"\"; ValueData: \"")
+                                .append("\"; ValueType: string;"
+                                + " ValueName: \"\"; ValueData: \"")
                                 .append(entryName)
                                 .append("\"; Flags: uninsdeletevalue\r\n");
                     }
@@ -764,11 +711,13 @@
 
             if (extensions != null && !extensions.isEmpty()) {
                 String ext = extensions.get(0);
-                List<String> mimeTypes = FA_CONTENT_TYPE.fetchFrom(fileAssociation);
+                List<String> mimeTypes =
+                        FA_CONTENT_TYPE.fetchFrom(fileAssociation);
                 for (String mime : mimeTypes) {
                     if (isSystemWide) {
                         // "Root: HKCR;
-                        // Subkey: HKCR\\Mime\\Database\\Content Type\\application/chaos;
+                        // Subkey: HKCR\\Mime\\Database\\
+                        //         Content Type\\application/chaos;
                         // ValueType: string;
                         // ValueName: Extension;
                         // ValueData: .chaos;
@@ -895,7 +844,7 @@
             throws IOException {
         prepareMainProjectFile(p);
 
-        //prepare installer icon
+        // prepare installer icon
         File iconTarget = getConfig_SmallInnoSetupIcon(p);
         fetchResource(WinAppBundler.WIN_BUNDLER_PREFIX + iconTarget.getName(),
                 getString("resource.setup-icon"),
@@ -934,9 +883,10 @@
 
         outdir.mkdirs();
 
-        //run candle
+        // run Inno Setup
         ProcessBuilder pb = new ProcessBuilder(
                 TOOL_INNO_SETUP_COMPILER_EXECUTABLE.fetchFrom(p),
+                "/q",    // turn off inno setup output
                 "/o"+outdir.getAbsolutePath(),
                 getConfig_ExeProjectFile(p).getAbsolutePath());
         pb = pb.directory(EXE_IMAGE_DIR.fetchFrom(p));
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinMsiBundler.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinMsiBundler.java	Wed Oct 17 13:50:11 2018 -0400
@@ -252,13 +252,8 @@
                 MENU_GROUP,
                 MENU_HINT,
                 PRODUCT_VERSION,
-                // RUN_AT_STARTUP,
                 SHORTCUT_HINT,
-                // SERVICE_HINT,
-                // START_ON_INSTALL,
-                // STOP_ON_UNINSTALL,
                 MSI_SYSTEM_WIDE,
-                //UPGRADE_UUID,
                 VENDOR,
                 LICENSE_FILE,
                 INSTALLDIR_CHOOSER
@@ -482,7 +477,8 @@
 
         // we either have an application image or need to build one
         if (appImage != null) {
-            appDir = new File(MSI_IMAGE_DIR.fetchFrom(p), APP_NAME.fetchFrom(p));
+            appDir = new File(
+                    MSI_IMAGE_DIR.fetchFrom(p), APP_NAME.fetchFrom(p));
             // copy everything from appImage dir into appDir/name
             IOUtils.copyRecursive(appImage.toPath(), appDir.toPath());
         } else {
@@ -1191,7 +1187,7 @@
         commandLine.add("-out");
         commandLine.add(msiOut.getAbsolutePath());
 
-        //create .msi
+        // create .msi
         pb = new ProcessBuilder(commandLine);
 
         pb = pb.directory(WIN_APP_IMAGE.fetchFrom(params));
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsBundlerParam.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsBundlerParam.java	Wed Oct 17 13:50:11 2018 -0400
@@ -39,7 +39,6 @@
 
 import static jdk.packager.internal.JreUtils.extractJreAsRelativeFileSet;
 
-
 public class WindowsBundlerParam<T> extends StandardBundlerParam<T> {
 
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
@@ -162,19 +161,6 @@
             (s, p) -> null
     );
 
-    public static final BundlerParamInfo<RelativeFileSet> WIN_RUNTIME =
-            new StandardBundlerParam<>(
-            I18N.getString("param.runtime.name"),
-            I18N.getString("param.runtime.description"),
-            BundleParams.PARAM_RUNTIME,
-            RelativeFileSet.class,
-            params -> extractJreAsRelativeFileSet(
-                    System.getProperty("java.home"),
-                    WIN_JRE_RULES.fetchFrom(params)),
-            (s, p) -> extractJreAsRelativeFileSet(s,
-                    WIN_JRE_RULES.fetchFrom(p))
-    );
-
     public static final BundlerParamInfo<Boolean> INSTALLDIR_CHOOSER =
             new StandardBundlerParam<> (
             I18N.getString("param.installdir-chooser.name"),
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsRegistry.java	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsRegistry.java	Wed Oct 17 13:50:11 2018 -0400
@@ -47,8 +47,8 @@
      */
     public static final boolean readDisableRealtimeMonitoring() {
         boolean result = false;
-        final String key =
-            "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows Defender\\Real-Time Protection";
+        final String key = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\"
+                  + "Windows Defender\\Real-Time Protection";
         final String subkey = "DisableRealtimeMonitoring";
         String value = readRegistry(key, subkey);
 
@@ -77,8 +77,8 @@
 
     public static final List<String> readExclusionsPaths() {
         List<String> result = new ArrayList();
-        final String key =
-                "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows Defender\\Exclusions\\Paths";
+        final String key = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\"
+                + "Windows Defender\\Exclusions\\Paths";
         String value = readRegistry(key, "");
 
         if (!value.isEmpty()) {
--- a/src/jdk.packager/windows/native/jpackager/IconSwap.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/native/jpackager/IconSwap.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -117,7 +117,8 @@
         return result;
     }
 
-    HANDLE icon = CreateFile(iconFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+    HANDLE icon = CreateFile(iconFileName, GENERIC_READ, 0, NULL,
+            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
     if (icon == INVALID_HANDLE_VALUE) {
         PrintError();
         return result;
@@ -131,7 +132,8 @@
     ReadFile(icon, &idType, sizeof(WORD), &dwBytesRead, NULL);
     ReadFile(icon, &idCount, sizeof(WORD), &dwBytesRead, NULL);
 
-    LPICONDIR lpid = (LPICONDIR)malloc(sizeof(ICONDIR) + (sizeof(ICONDIRENTRY) * (idCount - 1)));
+    LPICONDIR lpid = (LPICONDIR)malloc(
+            sizeof(ICONDIR) + (sizeof(ICONDIRENTRY) * (idCount - 1)));
 
     if (lpid == NULL) {
         CloseHandle(icon);
@@ -142,10 +144,12 @@
     lpid->idType = idType;
     lpid->idCount = idCount;
 
-    ReadFile(icon, &lpid->idEntries[0], sizeof(ICONDIRENTRY) * lpid->idCount, &dwBytesRead, NULL);
+    ReadFile(icon, &lpid->idEntries[0], sizeof(ICONDIRENTRY) * lpid->idCount,
+            &dwBytesRead, NULL);
 
 
-    LPGRPICONDIR lpgid = (LPGRPICONDIR)malloc(sizeof(GRPICONDIR) + (sizeof(GRPICONDIRENTRY) * (idCount - 1)));
+    LPGRPICONDIR lpgid = (LPGRPICONDIR)malloc(
+            sizeof(GRPICONDIR) + (sizeof(GRPICONDIRENTRY) * (idCount - 1)));
 
     if (lpid == NULL) {
         CloseHandle(icon);
@@ -183,10 +187,13 @@
     for(int i = 0; i < lpid->idCount; i++)
     {
         LPBYTE lpBuffer = (LPBYTE)malloc(lpid->idEntries[i].dwBytesInRes);
-        SetFilePointer(icon, lpid->idEntries[i].dwImageOffset, NULL, FILE_BEGIN);
-        ReadFile(icon, lpBuffer, lpid->idEntries[i].dwBytesInRes, &dwBytesRead, NULL);
-        if (!UpdateResource(update, RT_ICON, MAKEINTRESOURCE(lpgid->idEntries[i].nID),
-                           language, &lpBuffer[0], lpid->idEntries[i].dwBytesInRes))
+        SetFilePointer(icon, lpid->idEntries[i].dwImageOffset,
+                NULL, FILE_BEGIN);
+        ReadFile(icon, lpBuffer, lpid->idEntries[i].dwBytesInRes,
+                &dwBytesRead, NULL);
+        if (!UpdateResource(update, RT_ICON,
+                MAKEINTRESOURCE(lpgid->idEntries[i].nID),
+                language, &lpBuffer[0], lpid->idEntries[i].dwBytesInRes))
         {
             free(lpBuffer);
             free(lpid);
@@ -201,8 +208,9 @@
     free(lpid);
     CloseHandle(icon);
 
-    if (!UpdateResource(update, RT_GROUP_ICON,  MAKEINTRESOURCE(1), language,
-                        &lpgid[0], (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount)))
+    if (!UpdateResource(update, RT_GROUP_ICON,
+            MAKEINTRESOURCE(1), language, &lpgid[0],
+            (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount)))
     {
         free(lpgid);
         PrintError();
--- a/src/jdk.packager/windows/native/jpackager/VersionInfoSwap.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/native/jpackager/VersionInfoSwap.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -75,7 +75,8 @@
     std::wifstream stream(m_propFileName.data());
 
     const std::locale empty_locale = std::locale::empty();
-    const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
+    const std::locale utf8_locale =
+            std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
     stream.imbue(utf8_locale);
 
     if (stream.is_open() == true) {
@@ -145,7 +146,8 @@
 
     // Strings
     std::vector<wstring> keys;
-    for (std::map<wstring, wstring>::const_iterator it = m_props.begin(); it != m_props.end(); ++it) {
+    for (std::map<wstring, wstring>::const_iterator it =
+            m_props.begin(); it != m_props.end(); ++it) {
         keys.push_back(it->first);
     }
 
@@ -160,12 +162,15 @@
         buf->AppendString(name);
         buf->Align(4);
         buf->AppendString(value);
-        buf->ReplaceWORD(stringStart, static_cast<WORD>(buf->getPos() - stringStart));
+        buf->ReplaceWORD(stringStart,
+                static_cast<WORD>(buf->getPos() - stringStart));
         buf->Align(4);
     }
 
-    buf->ReplaceWORD(stringTableStart, static_cast<WORD>(buf->getPos() - stringTableStart));
-    buf->ReplaceWORD(stringFileInfoStart, static_cast<WORD>(buf->getPos() - stringFileInfoStart));
+    buf->ReplaceWORD(stringTableStart,
+            static_cast<WORD>(buf->getPos() - stringTableStart));
+    buf->ReplaceWORD(stringFileInfoStart,
+            static_cast<WORD>(buf->getPos() - stringFileInfoStart));
 
     // VarFileInfo
     size_t varFileInfoStart = buf->getPos();
@@ -184,8 +189,10 @@
     buf->AppendWORD(0x0409);
     buf->AppendWORD(0x04B0);
 
-    buf->ReplaceWORD(varFileInfoStart, static_cast<WORD>(buf->getPos() - varFileInfoStart));
-    buf->ReplaceWORD(versionInfoStart, static_cast<WORD>(buf->getPos() - versionInfoStart));
+    buf->ReplaceWORD(varFileInfoStart,
+            static_cast<WORD>(buf->getPos() - varFileInfoStart));
+    buf->ReplaceWORD(versionInfoStart,
+            static_cast<WORD>(buf->getPos() - versionInfoStart));
 }
 
 void VersionInfoSwap::FillFixedFileInfo(VS_FIXEDFILEINFO *fxi) {
@@ -199,12 +206,14 @@
     unsigned fv_1 = 0, fv_2 = 0, fv_3 = 0, fv_4 = 0;
     unsigned pv_1 = 0, pv_2 = 0, pv_3 = 0, pv_4 = 0;
 
-    ret = _stscanf_s(fileVersion.c_str(), TEXT("%d.%d.%d.%d"), &fv_1, &fv_2, &fv_3, &fv_4);
+    ret = _stscanf_s(fileVersion.c_str(),
+            TEXT("%d.%d.%d.%d"), &fv_1, &fv_2, &fv_3, &fv_4);
     if (ret <= 0 || ret > 4) {
         fwprintf(stderr, TEXT("Unable to parse FileVersion value\n"));
     }
 
-    ret = _stscanf_s(productVersion.c_str(), TEXT("%d.%d.%d.%d"), &pv_1, &pv_2, &pv_3, &pv_4);
+    ret = _stscanf_s(productVersion.c_str(),
+            TEXT("%d.%d.%d.%d"), &pv_1, &pv_2, &pv_3, &pv_4);
     if (ret <= 0 || ret > 4) {
         fwprintf(stderr, TEXT("Unable to parse ProductVersion value\n"));
     }
@@ -227,7 +236,8 @@
     }
     fxi->dwFileOS = VOS_NT_WINDOWS32;
 
-    wstring exeExt = m_exeFileName.substr(m_exeFileName.find_last_of(TEXT(".")));
+    wstring exeExt =
+            m_exeFileName.substr(m_exeFileName.find_last_of(TEXT(".")));
     if (exeExt == TEXT(".exe")) {
         fxi->dwFileType = VFT_APP;
     }
--- a/src/jdk.packager/windows/native/jpackager/javapackager.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,577 +0,0 @@
-/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string>
-#include <windows.h>
-
-#include "IconSwap.h"
-#include "VersionInfoSwap.h"
-
-#define _DEBUG true
-
-#ifdef _DEBUG
-#include <iostream>
-#include <sstream>
-#endif
-
-using namespace std;
-
-#define MAX_KEY_LENGTH 255
-#define MAX_VALUE_NAME 16383
-#define TRAILING_PATHSEPARATOR '\\'
-
-bool from_string(int &result, string &str) {
-    const char *p = str.c_str();
-    int res = 0;
-    for (int index = 0;; index++) {
-        char c = str[index];
-        if (c == 0 && index > 0) {
-            result = res;
-            return true;
-        }
-        if (c < '0' || c > '9')
-            return false;
-        res = res * 10 + (c - '0');
-    }
-}
-
-void PrintCSBackupAPIErrorMessage(DWORD dwErr) {
-
-    char wszMsgBuff[512]; // Buffer for text.
-
-    DWORD dwChars; // Number of chars returned.
-
-    // Try to get the message from the system errors.
-    dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
-            FORMAT_MESSAGE_IGNORE_INSERTS,
-            NULL,
-            dwErr,
-            0,
-            wszMsgBuff,
-            512,
-            NULL);
-
-    if (0 == dwChars) {
-        // The error code did not exist in the system errors.
-        // Try ntdsbmsg.dll for the error code.
-        HINSTANCE hInst;
-
-        // Load the library.
-        hInst = LoadLibraryA("ntdsbmsg.dll");
-        if (NULL == hInst) {
-#ifdef _DEBUG
-            cerr << "cannot load ntdsbmsg.dll\n";
-#endif
-            return;
-        }
-
-        // Try getting message text from ntdsbmsg.
-        dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE |
-                FORMAT_MESSAGE_IGNORE_INSERTS,
-                hInst,
-                dwErr,
-                0,
-                wszMsgBuff,
-                512,
-                NULL);
-
-        // Free the library.
-        FreeLibrary(hInst);
-    }
-
-    // Display the error message, or generic text if not found.
-#ifdef _DEBUG
-    cerr << "Error value: " << dwErr << " Message: " << ((dwChars > 0) ? wszMsgBuff : "Error message not found.") << endl;
-#endif
-}
-
-class JavaVersion {
-public:
-    int v1;
-    int v2;
-    int v3;
-    std::wstring home;
-    std::wstring path;
-
-    JavaVersion(int pv1, int pv2, int pv3) {
-        v1 = pv1;
-        v2 = pv2;
-        v3 = pv3;
-    }
-
-    bool operator>(const JavaVersion &other) const {
-        if (v1 > other.v1)
-            return true;
-        if (v1 == other.v1) {
-            if (v2 > other.v2)
-                return true;
-            if (v2 == other.v2)
-                return v3 > other.v3;
-        }
-        return false;
-    }
-
-    bool operator>=(const JavaVersion &other) const {
-        if (v1 > other.v1)
-            return true;
-        if (v1 == other.v1) {
-            if (v2 > other.v2)
-                return true;
-            if (v2 == other.v2)
-                return v3 >= other.v3;
-        }
-        return false;
-    }
-
-    bool operator<(const JavaVersion &other) const {
-        if (v1 < other.v1)
-            return true;
-        if (v1 == other.v1) {
-            if (v2 < other.v2)
-                return true;
-            if (v2 == other.v2)
-                return v3 < other.v3;
-        }
-        return false;
-    }
-};
-
-class EnvironmentVariable {
-private:
-    std::wstring FValue;
-
-public:
-    EnvironmentVariable(std::wstring Name) {
-        wchar_t* value;
-        size_t requiredSize;
-
-        _wgetenv_s(&requiredSize, NULL, 0, Name.data());
-
-        if (requiredSize != 0) {
-            value = (wchar_t*)malloc(requiredSize * sizeof(wchar_t));
-            if (value)
-            {
-                // Get the value of the LIB environment variable.
-                _wgetenv_s(&requiredSize, value, requiredSize, Name.data());
-                FValue = value;
-            }
-        }
-    }
-
-    std::wstring get() {
-        return FValue;
-    }
-
-    bool exists() {
-        return !FValue.empty();
-    }
-};
-
-bool checkJavaHome(HKEY key, const char * sKey, const char * jv, JavaVersion *version) {
-    char p[MAX_KEY_LENGTH];
-    HKEY hKey;
-    bool result = false;
-    int res;
-
-    strcpy_s(p, MAX_KEY_LENGTH, sKey);
-    strcat_s(p, MAX_KEY_LENGTH - strlen(p), "\\");
-    strcat_s(p, MAX_KEY_LENGTH - strlen(p), jv);
-
-    if (RegOpenKeyExA(key,
-            p,
-            0,
-            KEY_READ,
-            &hKey) == ERROR_SUCCESS
-            ) {
-        DWORD ot = REG_SZ;
-        DWORD size = 255;
-        wchar_t data[MAX_PATH] = { 0 };
-        if ((res = RegQueryValueEx(hKey, L"JavaHome", NULL, &ot, (BYTE *)data, &size)) == ERROR_SUCCESS) {
-            version->home = data;
-            std::wstring ldata = std::wstring(data) + L"\\bin\\java.exe";
-            version->path = data;
-            result = GetFileAttributes(data) != 0xFFFFFFFF;
-        }
-        else {
-            PrintCSBackupAPIErrorMessage(res);
-            result = false;
-        }
-        RegCloseKey(hKey);
-    }
-    else {
-#ifdef _DEBUG
-        cerr << "Can not open registry key" << endl;
-#endif
-        result = false;
-    }
-
-    return result;
-}
-
-JavaVersion * parseName(const char * jName) {
-    string s(jName);
-
-    if (s.length() == 0) {
-        return NULL;
-    }
-
-    string n;
-    string::size_type pos;
-
-    pos = s.find_first_of(".");
-    if (pos != string::npos) {
-        n = s.substr(0, pos);
-        s = s.substr(pos + 1);
-    }
-    else {
-        n = s;
-        s = "";
-    }
-
-    int v1 = 0;
-
-    if (n.length() > 0) {
-        if (!from_string(v1, n))
-            return NULL;
-    }
-
-
-    pos = s.find_first_of(".");
-    if (pos != string::npos) {
-        n = s.substr(0, pos);
-        s = s.substr(pos + 1);
-    }
-    else {
-        n = s;
-        s = "";
-    }
-
-    int v2 = 0;
-
-    if (n.length() > 0) {
-        if (!from_string(v2, n))
-            return NULL;
-    }
-
-
-    size_t nn = s.length();
-    for (size_t i = 0; i < s.length(); i++) {
-        string c = s.substr(i, 1);
-        int tmp;
-        if (!from_string(tmp, c)) {
-            nn = i;
-            break;
-        }
-    }
-
-    n = s.substr(0, nn);
-    if (nn < s.length()) {
-        s = s.substr(nn + 1);
-    }
-    else s = "";
-
-    int v3 = 0;
-
-    if (n.length() > 0) {
-        if (!from_string(v3, n))
-            v3 = 0;
-    }
-
-    int v4 = 0;
-
-    // update version
-    if (s.length() > 0) {
-        nn = s.length();
-        for (size_t i = 0; i < s.length(); i++) {
-            string c = s.substr(i, 1);
-            int tmp;
-            if (!from_string(tmp, c)) {
-                nn = i;
-                break;
-            }
-        }
-
-        n = s.substr(0, nn);
-
-        if (n.length() > 0) {
-            if (!from_string(v4, n))
-                v4 = 0;
-        }
-    }
-
-    return new JavaVersion(v2, v3, v4);
-}
-
-JavaVersion * GetMaxVersion(HKEY key, const char * sKey) {
-    HKEY hKey;
-    JavaVersion * result = NULL;
-
-    if (RegOpenKeyExA(key,
-            sKey,
-            0,
-            KEY_READ,
-            &hKey) == ERROR_SUCCESS
-            ) {
-        DWORD retCode;
-        char achClass[MAX_PATH]; // buffer for class name
-        DWORD cchClassName = MAX_PATH; // size of class string
-
-
-        DWORD cchValue = MAX_VALUE_NAME;
-        DWORD cSubKeys = 0; // number of subkeys
-        DWORD cbMaxSubKey; // longest subkey size
-        DWORD cchMaxClass; // longest class string
-        DWORD cValues; // number of values for key
-        DWORD cchMaxValue; // longest value name
-        DWORD cbMaxValueData; // longest value data
-        DWORD cbSecurityDescriptor; // size of security descriptor
-        FILETIME ftLastWriteTime; // last write time
-
-        retCode = RegQueryInfoKeyA(
-                hKey, // key handle
-                achClass, // buffer for class name
-                &cchClassName, // size of class string
-                NULL, // reserved
-                &cSubKeys, // number of subkeys
-                &cbMaxSubKey, // longest subkey size
-                &cchMaxClass, // longest class string
-                &cValues, // number of values for this key
-                &cchMaxValue, // longest value name
-                &cbMaxValueData, // longest value data
-                &cbSecurityDescriptor, // security descriptor
-                &ftLastWriteTime); // last write time
-
-        if (cSubKeys) {
-            for (unsigned int i = 0; i < cSubKeys; i++) {
-                char achKey[MAX_KEY_LENGTH]; // buffer for subkey name
-                DWORD cbName = MAX_KEY_LENGTH;
-                retCode = RegEnumKeyExA(hKey, i,
-                        achKey,
-                        &cbName,
-                        NULL,
-                        NULL,
-                        NULL,
-                        &ftLastWriteTime);
-
-                if (retCode == ERROR_SUCCESS) {
-#ifdef _DEBUG
-                    cout << achKey << endl;
-#endif
-                    JavaVersion * nv = parseName(achKey);
-
-                    bool isHome = checkJavaHome(key, sKey, achKey, nv);
-#ifdef _DEBUG
-                    wcout << nv->home << " " << isHome << endl;
-#endif
-
-                    if (isHome)
-                    if (result == NULL) {
-                        result = nv;
-#ifdef _DEBUG
-                        cout << "NEW" << endl;
-#endif
-                    }
-                    else {
-                        if (nv != NULL) {
-                            if (*nv > *result) {
-#ifdef _DEBUG
-                                cout << "REPLACE" << endl;
-#endif
-                                delete result;
-                                result = nv;
-                            }
-                            else {
-#ifdef _DEBUG
-                                cout << "NO" << endl;
-#endif
-                                delete nv;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        RegCloseKey(hKey);
-    }
-
-    return result;
-}
-
-int fileExists(const std::wstring& path) {
-    WIN32_FIND_DATA ffd;
-    HANDLE hFind;
-
-    hFind = FindFirstFile(path.data(), &ffd);
-    if (hFind == INVALID_HANDLE_VALUE)
-        return FALSE;
-
-    FindClose(hFind);
-    return (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0;
-}
-
-bool hasEnding(std::wstring const &fullString, std::wstring const &ending) {
-    if (fullString.length() >= ending.length()) {
-        return (0 == fullString.compare(fullString.length() - ending.length(), 
-                                                        ending.length(), ending));
-    }
-    else {
-        return false;
-    }
-}
-
-std::wstring ExtractFilePath(std::wstring Path) {
-    std::wstring result;
-    size_t slash = Path.find_last_of(TRAILING_PATHSEPARATOR);
-    if (slash != std::wstring::npos)
-        result = Path.substr(0, slash);
-    return result;
-}
-
-std::wstring GetCurrentExecutableName() {
-    TCHAR FileName[MAX_PATH];
-    GetModuleFileName(NULL, FileName, MAX_PATH);
-    return FileName;
-}
-
-int wmain(int argc, wchar_t* argv[]) {
-    wchar_t buf[MAX_PATH];
-    GetModuleFileName(NULL, buf, MAX_PATH);
-
-    std::wstring javacmd;
-    std::wstring javahome;
-
-    std::wstring exe = GetCurrentExecutableName();
-
-    if (exe.length() <= 0) {
-        JavaVersion * jv2 = GetMaxVersion(HKEY_LOCAL_MACHINE, "SOFTWARE\\JavaSoft\\JDK");
-        if (jv2 != NULL) {
-            javahome = jv2->home;
-            javacmd = javahome + L"\\bin\\" + L"\\java.exe";
-        }
-        else {
-            javacmd = L"java.exe";
-        }
-    } else {
-        javacmd = ExtractFilePath(exe) + L"\\java.exe";
-    }
-
-    std::wstring cmd = L"\"" + javacmd + L"\"";
-    if (javahome.length() > 0) {
-        SetEnvironmentVariable(L"JAVA_HOME", javahome.c_str());
-    }
-
-    std::wstring memory = L"-Xmx512M";
-    std::wstring debug = L"";
-    std::wstring args = L"";
-
-    for (int i = 1; i < argc; i++) {
-        std::wstring argument = argv[i];
-        std::wstring debug_arg = L"-J-Xdebug:";
-        std::wstring icon_swap_arg = L"--icon-swap";
-        std::wstring version_swap_arg = L"--version-swap";
-
-        if (argument.find(L"-J-Xmx", 0) == 0) {
-            memory = argument.substr(2, argument.length() - 2);
-        }
-        else if (argument.find(debug_arg, 0) == 0) {
-            std::wstring address = argument.substr(debug_arg.length(),
-                                argument.length() - debug_arg.length());
-            debug = L"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + address;
-        }
-        else if (argument.find(icon_swap_arg, 0) == 0) {
-            if (argc != 4) {
-                fwprintf(stderr, TEXT("Usage: jpackager.exe --icon-swap [Icon File Name] [Executable File Name]\n"));
-                return 1;
-            }
-
-            wprintf(L"Icon File Name: %s\n", argv[i + 1]);
-            wprintf(L"Executable File Name: %s\n", argv[i + 2]);
-
-            if (ChangeIcon(argv[i + 1], argv[i + 2]) == true) {
-                return 0;
-            }
-            else {
-                fwprintf(stderr, TEXT("failed\n"));
-                return 1;
-            }
-        }
-        else if (argument.find(version_swap_arg, 0) == 0) {
-            if (argc != 4) {
-                fwprintf(stderr, TEXT("Usage: jpackager.exe --version-swap [Property File Name] [Executable File Name]\n"));
-                return 1;
-            }
-
-            fwprintf(stdout, TEXT("Resource File Name: %s\n"), argv[i + 1]);
-            fwprintf(stdout, TEXT("Executable File Name: %s\n"), argv[i + 2]);
-
-            VersionInfoSwap vs(argv[i + 1], argv[i + 2]);
-
-            if (vs.PatchExecutable()) {
-                return 0;
-            }
-            else {
-                fwprintf(stderr, TEXT("failed\n"));
-                return 1;
-            }
-        }
-        else {
-            args = args + L" \"" + argv[i] + L"\"";
-        }
-    }
-
-
-    cmd += debug + L" " + memory +
-                L" -m jdk.packager/jdk.packager.Main" +
-                L" " + args;
-
-#ifdef _DEBUG
-    fwprintf (stdout, TEXT("%s"), cmd.c_str());
-#endif
-
-    STARTUPINFO start;
-    PROCESS_INFORMATION pi;
-    memset(&start, 0, sizeof (start));
-    start.cb = sizeof(start);
-
-    if (!CreateProcess(NULL, (wchar_t *) cmd.data(),
-            NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &start, &pi)) {
-#ifdef _DEBUG
-        fprintf(stderr, "Cannot start java.exe");
-#endif
-        return EXIT_FAILURE;
-    }
-
-    WaitForSingleObject(pi.hProcess, INFINITE);
-    unsigned long exitCode;
-    GetExitCodeProcess(pi.hProcess, &exitCode);
-
-    CloseHandle(pi.hProcess);
-    CloseHandle(pi.hThread);
-
-    return exitCode;
-}
--- a/src/jdk.packager/windows/native/jpackager/javapackager.manifest	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
- <assemblyIdentity version="FXVERSION"
-         processorArchitecture="X86"
-         name="javapackager.exe"
-         type="win32"/>
-  <description>JavaFX application packager</description>
-  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
-    <security>
-      <requestedPrivileges>
-        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
-      </requestedPrivileges>
-    </security>
-  </trustInfo>
-  <!-- Indicate this JDK version is Windows 7 compatible -->
-   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
-      <application>
-        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
-        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
-      </application>
-    </compatibility>
-</assembly>
--- a/src/jdk.packager/windows/native/jpackager/javapackager.rc	Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "windows.h"
-
-// Need 2 defines so macro argument to XSTR will get expanded before quoting.
-#define XSTR(x) STR(x)
-#define STR(x)  #x
-
-LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION    JFX_FVER
- PRODUCTVERSION JFX_FVER
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- // FILEOS 0x4 is Win32, 0x40004 is Win32 NT only
- FILEOS 0x4L
- // FILETYPE should be 0x1 for .exe and 0x2 for .dll
- FILETYPE 0x1L
- FILESUBTYPE 0x0L
-BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-        BLOCK "000004b0"
-        BEGIN
-            VALUE "CompanyName",      XSTR(JFX_COMPANY)        "\0"
-            VALUE "FileDescription",  XSTR(JFX_COMPONENT)      "\0"
-            VALUE "FileVersion",      XSTR(JFX_VER)            "\0"
-            VALUE "Full Version",     XSTR(JFX_BUILD_ID)       "\0"
-            VALUE "InternalName",     XSTR(JFX_INTERNAL_NAME)  "\0"
-            VALUE "LegalCopyright",   XSTR(JFX_COPYRIGHT)      "\0"
-            VALUE "OriginalFilename", XSTR(JFX_FNAME)          "\0"
-            VALUE "ProductName",      XSTR(JFX_NAME)           "\0"
-            VALUE "ProductVersion",   XSTR(JFX_VER)            "\0"
-        END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-        VALUE "Translation", 0x0, 1200
-    END
-END
-
-
-#define MANIFEST_RESOURCE_ID 1
-
-// Manifest
-//
-
-MANIFEST_RESOURCE_ID RT_MANIFEST "javapackager.manifest"
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/windows/native/jpackager/jpackager.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,580 @@
+/*
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string>
+#include <windows.h>
+
+#include "IconSwap.h"
+#include "VersionInfoSwap.h"
+
+#define _DEBUG true
+
+#ifdef _DEBUG
+#include <iostream>
+#include <sstream>
+#endif
+
+using namespace std;
+
+#define MAX_KEY_LENGTH 255
+#define MAX_VALUE_NAME 16383
+#define TRAILING_PATHSEPARATOR '\\'
+
+bool from_string(int &result, string &str) {
+    const char *p = str.c_str();
+    int res = 0;
+    for (int index = 0;; index++) {
+        char c = str[index];
+        if (c == 0 && index > 0) {
+            result = res;
+            return true;
+        }
+        if (c < '0' || c > '9')
+            return false;
+        res = res * 10 + (c - '0');
+    }
+}
+
+void PrintCSBackupAPIErrorMessage(DWORD dwErr) {
+
+    char wszMsgBuff[512]; // Buffer for text.
+
+    DWORD dwChars; // Number of chars returned.
+
+    // Try to get the message from the system errors.
+    dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
+            FORMAT_MESSAGE_IGNORE_INSERTS,
+            NULL,
+            dwErr,
+            0,
+            wszMsgBuff,
+            512,
+            NULL);
+
+    if (0 == dwChars) {
+        // The error code did not exist in the system errors.
+        // Try ntdsbmsg.dll for the error code.
+        HINSTANCE hInst;
+
+        // Load the library.
+        hInst = LoadLibraryA("ntdsbmsg.dll");
+        if (NULL == hInst) {
+#ifdef _DEBUG
+            cerr << "cannot load ntdsbmsg.dll\n";
+#endif
+            return;
+        }
+
+        // Try getting message text from ntdsbmsg.
+        dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE |
+                FORMAT_MESSAGE_IGNORE_INSERTS,
+                hInst,
+                dwErr,
+                0,
+                wszMsgBuff,
+                512,
+                NULL);
+
+        // Free the library.
+        FreeLibrary(hInst);
+    }
+
+    // Display the error message, or generic text if not found.
+#ifdef _DEBUG
+    cerr << "Error value: " << dwErr << " Message: " << ((dwChars > 0) ? wszMsgBuff : "Error message not found.") << endl;
+#endif
+}
+
+class JavaVersion {
+public:
+    int v1;
+    int v2;
+    int v3;
+    std::wstring home;
+    std::wstring path;
+
+    JavaVersion(int pv1, int pv2, int pv3) {
+        v1 = pv1;
+        v2 = pv2;
+        v3 = pv3;
+    }
+
+    bool operator>(const JavaVersion &other) const {
+        if (v1 > other.v1)
+            return true;
+        if (v1 == other.v1) {
+            if (v2 > other.v2)
+                return true;
+            if (v2 == other.v2)
+                return v3 > other.v3;
+        }
+        return false;
+    }
+
+    bool operator>=(const JavaVersion &other) const {
+        if (v1 > other.v1)
+            return true;
+        if (v1 == other.v1) {
+            if (v2 > other.v2)
+                return true;
+            if (v2 == other.v2)
+                return v3 >= other.v3;
+        }
+        return false;
+    }
+
+    bool operator<(const JavaVersion &other) const {
+        if (v1 < other.v1)
+            return true;
+        if (v1 == other.v1) {
+            if (v2 < other.v2)
+                return true;
+            if (v2 == other.v2)
+                return v3 < other.v3;
+        }
+        return false;
+    }
+};
+
+class EnvironmentVariable {
+private:
+    std::wstring FValue;
+
+public:
+    EnvironmentVariable(std::wstring Name) {
+        wchar_t* value;
+        size_t requiredSize;
+
+        _wgetenv_s(&requiredSize, NULL, 0, Name.data());
+
+        if (requiredSize != 0) {
+            value = (wchar_t*)malloc(requiredSize * sizeof(wchar_t));
+            if (value)
+            {
+                // Get the value of the LIB environment variable.
+                _wgetenv_s(&requiredSize, value, requiredSize, Name.data());
+                FValue = value;
+            }
+        }
+    }
+
+    std::wstring get() {
+        return FValue;
+    }
+
+    bool exists() {
+        return !FValue.empty();
+    }
+};
+
+bool checkJavaHome(HKEY key, const char * sKey, const char * jv,
+        JavaVersion *version) {
+    char p[MAX_KEY_LENGTH];
+    HKEY hKey;
+    bool result = false;
+    int res;
+
+    strcpy_s(p, MAX_KEY_LENGTH, sKey);
+    strcat_s(p, MAX_KEY_LENGTH - strlen(p), "\\");
+    strcat_s(p, MAX_KEY_LENGTH - strlen(p), jv);
+
+    if (RegOpenKeyExA(key,
+            p,
+            0,
+            KEY_READ,
+            &hKey) == ERROR_SUCCESS
+            ) {
+        DWORD ot = REG_SZ;
+        DWORD size = 255;
+        wchar_t data[MAX_PATH] = { 0 };
+        if ((res = RegQueryValueEx(hKey, L"JavaHome", NULL, &ot,
+                (BYTE *)data, &size)) == ERROR_SUCCESS) {
+            version->home = data;
+            std::wstring ldata = std::wstring(data) + L"\\bin\\java.exe";
+            version->path = data;
+            result = GetFileAttributes(data) != 0xFFFFFFFF;
+        }
+        else {
+            PrintCSBackupAPIErrorMessage(res);
+            result = false;
+        }
+        RegCloseKey(hKey);
+    }
+    else {
+#ifdef _DEBUG
+        cerr << "Can not open registry key" << endl;
+#endif
+        result = false;
+    }
+
+    return result;
+}
+
+JavaVersion * parseName(const char * jName) {
+    string s(jName);
+
+    if (s.length() == 0) {
+        return NULL;
+    }
+
+    string n;
+    string::size_type pos;
+
+    pos = s.find_first_of(".");
+    if (pos != string::npos) {
+        n = s.substr(0, pos);
+        s = s.substr(pos + 1);
+    }
+    else {
+        n = s;
+        s = "";
+    }
+
+    int v1 = 0;
+
+    if (n.length() > 0) {
+        if (!from_string(v1, n))
+            return NULL;
+    }
+
+
+    pos = s.find_first_of(".");
+    if (pos != string::npos) {
+        n = s.substr(0, pos);
+        s = s.substr(pos + 1);
+    }
+    else {
+        n = s;
+        s = "";
+    }
+
+    int v2 = 0;
+
+    if (n.length() > 0) {
+        if (!from_string(v2, n))
+            return NULL;
+    }
+
+
+    size_t nn = s.length();
+    for (size_t i = 0; i < s.length(); i++) {
+        string c = s.substr(i, 1);
+        int tmp;
+        if (!from_string(tmp, c)) {
+            nn = i;
+            break;
+        }
+    }
+
+    n = s.substr(0, nn);
+    if (nn < s.length()) {
+        s = s.substr(nn + 1);
+    }
+    else s = "";
+
+    int v3 = 0;
+
+    if (n.length() > 0) {
+        if (!from_string(v3, n))
+            v3 = 0;
+    }
+
+    int v4 = 0;
+
+    // update version
+    if (s.length() > 0) {
+        nn = s.length();
+        for (size_t i = 0; i < s.length(); i++) {
+            string c = s.substr(i, 1);
+            int tmp;
+            if (!from_string(tmp, c)) {
+                nn = i;
+                break;
+            }
+        }
+
+        n = s.substr(0, nn);
+
+        if (n.length() > 0) {
+            if (!from_string(v4, n))
+                v4 = 0;
+        }
+    }
+
+    return new JavaVersion(v2, v3, v4);
+}
+
+JavaVersion * GetMaxVersion(HKEY key, const char * sKey) {
+    HKEY hKey;
+    JavaVersion * result = NULL;
+
+    if (RegOpenKeyExA(key,
+            sKey,
+            0,
+            KEY_READ,
+            &hKey) == ERROR_SUCCESS
+            ) {
+        DWORD retCode;
+        char achClass[MAX_PATH]; // buffer for class name
+        DWORD cchClassName = MAX_PATH; // size of class string
+
+
+        DWORD cchValue = MAX_VALUE_NAME;
+        DWORD cSubKeys = 0; // number of subkeys
+        DWORD cbMaxSubKey; // longest subkey size
+        DWORD cchMaxClass; // longest class string
+        DWORD cValues; // number of values for key
+        DWORD cchMaxValue; // longest value name
+        DWORD cbMaxValueData; // longest value data
+        DWORD cbSecurityDescriptor; // size of security descriptor
+        FILETIME ftLastWriteTime; // last write time
+
+        retCode = RegQueryInfoKeyA(
+                hKey, // key handle
+                achClass, // buffer for class name
+                &cchClassName, // size of class string
+                NULL, // reserved
+                &cSubKeys, // number of subkeys
+                &cbMaxSubKey, // longest subkey size
+                &cchMaxClass, // longest class string
+                &cValues, // number of values for this key
+                &cchMaxValue, // longest value name
+                &cbMaxValueData, // longest value data
+                &cbSecurityDescriptor, // security descriptor
+                &ftLastWriteTime); // last write time
+
+        if (cSubKeys) {
+            for (unsigned int i = 0; i < cSubKeys; i++) {
+                char achKey[MAX_KEY_LENGTH]; // buffer for subkey name
+                DWORD cbName = MAX_KEY_LENGTH;
+                retCode = RegEnumKeyExA(hKey, i,
+                        achKey,
+                        &cbName,
+                        NULL,
+                        NULL,
+                        NULL,
+                        &ftLastWriteTime);
+
+                if (retCode == ERROR_SUCCESS) {
+#ifdef _DEBUG
+                    cout << achKey << endl;
+#endif
+                    JavaVersion * nv = parseName(achKey);
+
+                    bool isHome = checkJavaHome(key, sKey, achKey, nv);
+#ifdef _DEBUG
+                    wcout << nv->home << " " << isHome << endl;
+#endif
+
+                    if (isHome)
+                    if (result == NULL) {
+                        result = nv;
+#ifdef _DEBUG
+                        cout << "NEW" << endl;
+#endif
+                    }
+                    else {
+                        if (nv != NULL) {
+                            if (*nv > *result) {
+#ifdef _DEBUG
+                                cout << "REPLACE" << endl;
+#endif
+                                delete result;
+                                result = nv;
+                            }
+                            else {
+#ifdef _DEBUG
+                                cout << "NO" << endl;
+#endif
+                                delete nv;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        RegCloseKey(hKey);
+    }
+
+    return result;
+}
+
+int fileExists(const std::wstring& path) {
+    WIN32_FIND_DATA ffd;
+    HANDLE hFind;
+
+    hFind = FindFirstFile(path.data(), &ffd);
+    if (hFind == INVALID_HANDLE_VALUE)
+        return FALSE;
+
+    FindClose(hFind);
+    return (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0;
+}
+
+bool hasEnding(std::wstring const &fullString, std::wstring const &ending) {
+    if (fullString.length() >= ending.length()) {
+        return (0 == fullString.compare(fullString.length() - ending.length(), 
+                                                        ending.length(), ending));
+    }
+    else {
+        return false;
+    }
+}
+
+std::wstring ExtractFilePath(std::wstring Path) {
+    std::wstring result;
+    size_t slash = Path.find_last_of(TRAILING_PATHSEPARATOR);
+    if (slash != std::wstring::npos)
+        result = Path.substr(0, slash);
+    return result;
+}
+
+std::wstring GetCurrentExecutableName() {
+    TCHAR FileName[MAX_PATH];
+    GetModuleFileName(NULL, FileName, MAX_PATH);
+    return FileName;
+}
+
+int wmain(int argc, wchar_t* argv[]) {
+    wchar_t buf[MAX_PATH];
+    GetModuleFileName(NULL, buf, MAX_PATH);
+
+    std::wstring javacmd;
+    std::wstring javahome;
+
+    std::wstring exe = GetCurrentExecutableName();
+
+    if (exe.length() <= 0) {
+        JavaVersion * jv2 = GetMaxVersion(HKEY_LOCAL_MACHINE,
+                "SOFTWARE\\JavaSoft\\JDK");
+        if (jv2 != NULL) {
+            javahome = jv2->home;
+            javacmd = javahome + L"\\bin\\" + L"\\java.exe";
+        }
+        else {
+            javacmd = L"java.exe";
+        }
+    } else {
+        javacmd = ExtractFilePath(exe) + L"\\java.exe";
+    }
+
+    std::wstring cmd = L"\"" + javacmd + L"\"";
+    if (javahome.length() > 0) {
+        SetEnvironmentVariable(L"JAVA_HOME", javahome.c_str());
+    }
+
+    std::wstring memory = L"-Xmx512M";
+    std::wstring debug = L"";
+    std::wstring args = L"";
+
+    for (int i = 1; i < argc; i++) {
+        std::wstring argument = argv[i];
+        std::wstring debug_arg = L"-J-Xdebug:";
+        std::wstring icon_swap_arg = L"--icon-swap";
+        std::wstring version_swap_arg = L"--version-swap";
+
+        if (argument.find(L"-J-Xmx", 0) == 0) {
+            memory = argument.substr(2, argument.length() - 2);
+        }
+        else if (argument.find(debug_arg, 0) == 0) {
+            std::wstring address = argument.substr(debug_arg.length(),
+                                argument.length() - debug_arg.length());
+            debug = L"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + address;
+        }
+        else if (argument.find(icon_swap_arg, 0) == 0) {
+            if (argc != 4) {
+                fwprintf(stderr, TEXT("Usage: jpackager.exe --icon-swap [Icon File Name] [Executable File Name]\n"));
+                return 1;
+            }
+
+            wprintf(L"Icon File Name: %s\n", argv[i + 1]);
+            wprintf(L"Executable File Name: %s\n", argv[i + 2]);
+
+            if (ChangeIcon(argv[i + 1], argv[i + 2]) == true) {
+                return 0;
+            }
+            else {
+                fwprintf(stderr, TEXT("failed\n"));
+                return 1;
+            }
+        }
+        else if (argument.find(version_swap_arg, 0) == 0) {
+            if (argc != 4) {
+                fwprintf(stderr, TEXT("Usage: jpackager.exe --version-swap [Property File Name] [Executable File Name]\n"));
+                return 1;
+            }
+
+            fwprintf(stdout, TEXT("Resource File Name: %s\n"), argv[i + 1]);
+            fwprintf(stdout, TEXT("Executable File Name: %s\n"), argv[i + 2]);
+
+            VersionInfoSwap vs(argv[i + 1], argv[i + 2]);
+
+            if (vs.PatchExecutable()) {
+                return 0;
+            }
+            else {
+                fwprintf(stderr, TEXT("failed\n"));
+                return 1;
+            }
+        }
+        else {
+            args = args + L" \"" + argv[i] + L"\"";
+        }
+    }
+
+
+    cmd += debug + L" " + memory +
+                L" -m jdk.packager/jdk.packager.main.Main" +
+                L" " + args;
+
+#ifdef _DEBUG
+    fwprintf (stdout, TEXT("%s"), cmd.c_str());
+#endif
+
+    STARTUPINFO start;
+    PROCESS_INFORMATION pi;
+    memset(&start, 0, sizeof (start));
+    start.cb = sizeof(start);
+
+    if (!CreateProcess(NULL, (wchar_t *) cmd.data(),
+            NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &start, &pi)) {
+#ifdef _DEBUG
+        fprintf(stderr, "Cannot start java.exe");
+#endif
+        return EXIT_FAILURE;
+    }
+
+    WaitForSingleObject(pi.hProcess, INFINITE);
+    unsigned long exitCode;
+    GetExitCodeProcess(pi.hProcess, &exitCode);
+
+    CloseHandle(pi.hProcess);
+    CloseHandle(pi.hThread);
+
+    return exitCode;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/windows/native/jpackager/jpackager.manifest	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,34 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+ <assemblyIdentity version="JPACKAGER"
+         processorArchitecture="X86"
+         name="jpackager.exe"
+         type="win32"/>
+  <description>Java Packager</description>
+  <!-- Identify the application security requirements. -->
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+    <security>
+      <requestedPrivileges>
+        <requestedExecutionLevel
+          level="asInvoker"
+          uiAccess="false"/>
+        </requestedPrivileges>
+       </security>
+  </trustInfo>
+
+  <!-- Indicate JDK is high-dpi aware. -->
+  <asmv3:application>
+    <asmv3:windowsSettings
+           xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+       <dpiAware>true</dpiAware>
+    </asmv3:windowsSettings>
+  </asmv3:application>
+
+  <!-- Indicate this JDK version is Windows 7 compatible -->
+   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+      <application>
+        <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+        <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
+      </application>
+    </compatibility>
+</assembly>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/windows/native/jpackager/jpackager.rc	Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "windows.h"
+
+// Need 2 defines so macro argument to XSTR will get expanded before quoting.
+#define XSTR(x) STR(x)
+#define STR(x)  #x
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION    JDK_FVER
+ PRODUCTVERSION JDK_FVER
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ // FILEOS 0x4 is Win32, 0x40004 is Win32 NT only
+ FILEOS 0x4L
+ // FILETYPE should be 0x1 for .exe and 0x2 for .dll
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "000004b0"
+        BEGIN
+            VALUE "CompanyName",      XSTR(JDK_COMPANY)        "\0"
+            VALUE "FileDescription",  XSTR(JDK_COMPONENT)      "\0"
+            VALUE "FileVersion",      XSTR(JDK_VER)            "\0"
+            VALUE "Full Version",     XSTR(JDK_VERSION_STRING) "\0"
+            VALUE "InternalName",     XSTR(JDK_INTERNAL_NAME)  "\0"
+            VALUE "LegalCopyright",   XSTR(JDK_COPYRIGHT)      "\0"
+            VALUE "OriginalFilename", XSTR(JDK_FNAME)          "\0"
+            VALUE "ProductName",      XSTR(JDK_NAME)           "\0"
+            VALUE "ProductVersion",   XSTR(JDK_VER)            "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+
+#define MANIFEST_RESOURCE_ID 1
+
+// Manifest
+//
+
+MANIFEST_RESOURCE_ID RT_MANIFEST "jpackager.manifest"
+
--- a/src/jdk.packager/windows/native/launcher/WinLauncher.cpp	Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/native/launcher/WinLauncher.cpp	Wed Oct 17 13:50:11 2018 -0400
@@ -68,17 +68,20 @@
 
     if (library == NULL) {
         std::wstring title = GetTitle();
-        std::wstring description = std::wstring(PACKAGER_LIBRARY) + std::wstring(TEXT(" not found."));
-        MessageBox(NULL, description.data(), title.data(), MB_ICONERROR | MB_OK);
+        std::wstring description = std::wstring(PACKAGER_LIBRARY)
+                + std::wstring(TEXT(" not found."));
+        MessageBox(NULL, description.data(),
+                title.data(), MB_ICONERROR | MB_OK);
     }
     else {
-        start_launcher start = (start_launcher)GetProcAddress(library, "start_launcher");
-        stop_launcher stop = (stop_launcher)GetProcAddress(library, "stop_launcher");
+        start_launcher start =
+                (start_launcher)GetProcAddress(library, "start_launcher");
+        stop_launcher stop =
+                (stop_launcher)GetProcAddress(library, "stop_launcher");
 
-        if (start(argc, argv) == true) {
-            result = 0;
-
-            if (stop != NULL) {
+        if (start != NULL && stop != NULL) {
+            if (start(argc, argv) == true) {
+                result = 0;
                 stop();
             }
         }