< prev index next >
src/jdk.jpackage/windows/classes/jdk/jpackage/internal/WinMsiBundler.java
Print this page
*** 28,38 ****
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 {
--- 28,37 ----
*** 963,982 ****
} else {
// install to user folder
out.println(
" <Directory Name=\"AppData\" Id=\"LocalAppDataFolder\">");
}
out.println(" <Directory Id=\"APPLICATIONFOLDER\" Name=\""
! + APP_NAME.fetchFrom(params) + "\">");
// dynamic part
id = 0;
compId = 0; // reset counters
walkFileTree(params, WIN_APP_IMAGE.fetchFrom(params), out, " ");
// closing
out.println(" </Directory>");
out.println(" </Directory>");
// for shortcuts
if (SHORTCUT_HINT.fetchFrom(params)) {
out.println(" <Directory Id=\"DesktopFolder\" />");
--- 962,992 ----
} 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=\""
! + 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 >