< prev index next >

src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WindowsAppImageBuilder.java

Print this page

        

@@ -25,11 +25,10 @@
 
 package jdk.jpackage.internal;
 
 import java.io.File;
 import java.io.FileOutputStream;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.UncheckedIOException;

@@ -48,16 +47,19 @@
 import java.util.ResourceBundle;
 import java.util.Set;
 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");
 
     private final static String LIBRARY_NAME = "applauncher.dll";
     private final static String REDIST_MSVCR = "vcruntimeVS_VER.dll";

@@ -386,44 +388,36 @@
         File launcher = executableFile.toFile();
         launcher.setWritable(true, true);
 
         // 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();
             }
         }
 
         Files.copy(iconTarget.toPath(),

@@ -446,6 +440,10 @@
                 copyEntry(appDir, srcdir, fname);
             }
         }
     }
 
+    private static native int iconSwap(String iconTarget, String launcher);
+
+    private static native int versionSwap(String executableProperties, String launcher);
+
 }
< prev index next >