Start a WinLauncher

This commit is contained in:
idk
2021-04-03 16:39:26 -04:00
parent 506d2035cb
commit 9998692bbd
4 changed files with 166 additions and 53 deletions

46
build.sh Executable file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
set -e
JAVA=$(java --version | tr -d 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\n' | cut -d ' ' -f 2 | cut -d '.' -f 1 | tr -d '\n\t ')
if [ "$JAVA" -lt "14" ]; then
echo "Java 14+ must be used to compile with jpackage, java is $JAVA"
exit 1
fi
if [ -z "${JAVA_HOME}" ]; then
JAVA_HOME=`type -p java|xargs readlink -f|xargs dirname|xargs dirname`
echo "Building with: $JAVA, $JAVA_HOME"
fi
echo "cleaning"
./clean.sh
HERE="$PWD"
RES_DIR="$HERE/../i2p.i2p/installer/resources"
I2P_JARS="$HERE/../i2p.i2p/pkg-temp/lib"
I2P_PKG="$HERE/../i2p.i2p/pkg-temp"
echo "compiling custom launcher"
cp "$I2P_JARS"/*.jar build
cd java
"$JAVA_HOME"/bin/javac -d ../build -classpath "$HERE"/build/i2p.jar:"$HERE"/build/router.jar net/i2p/router/WinLauncher.java
cd ..
echo "building launcher.jar"
cd build
"$JAVA_HOME"/bin/jar -cf launcher.jar net certificates geoip config webapps resources.csv
cd ..
if [ -z $I2P_VERSION ]; then
I2P_VERSION=$("$JAVA_HOME"/bin/java -cp build/router.jar net.i2p.router.RouterVersion | sed "s/.*: //" | head -n 1)
fi
echo "preparing to invoke jpackage for I2P version $I2P_VERSION"
"$JAVA_HOME"/bin/jpackage --type app-image --name I2P --app-version "$I2P_VERSION" \
--verbose \
$JPACKAGE_OPTS \
--resource-dir build \
--input build --main-jar launcher.jar --main-class net.i2p.router.WinLauncher

18
clean.sh Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env sh
rm -rf \
build \
eventlog.txt \
hostsdb.blockfile \
I2P \
i2p_1.0-1_amd64.deb \
libjbigi.so \
libjcpuid.so \
logs \
peerProfiles \
prngseed.rnd \
router.config \
wrapper.log \
*.jar \
*.exe \
*.dmg

View File

@@ -0,0 +1,46 @@
package net.i2p.router;
import java.io.*;
import java.util.*;
/**
* Launches a router from a Mac App Bundle. Uses Java 9 APIs.
* Sets the following properties:
* i2p.dir.base - this points to the (read-only) resources inside the bundle
* i2p.dir.config - this points to the folder the configuration files are located in
* router.pid - the pid of the java process.
*/
public class WinLauncher {
/** this is totally undocumented */
private static final String APP_PATH = "jpackage.app-path";
private static final String LOCALAPPDATA = System.getenv("LOCALAPPDATA");
public static void main(String[] args) throws Exception {
String path = System.getProperty(APP_PATH,"unknown");
File f = new File(path);
File contents = f.getParentFile().getParentFile();
File resources = new File(contents, "Resources");
File bundleLocation = contents.getParentFile().getParentFile();
System.setProperty("i2p.dir.base", resources.getAbsolutePath());
System.setProperty("router.pid", String.valueOf(ProcessHandle.current().pid()));
try {
//System.load(resources.getAbsolutePath() + "/libMacLauncher.jnilib");
//disableAppNap();
} catch (Throwable bad) {
// this is pretty bad - I2P is very slow if AppNap kicks in.
// TODO: hook up to a console warning or similar.
//bad.printStackTrace();
}
RouterLaunch.main(args);
}
}

View File

@@ -15,11 +15,14 @@ UniCode true
var FFINSTEXE
var FFNONTORINSTEXE
var I2PINSTEXE
var USERLOCALAPPDATA
!define FFINSTEXE
!define FFNONTORINSTEXE
!define FFINSTEXE32 "$PROGRAMFILES32\Mozilla Firefox\"
!define FFINSTEXE64 "$PROGRAMFILES64\Mozilla Firefox\"
!define USERLOCALAPPDATA "$LOCALAPPDATA"
!define I2PINSTEXE
!define I2PINSTEXE32 "$PROGRAMFILES32\i2p"
@@ -193,24 +196,24 @@ Function routerDetect
File /nonfatal /a /r "I2P\"
File /nonfatal "I2P\config\jpackaged"
createDirectory "$LOCALAPPDATA\I2P\"
SetOutPath "$LOCALAPPDATA\I2P\"
createDirectory "$USERLOCALAPPDATA\I2P\"
SetOutPath "$USERLOCALAPPDATA\I2P\"
File /nonfatal "I2P\config\clients.config"
File /nonfatal "I2P\config\i2ptunnel.config"
File /nonfatal "I2P\config\wrapper.config"
File /nonfatal "I2P\config\hosts.txt"
createDirectory "$LOCALAPPDATA\I2P\webapps\"
SetOutPath "$LOCALAPPDATA\I2P\webapps\"
createDirectory "$USERLOCALAPPDATA\I2P\webapps\"
SetOutPath "$USERLOCALAPPDATA\I2P\webapps\"
File /nonfatal /a /r "I2P\config\webapps\"
createDirectory "$LOCALAPPDATA\I2P\geoip\"
SetOutPath "$LOCALAPPDATA\I2P\geoip\"
createDirectory "$USERLOCALAPPDATA\I2P\geoip\"
SetOutPath "$USERLOCALAPPDATA\I2P\geoip\"
File /nonfatal /a /r "I2P\config\geoip\"
createDirectory "$LOCALAPPDATA\I2P\certificates\"
SetOutPath "$LOCALAPPDATA\I2P\certificates\"
createDirectory "$USERLOCALAPPDATA\I2P\certificates\"
SetOutPath "$USERLOCALAPPDATA\I2P\certificates\"
File /nonfatal /a /r "I2P\config\certificates\"
Abort directory
@@ -232,19 +235,19 @@ Section Install
File /nonfatal /a /r "I2P\"
File /nonfatal "I2P\config\jpackaged"
createDirectory "$LOCALAPPDATA\I2P\"
SetOutPath "$LOCALAPPDATA\I2P\"
createDirectory "$USERLOCALAPPDATA\I2P\"
SetOutPath "$USERLOCALAPPDATA\I2P\"
createDirectory "$LOCALAPPDATA\I2P\webapps\"
SetOutPath "$LOCALAPPDATA\I2P\webapps\"
createDirectory "$USERLOCALAPPDATA\I2P\webapps\"
SetOutPath "$USERLOCALAPPDATA\I2P\webapps\"
File /nonfatal /a /r "I2P\config\webapps\"
createDirectory "$LOCALAPPDATA\I2P\geoip\"
SetOutPath "$LOCALAPPDATA\I2P\geoip\"
createDirectory "$USERLOCALAPPDATA\I2P\geoip\"
SetOutPath "$USERLOCALAPPDATA\I2P\geoip\"
File /nonfatal /a /r "I2P\config\geoip\"
createDirectory "$LOCALAPPDATA\I2P\certificates\"
SetOutPath "$LOCALAPPDATA\I2P\certificates\"
createDirectory "$USERLOCALAPPDATA\I2P\certificates\"
SetOutPath "$USERLOCALAPPDATA\I2P\certificates\"
File /nonfatal /a /r "I2P\config\certificates\"
${EndIf}
@@ -256,7 +259,7 @@ Section Install
FileWriteByte $0 "13"
FileWriteByte $0 "10"
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
FileWrite $0 'start /D "$LOCALAPPDATA\I2P\" "" "$I2PINSTEXE\i2p.exe"'
FileWrite $0 'start /D "$USERLOCALAPPDATA\I2P\" "" "$I2PINSTEXE\i2p.exe"'
${Else}
FileWrite $0 'start "" "$I2PINSTEXE\i2p.exe"'
${EndIf}
@@ -264,7 +267,7 @@ Section Install
FileWriteByte $0 "10"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 'start "" "$FFINSTEXE\firefox.exe" -no-remote -profile "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p" -url %1'
FileWrite $0 'start "" "$FFINSTEXE\firefox.exe" -no-remote -profile "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p" -url %1'
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 exit
@@ -277,7 +280,7 @@ Section Install
FileWriteByte $0 "13"
FileWriteByte $0 "10"
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
FileWrite $0 'start /D "$LOCALAPPDATA\I2P\" "" "$I2PINSTEXE\i2p.exe"'
FileWrite $0 'start /D "$USERLOCALAPPDATA\I2P\" "" "$I2PINSTEXE\i2p.exe"'
${Else}
FileWrite $0 'start "" "$I2PINSTEXE\i2p.exe"'
${EndIf}
@@ -285,7 +288,7 @@ Section Install
FileWriteByte $0 "10"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 'start "" "$FFINSTEXE\firefox.exe" -no-remote -profile "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p" -private-window about:blank'
FileWrite $0 'start "" "$FFINSTEXE\firefox.exe" -no-remote -profile "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p" -private-window about:blank'
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 exit
@@ -302,7 +305,7 @@ Section Install
FileWriteByte $0 "13"
FileWriteByte $0 "10"
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
FileWrite $0 'start /D "$LOCALAPPDATA\I2P\" "" "$I2PINSTEXE\i2p.exe"'
FileWrite $0 'start /D "$USERLOCALAPPDATA\I2P\" "" "$I2PINSTEXE\i2p.exe"'
${Else}
FileWrite $0 'start "" "$I2PINSTEXE\i2p.exe"'
${EndIf}
@@ -310,7 +313,7 @@ Section Install
FileWriteByte $0 "10"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 'start "" "$FFNONTORINSTEXE\firefox.exe" -no-remote -profile "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p" -url %1'
FileWrite $0 'start "" "$FFNONTORINSTEXE\firefox.exe" -no-remote -profile "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p" -url %1'
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 exit
@@ -326,37 +329,37 @@ Section Install
File /r licenses\*.*
# Install the profile
createDirectory "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p"
SetOutPath "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p"
createDirectory "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p"
SetOutPath "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p"
File profile\user.js
File profile\prefs.js
File profile\bookmarks.html
File profile\storage-sync.sqlite
# Install the extensions
createDirectory "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions"
SetOutPath "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions"
createDirectory "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions"
SetOutPath "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions"
File "profile\extensions\{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi"
File profile\extensions\https-everywhere-eff@eff.org.xpi
File profile\extensions\i2ppb@eyedeekay.github.io.xpi
# Install the config profile
createDirectory "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p"
SetOutPath "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p"
createDirectory "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p"
SetOutPath "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p"
File app-profile\user.js
File app-profile\prefs.js
File app-profile\bookmarks.html
File app-profile\storage-sync.sqlite
# Install the config extensions
createDirectory "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\extensions"
SetOutPath "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\extensions"
createDirectory "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\extensions"
SetOutPath "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\extensions"
File profile\extensions\https-everywhere-eff@eff.org.xpi
File profile\extensions\i2ppb@eyedeekay.github.io.xpi
# Install the config userChrome
createDirectory "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\chrome"
SetOutPath "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\chrome"
createDirectory "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\chrome"
SetOutPath "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\chrome"
File app-profile\chrome\userChrome.css
SetOutPath "$INSTDIR"
@@ -374,10 +377,10 @@ Section Install
StrCpy $I2PAPPDATA "$I2PINSTEXE"
IfFileExists "$APPDATA\I2P\clients.config.d" 0 +2
StrCpy $I2PAPPDATA "$APPDATA\I2P\"
IfFileExists "$LOCALAPPDATA\I2P\clients.config.d" 0 +2
StrCpy $I2PAPPDATA "$LOCALAPPDATA\I2P\"
IfFileExists "$LOCALAPPDATA\I2P\clients.config" 0 +2
StrCpy $I2PAPPDATA "$LOCALAPPDATA\I2P\"
IfFileExists "$USERLOCALAPPDATA\I2P\clients.config.d" 0 +2
StrCpy $I2PAPPDATA "$USERLOCALAPPDATA\I2P\"
IfFileExists "$USERLOCALAPPDATA\I2P\clients.config" 0 +2
StrCpy $I2PAPPDATA "$USERLOCALAPPDATA\I2P\"
createDirectory "$I2PAPPDATA"
@@ -415,25 +418,25 @@ Section "uninstall"
Delete $INSTDIR\ui2pbrowser_icon.ico
# Uninstall the profile
Delete $LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\prefs.js
Delete $LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\user.js
Delete $LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\bookmarks.html
Delete $LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\storage-sync.sqlite
Delete $USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\prefs.js
Delete $USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\user.js
Delete $USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\bookmarks.html
Delete $USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\storage-sync.sqlite
Delete $LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\prefs.js
Delete $LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\user.js
Delete $LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\bookmarks.html
Delete $LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\storage-sync.sqlite
Delete $USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\prefs.js
Delete $USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\user.js
Delete $USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\bookmarks.html
Delete $USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\storage-sync.sqlite
# Uninstall the extensions
Delete "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions\{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi"
Delete "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions\https-everywhere-eff@eff.org.xpi"
Delete "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions\i2ppb@eyedeekay.github.io.xpi"
Delete "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions\{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi"
Delete "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions\https-everywhere-eff@eff.org.xpi"
Delete "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions\i2ppb@eyedeekay.github.io.xpi"
Delete "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\extensions\https-everywhere-eff@eff.org.xpi"
Delete "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\extensions\i2ppb@eyedeekay.github.io.xpi"
Delete "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\extensions\https-everywhere-eff@eff.org.xpi"
Delete "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\extensions\i2ppb@eyedeekay.github.io.xpi"
Delete "$LOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\config\userChrome.css"
Delete "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.config.i2p\config\userChrome.css"
# Remove shortcuts and folders
Delete "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
@@ -442,9 +445,9 @@ Section "uninstall"
Delete "$DESKTOP\${APPNAME}.lnk"
Delete "$DESKTOP\Private Browsing-${APPNAME}.lnk"
rmDir "$SMPROGRAMS\${APPNAME}"
rmDir "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions"
rmDir "$LOCALAPPDATA\${APPNAME}\firefox.profile.i2p"
rmDir "$LOCALAPPDATA\${APPNAME}"
rmDir "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p\extensions"
rmDir "$USERLOCALAPPDATA\${APPNAME}\firefox.profile.i2p"
rmDir "$USERLOCALAPPDATA\${APPNAME}"
rmDir "$INSTDIR"
# delete the uninstaller