src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WinMsiBundler.java
branchJDK-8200758-branch
changeset 57283 0b0be19f79e4
parent 57256 d7c27451f759
child 57390 1cb722a11ead
--- a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WinMsiBundler.java	Tue Mar 26 08:54:43 2019 -0400
+++ b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WinMsiBundler.java	Tue Mar 26 08:57:28 2019 -0400
@@ -30,7 +30,6 @@
 import java.nio.file.Files;
 import java.text.MessageFormat;
 import java.util.*;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import static jdk.jpackage.internal.WindowsBundlerParam.*;
@@ -965,8 +964,17 @@
             out.println(
                     "  <Directory Name=\"AppData\" Id=\"LocalAppDataFolder\">");
         }
+
+        // We should get valid folder or subfolders
+        String installDir = WINDOWS_INSTALL_DIR.fetchFrom(params);
+        String [] installDirs = installDir.split(Pattern.quote("\\"));
+        for (int i = 0; i < (installDirs.length - 1); i++)  {
+            out.println("   <Directory Id=\"SUBDIR" + i + "\" Name=\""
+                + installDirs[i] + "\">");
+        }
+
         out.println("   <Directory Id=\"APPLICATIONFOLDER\" Name=\""
-                + APP_NAME.fetchFrom(params) + "\">");
+                + installDirs[installDirs.length - 1] + "\">");
 
         // dynamic part
         id = 0;
@@ -974,7 +982,9 @@
         walkFileTree(params, WIN_APP_IMAGE.fetchFrom(params), out, "    ");
 
         // closing
-        out.println("   </Directory>");
+        for (int i = 0; i < installDirs.length; i++)  {
+            out.println("   </Directory>");
+        }
         out.println("  </Directory>");
 
         // for shortcuts