< prev index next >

src/jdk.incubator.jpackage/windows/native/libjpackage/jpackage.cpp

Print this page

        

@@ -26,10 +26,12 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string>
 #include <windows.h>
 
+#include "ResourceEditor.h"
+#include "WinErrorHandling.h"
 #include "IconSwap.h"
 #include "VersionInfoSwap.h"
 #include "Utils.h"
 
 using namespace std;

@@ -37,15 +39,16 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
 
     /*
-     * Class:     jdk_jpackage_internal_WindowsAppImageBuilder
+     * Class:     jdk_incubator_jpackage_internal_WindowsAppImageBuilder
      * Method:    iconSwap
      * Signature: (Ljava/lang/String;Ljava/lang/String;)I
      */
-    JNIEXPORT jint JNICALL Java_jdk_jpackage_internal_WindowsAppImageBuilder_iconSwap(
+    JNIEXPORT jint JNICALL
+            Java_jdk_incubator_jpackage_internal_WindowsAppImageBuilder_iconSwap(
             JNIEnv *pEnv, jclass c, jstring jIconTarget, jstring jLauncher) {
         wstring iconTarget = GetStringFromJString(pEnv, jIconTarget);
         wstring launcher = GetStringFromJString(pEnv, jLauncher);
 
         if (ChangeIcon(iconTarget, launcher)) {

@@ -54,29 +57,58 @@
 
         return 1;
     }
 
     /*
-     * Class:     jdk_jpackage_internal_WindowsAppImageBuilder
+     * Class:     jdk_incubator_jpackage_internal_WindowsAppImageBuilder
      * Method:    versionSwap
      * Signature: (Ljava/lang/String;Ljava/lang/String;)I
      */
-    JNIEXPORT jint JNICALL Java_jdk_jpackage_internal_WindowsAppImageBuilder_versionSwap(
-            JNIEnv *pEnv, jclass c, jstring jExecutableProperties, jstring jLauncher) {
+    JNIEXPORT jint JNICALL
+            Java_jdk_incubator_jpackage_internal_WindowsAppImageBuilder_versionSwap(
+            JNIEnv *pEnv, jclass c, jstring jExecutableProperties,
+            jstring jLauncher) {
 
-        wstring executableProperties = GetStringFromJString(pEnv, jExecutableProperties);
+        wstring executableProperties = GetStringFromJString(pEnv,
+                jExecutableProperties);
         wstring launcher = GetStringFromJString(pEnv, jLauncher);
 
         VersionInfoSwap vs(executableProperties, launcher);
         if (vs.PatchExecutable()) {
             return 0;
         }
 
         return 1;
     }
 
-    BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
+    /*
+     * Class:     jdk_incubator_jpackage_internal_WinExeBundler
+     * Method:    embedMSI
+     * Signature: (Ljava/lang/String;Ljava/lang/String;)I
+     */
+    JNIEXPORT jint JNICALL Java_jdk_incubator_jpackage_internal_WinExeBundler_embedMSI(
+            JNIEnv *pEnv, jclass c, jstring jexePath, jstring jmsiPath) {
+
+        const wstring exePath = GetStringFromJString(pEnv, jexePath);
+        const wstring msiPath = GetStringFromJString(pEnv, jmsiPath);
+
+        JP_TRY;
+
+        ResourceEditor()
+            .id(L"msi")
+            .type(RT_RCDATA)
+            .apply(ResourceEditor::FileLock(exePath), msiPath);
+
+        return 0;
+
+        JP_CATCH_ALL;
+
+        return 1;
+    }
+
+    BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
+            LPVOID lpvReserved) {
         return TRUE;
     }
 
 #ifdef __cplusplus
 }
< prev index next >