< prev index next >

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

Print this page




 901         File f = new File(
 902                 CONFIG_ROOT.fetchFrom(params), MSI_PROJECT_CONTENT_FILE);
 903 
 904         try (PrintStream out = new PrintStream(f)) {
 905 
 906             // opening
 907             out.println("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
 908             out.println("<Include>");
 909 
 910             out.println(" <Directory Id=\"TARGETDIR\" Name=\"SourceDir\">");
 911             if (MSI_SYSTEM_WIDE.fetchFrom(params)) {
 912                 // install to programfiles
 913                 out.println("  <Directory Id=\"ProgramFiles64Folder\" "
 914                             + "Name=\"PFiles\">");
 915             } else {
 916                 // install to user folder
 917                 out.println(
 918                     "  <Directory Name=\"AppData\" Id=\"LocalAppDataFolder\">");
 919             }
 920 




 921             // We should get valid folder or subfolders
 922             String installDir = WINDOWS_INSTALL_DIR.fetchFrom(params);
 923             String [] installDirs = installDir.split(Pattern.quote("\\"));
 924             for (int i = 0; i < (installDirs.length - 1); i++)  {
 925                 out.println("   <Directory Id=\"SUBDIR" + i + "\" Name=\""
 926                     + installDirs[i] + "\">");






















 927             }
 928 
 929             out.println("   <Directory Id=\"APPLICATIONFOLDER\" Name=\""
 930                     + installDirs[installDirs.length - 1] + "\">");
 931 
 932             // dynamic part
 933             id = 0;
 934             compId = 0; // reset counters
 935             walkFileTree(params, WIN_APP_IMAGE.fetchFrom(params), out, "    ");
 936 
 937             // closing
 938             for (int i = 0; i < installDirs.length; i++)  {
 939                 out.println("   </Directory>");
 940             }
 941             out.println("  </Directory>");
 942 
 943             // for shortcuts
 944             if (SHORTCUT_HINT.fetchFrom(params)) {
 945                 out.println("  <Directory Id=\"DesktopFolder\" />");
 946             }
 947             if (MENU_HINT.fetchFrom(params)) {
 948                 out.println("  <Directory Id=\"ProgramMenuFolder\">");
 949                 out.println("    <Directory Id=\"ProgramMenuDir\" Name=\""
 950                         + MENU_GROUP.fetchFrom(params) + "\">");
 951                 out.println("      <Component Id=\"comp" + (compId++) + "\""
 952                         + " Guid=\"" + UUID.randomUUID().toString() + "\""
 953                         + " Win64=\"yes\""
 954                         + ">");




 901         File f = new File(
 902                 CONFIG_ROOT.fetchFrom(params), MSI_PROJECT_CONTENT_FILE);
 903 
 904         try (PrintStream out = new PrintStream(f)) {
 905 
 906             // opening
 907             out.println("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
 908             out.println("<Include>");
 909 
 910             out.println(" <Directory Id=\"TARGETDIR\" Name=\"SourceDir\">");
 911             if (MSI_SYSTEM_WIDE.fetchFrom(params)) {
 912                 // install to programfiles
 913                 out.println("  <Directory Id=\"ProgramFiles64Folder\" "
 914                             + "Name=\"PFiles\">");
 915             } else {
 916                 // install to user folder
 917                 out.println(
 918                     "  <Directory Name=\"AppData\" Id=\"LocalAppDataFolder\">");
 919             }
 920 
 921             // reset counters
 922             compId = 0;
 923             id = 0;
 924 
 925             // We should get valid folder or subfolders
 926             String installDir = WINDOWS_INSTALL_DIR.fetchFrom(params);
 927             String [] installDirs = installDir.split(Pattern.quote("\\"));
 928             for (int i = 0; i < (installDirs.length - 1); i++)  {
 929                 out.println("   <Directory Id=\"SUBDIR" + i + "\" Name=\""
 930                     + installDirs[i] + "\">");
 931                 if (!MSI_SYSTEM_WIDE.fetchFrom(params)) {
 932                     out.println("   <Component Id=\"comp" + (compId++)
 933                         + "\" DiskId=\"1\""
 934                         + " Guid=\"" + UUID.randomUUID().toString() + "\""
 935                         + " Win64=\"yes\""
 936                         + ">");
 937                     out.println("<CreateFolder/>");
 938                     // has to be under HKCU to make WiX happy
 939                     out.println("    <RegistryKey Root=\"HKCU\" "
 940                         + " Key=\"Software\\" + VENDOR.fetchFrom(params) + "\\"
 941                         + APP_NAME.fetchFrom(params) + "\""
 942                         + (CAN_USE_WIX36.fetchFrom(params) ?
 943                         ">" : " Action=\"createAndRemoveOnUninstall\">"));
 944                     out.println("     <RegistryValue Name=\"Version\" Value=\""
 945                         + VERSION.fetchFrom(params)
 946                         + "\" Type=\"string\" KeyPath=\"yes\"/>");
 947                     out.println("   </RegistryKey>");
 948                     out.println("   <RemoveFolder Id=\"RemoveDir"
 949                         + (id++) + "\" Directory=\"SUBDIR" + i
 950                         + "\" On=\"uninstall\" />");
 951                     out.println("</Component>");
 952                 }
 953             }
 954 
 955             out.println("   <Directory Id=\"APPLICATIONFOLDER\" Name=\""
 956                     + installDirs[installDirs.length - 1] + "\">");
 957 
 958             // dynamic part


 959             walkFileTree(params, WIN_APP_IMAGE.fetchFrom(params), out, "    ");
 960 
 961             // closing
 962             for (int i = 0; i < installDirs.length; i++)  {
 963                 out.println("   </Directory>");
 964             }
 965             out.println("  </Directory>");
 966 
 967             // for shortcuts
 968             if (SHORTCUT_HINT.fetchFrom(params)) {
 969                 out.println("  <Directory Id=\"DesktopFolder\" />");
 970             }
 971             if (MENU_HINT.fetchFrom(params)) {
 972                 out.println("  <Directory Id=\"ProgramMenuFolder\">");
 973                 out.println("    <Directory Id=\"ProgramMenuDir\" Name=\""
 974                         + MENU_GROUP.fetchFrom(params) + "\">");
 975                 out.println("      <Component Id=\"comp" + (compId++) + "\""
 976                         + " Guid=\"" + UUID.randomUUID().toString() + "\""
 977                         + " Win64=\"yes\""
 978                         + ">");


< prev index next >