modules/fxpackager/src/main/java/com/oracle/tools/packager/windows/WinMsiBundler.java

Print this page

        

@@ -609,10 +609,11 @@
             data.put("PLATFORM", "x86");
             data.put("WIN64", "no");
         }
 
         data.put("UI_BLOCK", getUIBlock(params));
+        data.put("APP_CDS_BLOCK", getAppCDSBlock(params));
 
         List<Map<String, ? super Object>> secondaryLaunchers = SECONDARY_LAUNCHERS.fetchFrom(params);
 
         StringBuilder secondaryLauncherIcons = new StringBuilder();
         for (int i = 0; i < secondaryLaunchers.size(); i++) {

@@ -684,10 +685,27 @@
         }
 
         return uiBlock;
     }
     
+    private String getAppCDSBlock(Map<String, ? super Object> params) {
+        String cdsBlock = "";
+        if (UNLOCK_COMMERCIAL_FEATURES.fetchFrom(params) && ENABLE_APP_CDS.fetchFrom(params)) {
+            cdsBlock = 
+                    "     <CustomAction Id=\"CACHE_CDS\"\n" +
+                    "          Directory=\"APPLICATIONFOLDER\"\n" +
+                    "          ExeCommand=\"[APPLICATIONFOLDER]" + WinAppBundler.getLauncherName(params) +" -Xappcds:generatecache\"\n" +
+                    "          Execute=\"commit\"\n" +
+                    "          Return=\"check\"/>\n" +
+                    "\n" +
+                    "     <InstallExecuteSequence>\n" +
+                    "         <Custom Action=\"CACHE_CDS\" Before=\"InstallFinalize\" />\n" +
+                    "     </InstallExecuteSequence>";
+        }
+        return cdsBlock;
+    }
+    
     private void walkFileTree(Map<String, ? super Object> params, File root, PrintStream out, String prefix) {
         List<File> dirs = new ArrayList<>();
         List<File> files = new ArrayList<>();
 
         if (!root.isDirectory()) {