< 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 >