diff --git a/README.md b/README.md index 8e1c6d4..37db08c 100755 --- a/README.md +++ b/README.md @@ -162,4 +162,19 @@ specified host and port. Note that the base 32 I2P destination address determini ## Watch the I2P log for messages -`tail -f dist/linux/router/i2p.config/wrapper.log` \ No newline at end of file +`tail -f dist/linux/router/i2p.config/wrapper.log` + + +## Note on bundled windows wrapper.exe executable + +There is a bundled resources/wrapper.exe file in the source tree. This allows the windows distributable to be built +even on a non-windows platform. + +This file can be deterministically recreated by +downloading javapackager from http://download2.gluonhq.com/jpackager/11/jdk.packager-windows.zip, unzipping it, +unzipping the jar file within that, and obtaining the jdk/packager/internal/resources/windows/papplauncher.exe file. + +Then, on Windows, download Resource Hacker version 5.1.7 from http://www.angusj.com/resourcehacker/ and use it to add the +resources/icons.ico file to the papplauncher.exe file. Finally, verify that the resulting file is identical to the bundled resources/wrapper.exe file. + +The sha256 checksum of the file should be `50c9286b9da7a91b8715de3cbcd141ec44eb199642562f43ce82351609115e06` \ No newline at end of file diff --git a/bin/build-launcher.sh b/bin/build-launcher.sh index e66d2bf..bbef205 100755 --- a/bin/build-launcher.sh +++ b/bin/build-launcher.sh @@ -48,16 +48,13 @@ for i in linux mac linux-gui mac-gui; do cp "$basedir/resources/launch.sh" "$basedir/dist/$i/router/bin/" cp "$basedir/resources/tunnel-control.sh" "$basedir/dist/$i/router/bin/" done -for i in win win-gui; do +for i in win; do cp "$basedir/resources/launch.bat" "$basedir/dist/$i/router/bin/" done for i in linux-gui mac-gui; do cp "$basedir/resources/launch-gui.sh" "$basedir/dist/$i/router/bin/" done -for i in win-gui; do - cp "$basedir/resources/launch-gui.bat" "$basedir/dist/$i/router/bin/" -done for i in linux mac win linux-gui mac-gui win-gui; do cp -r "$basedir/import/i2p.base" "$basedir/dist/$i/router/"; done @@ -74,18 +71,49 @@ for i in linux mac win; do done done -# build map app structure +# build mac gui app structure mv "$basedir/dist/mac-gui/router" "$basedir/dist/mac-gui/router-tmp" mkdir -p "$basedir/dist/mac-gui/router/i2p-zero.app/Contents/MacOS/" cp -R "$basedir/resources/i2p-zero.app" "$basedir/dist/mac-gui/router/" mv "$basedir/dist/mac-gui/router-tmp"/* "$basedir/dist/mac-gui/router/i2p-zero.app/Contents/MacOS/" rm -fr "$basedir/dist/mac-gui/router-tmp" -# specify .desktop file so linux-gui can be launched via double-click -cp "$basedir/resources/i2p-zero.desktop" "$basedir/dist/linux-gui/router/" +# build linux gui app structure +mv "$basedir/dist/linux-gui/router" "$basedir/dist/linux-gui/router-tmp" +mkdir -p "$basedir/dist/linux-gui/router/app" +mkdir -p "$basedir/dist/linux-gui/router/resources" + +mv "$basedir/dist/linux-gui/router-tmp" "$basedir/dist/linux-gui/runtime" + +cp "$basedir/import/javapackager/linux/jdk/packager/internal/resources/linux/papplauncher" "$basedir/dist/linux-gui/router/i2p-zero" +cp "$basedir/import/javapackager/linux/jdk/packager/internal/resources/linux/libpackager.so" "$basedir/dist/linux-gui/router/" +chmod +x "$basedir/dist/linux-gui/router/i2p-zero" + +cp "$basedir/resources/i2p-zero.linux.cfg" "$basedir/dist/linux-gui/router/app/i2p-zero.cfg" +cp "$basedir/org.getmonero.i2p.zero.gui/src/org/getmonero/i2p/zero/gui/icon.png" "$basedir/dist/linux-gui/router/resources/i2p-zero.png" + + +# build win gui app structure +mv "$basedir/dist/win-gui/router" "$basedir/dist/win-gui/router-tmp" +mkdir -p "$basedir/dist/win-gui/router/app" + +mv "$basedir/dist/win-gui/router-tmp" "$basedir/dist/win-gui/runtime" + +cp "$basedir/resources/wrapper.exe" "$basedir/dist/win-gui/router/i2p-zero.exe" + +cp "$basedir/import/javapackager/win/jdk/packager/internal/resources/windows/packager.dll" "$basedir/dist/win-gui/router/" +for i in msvcp140.dll vcruntime140.dll; do + cp "$basedir/dist/win-gui/runtime/bin/$i" "$basedir/dist/win-gui/router/" +done + +cp "$basedir/resources/i2p-zero.win.cfg" "$basedir/dist/win-gui/router/app/i2p-zero.cfg" + + +# show distribution sizes du -sk dist/* | awk '{printf "%.1f MB %s\n",$1/1024,$2}' + echo "*** Done ***" os_name=`uname -s` if [ $os_name = Darwin ]; then diff --git a/bin/import-packages.sh b/bin/import-packages.sh index 9c8e843..8e0a775 100755 --- a/bin/import-packages.sh +++ b/bin/import-packages.sh @@ -74,3 +74,16 @@ if [ ! -d "$basedir/import/javafx-jmods" ]; then unzip javafx-jmods/win/$JAVAFX_JMODS_DOWNLOAD_FILENAME_WIN -d javafx-jmods/win/ fi +if [ ! -d "$basedir/import/javapackager" ]; then + mkdir -p javapackager + mkdir -p javapackager/linux javapackager/win + wget --directory-prefix=javafx-jmods/linux $JPACKAGER_DOWNLOAD_URL_LINUX + wget --directory-prefix=javafx-jmods/win $JPACKAGER_DOWNLOAD_URL_WIN + + unzip javapackager/linux/$JPACKAGER_DOWNLOAD_FILENAME_LINUX -d javapackager/linux/ + unzip javapackager/win/$JPACKAGER_DOWNLOAD_FILENAME_WIN -d javapackager/win/ + + unzip javapackager/linux/jdk.packager.jar + unzip javapackager/win/jdk.packager.jar +fi + diff --git a/bin/java-config.sh b/bin/java-config.sh index 9bc2b8d..64bb247 100644 --- a/bin/java-config.sh +++ b/bin/java-config.sh @@ -10,15 +10,15 @@ export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 JDK_DOWNLOAD_FILENAME_LINUX=OpenJDK11U-jdk_x64_linux_hotspot_11.0.1_13.tar.gz JDK_DOWNLOAD_FILENAME_MAC=OpenJDK11U-jdk_x64_mac_hotspot_11.0.1_13.tar.gz -JDK_DOWNLOAD_FILENAME_WIN=OpenJDK11U-jdk_x64_windows_hotspot_11.0.1_13.zip +JDK_DOWNLOAD_FILENAME_WIN=openjdk-11.0.2_windows-x64_bin.zip JDK_DOWNLOAD_URL_LINUX=https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.1%2B13/OpenJDK11U-jdk_x64_linux_hotspot_11.0.1_13.tar.gz JDK_DOWNLOAD_URL_MAC=https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.1%2B13/OpenJDK11U-jdk_x64_mac_hotspot_11.0.1_13.tar.gz -JDK_DOWNLOAD_URL_WIN=https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.1%2B13/OpenJDK11U-jdk_x64_windows_hotspot_11.0.1_13.zip +JDK_DOWNLOAD_URL_WIN=https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_windows-x64_bin.zip JAVA_HOME_LINUX=$basedir/import/jdks/linux/jdk-11.0.1+13 JAVA_HOME_MAC=$basedir/import/jdks/mac/jdk-11.0.1+13/Contents/Home -JAVA_HOME_WIN=$basedir/import/jdks/win/jdk-11.0.1+13 +JAVA_HOME_WIN=$basedir/import/jdks/win/jdk-11.0.2 JAVAFX_VERSION=11.0.2 JAVAFX_SDK_DOWNLOAD_URL_LINUX=https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/openjfx-${JAVAFX_VERSION}_linux-x64_bin-sdk.zip @@ -33,6 +33,13 @@ JAVAFX_JMODS_DOWNLOAD_FILENAME_LINUX=openjfx-${JAVAFX_VERSION}_linux-x64_bin-jmo JAVAFX_JMODS_DOWNLOAD_FILENAME_MAC=openjfx-${JAVAFX_VERSION}_osx-x64_bin-jmods.zip JAVAFX_JMODS_DOWNLOAD_FILENAME_WIN=openjfx-${JAVAFX_VERSION}_windows-x64_bin-jmods.zip +JPACKAGER_DOWNLOAD_URL_LINUX=http://download2.gluonhq.com/jpackager/11/jdk.packager-linux.zip +JPACKAGER_DOWNLOAD_URL_WIN=http://download2.gluonhq.com/jpackager/11/jdk.packager-windows.zip + +JPACKAGER_DOWNLOAD_FILENAME_LINUX=http://download2.gluonhq.com/jpackager/11/jdk.packager-linux.zip +JPACKAGER_DOWNLOAD_FILENAME_WIN=http://download2.gluonhq.com/jpackager/11/jdk.packager-windows.zip + + OS=`uname -s` if [ $OS = "Darwin" ]; then export JAVA_HOME=$JAVA_HOME_MAC diff --git a/resources/i2p-zero.desktop b/resources/i2p-zero.desktop deleted file mode 100755 index 2ffb8c3..0000000 --- a/resources/i2p-zero.desktop +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=i2p-zero -Exec=/bin/bash -c 'cd "$(dirname "$0")"; ./bin/launch-gui.sh' %k -Terminal=false -Type=Application -Categories=Utility; diff --git a/resources/i2p-zero.linux.cfg b/resources/i2p-zero.linux.cfg new file mode 100644 index 0000000..817ee24 --- /dev/null +++ b/resources/i2p-zero.linux.cfg @@ -0,0 +1,16 @@ +[Application] +app.name=i2p-zero +app.version=1.0 +app.preferences.id= +app.runtime=$APPDIR/runtime +app.identifier= +app.classpath= +app.application.instance=single +app.mainmodule=org.getmonero.i2p.zero.gui +packager.java.version=11.0.1 + +[JVMOptions] + +[JVMUserOptions] + +[ArgOptions] \ No newline at end of file diff --git a/resources/i2p-zero.win.cfg b/resources/i2p-zero.win.cfg new file mode 100644 index 0000000..d222e89 --- /dev/null +++ b/resources/i2p-zero.win.cfg @@ -0,0 +1,16 @@ +[Application] +app.name=i2p-zero +app.version=1.0 +app.preferences.id= +app.runtime=$APPDIR\runtime +app.identifier= +app.classpath= +app.application.instance=single +app.mainmodule=org.getmonero.i2p.zero.gui +packager.java.version=11.0.2 + +[JVMOptions] + +[JVMUserOptions] + +[ArgOptions] \ No newline at end of file diff --git a/resources/icons.ico b/resources/icons.ico new file mode 100644 index 0000000..c693042 Binary files /dev/null and b/resources/icons.ico differ diff --git a/resources/launch-gui.bat b/resources/launch-gui.bat deleted file mode 100644 index 2b33cdc..0000000 --- a/resources/launch-gui.bat +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -set DIR=%~dp0 -"%DIR%\java" -cp %DIR%\..\i2p.base\jbigi.jar -m org.getmonero.i2p.zero.gui --i2p.dir.base.template=%DIR%\..\i2p.base %* \ No newline at end of file diff --git a/resources/wrapper.exe b/resources/wrapper.exe new file mode 100644 index 0000000..51972dd Binary files /dev/null and b/resources/wrapper.exe differ