src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WindowsAppImageBuilder.java
branchJDK-8200758-branch
changeset 57151 38d0b67617e3
parent 57119 b3dda8d77d8a
child 57215 62db1c695d13
--- a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WindowsAppImageBuilder.java	Wed Feb 06 09:00:28 2019 -0500
+++ b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WindowsAppImageBuilder.java	Wed Feb 06 09:10:12 2019 -0500
@@ -27,7 +27,6 @@
 
 import java.io.File;
 import java.io.FileOutputStream;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -50,12 +49,15 @@
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.regex.Pattern;
 import java.util.stream.Stream;
-import jdk.jpackage.internal.Arguments;
 
 import static jdk.jpackage.internal.StandardBundlerParam.*;
 
 public class WindowsAppImageBuilder extends AbstractAppImageBuilder {
 
+    static {
+        System.loadLibrary("jpackage");
+    }
+
     private static final ResourceBundle I18N = ResourceBundle.getBundle(
             "jdk.jpackage.internal.resources.WinResources");
 
@@ -388,40 +390,32 @@
 
         // Update branding of EXE file
         if (REBRAND_EXECUTABLE.fetchFrom(p)) {
-            File tool = new File(
-                System.getProperty("java.home") + "\\bin\\jpackage.exe");
-
-            // Run tool on launcher file to change the icon and the metadata.
             try {
-                if (WindowsDefender.isThereAPotentialWindowsDefenderIssue()) {
+                String tempDirectory = WindowsDefender.getUserTempDirectory();
+                if (Arguments.CLIOptions.context().userProvidedBuildRoot) {
+                    tempDirectory = BUILD_ROOT.fetchFrom(p).getAbsolutePath();
+                }
+                if (WindowsDefender.isThereAPotentialWindowsDefenderIssue(
+                        tempDirectory)) {
                     Log.error(MessageFormat.format(I18N.getString(
                             "message.potential.windows.defender.issue"),
-                            WindowsDefender.getUserTempDirectory()));
+                            tempDirectory));
                 }
 
                 launcher.setWritable(true);
 
                 if (iconTarget.exists()) {
-                    ProcessBuilder pb = new ProcessBuilder(
-                            tool.getAbsolutePath(),
-                            "--icon-swap",
-                            iconTarget.getAbsolutePath(),
+                    iconSwap(iconTarget.getAbsolutePath(),
                             launcher.getAbsolutePath());
-                    IOUtils.exec(pb, false);
                 }
 
                 File executableProperties = getConfig_ExecutableProperties(p);
 
                 if (executableProperties.exists()) {
-                    ProcessBuilder pb = new ProcessBuilder(
-                            tool.getAbsolutePath(),
-                            "--version-swap",
-                            executableProperties.getAbsolutePath(),
+                    versionSwap(executableProperties.getAbsolutePath(),
                             launcher.getAbsolutePath());
-                    IOUtils.exec(pb, false);
                 }
-            }
-            finally {
+            } finally {
                 executableFile.toFile().setReadOnly();
             }
         }
@@ -448,4 +442,8 @@
         }
     }
 
+    private static native int iconSwap(String iconTarget, String launcher);
+
+    private static native int versionSwap(String executableProperties, String launcher);
+
 }