Start a WinLauncher
This commit is contained in:
46
build.sh
Executable file
46
build.sh
Executable 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
18
clean.sh
Executable 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
|
||||
46
java/net/i2p/router/WinLauncher.java
Normal file
46
java/net/i2p/router/WinLauncher.java
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user