< prev index next >

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

Print this page

        

@@ -28,11 +28,10 @@
 import java.io.*;
 import java.nio.charset.Charset;
 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.*;
 
 public class WinMsiBundler  extends AbstractBundler {

@@ -963,20 +962,31 @@
         } else {
             // install to user folder
             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;
         compId = 0; // reset counters
         walkFileTree(params, WIN_APP_IMAGE.fetchFrom(params), out, "    ");
 
         // closing
+        for (int i = 0; i < installDirs.length; i++)  {
         out.println("   </Directory>");
+        }
         out.println("  </Directory>");
 
         // for shortcuts
         if (SHORTCUT_HINT.fetchFrom(params)) {
             out.println("  <Directory Id=\"DesktopFolder\" />");
< prev index next >