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