From 646778680dfd2fd43bb28db0bdabd0a4887d1f8c Mon Sep 17 00:00:00 2001 From: idk Date: Mon, 29 Aug 2022 19:42:25 -0400 Subject: [PATCH 1/5] This enables the jpackage to launch almost any browser as an I2P-enabled browser. It will choose Firefox variants first, Chromium variants second, and falls back to setting environment variables before spawning the browser process. It also removes the Firefox dependency from the NSIS build --- java/net/i2p/router/WinLauncher.java | 6 +- src/nsis/i2pbrowser-installer.nsi | 95 ++++++++-------------------- 2 files changed, 29 insertions(+), 72 deletions(-) diff --git a/java/net/i2p/router/WinLauncher.java b/java/net/i2p/router/WinLauncher.java index 917b670..6c8c558 100644 --- a/java/net/i2p/router/WinLauncher.java +++ b/java/net/i2p/router/WinLauncher.java @@ -77,9 +77,9 @@ public class WinLauncher { if (i2pIsRunning()) { logger.warning("I2P is already running"); - I2PFirefox i2pFirefox = new I2PFirefox(); - System.out.println("I2PFirefox"); - i2pFirefox.launch(privateBrowsing); + I2PBrowser i2pBrowser = new I2PBrowser(); + System.out.println("i2pBrowser"); + i2pBrowser.launch(privateBrowsing); return; } diff --git a/src/nsis/i2pbrowser-installer.nsi b/src/nsis/i2pbrowser-installer.nsi index 5b19f22..2eb06ad 100644 --- a/src/nsis/i2pbrowser-installer.nsi +++ b/src/nsis/i2pbrowser-installer.nsi @@ -14,21 +14,14 @@ UniCode true !include i2pbrowser-jpackage.nsi !include FindProcess.nsh -var FFINSTEXE -var FFNONTORINSTEXE var I2PINSTEXE Var PARENTOPTIONS SetOverwrite on -!define FFINSTEXE -!define FFNONTORINSTEXE -!define FFINSTEXE32 "$PROGRAMFILES32\Mozilla Firefox\" -!define FFINSTEXE64 "$PROGRAMFILES64\Mozilla Firefox\" !define I2PINSTEXE !define I2PINSTEXE_USERMODE "$LOCALAPPDATA\i2p" - !define RAM_NEEDED_FOR_64BIT 0x80000000 InstallDir "$PROGRAMFILES64\${COMPANYNAME}\${APPNAME}" @@ -129,12 +122,6 @@ PageEx license licensetext "${LICENSE_TITLE}" licensedata "licenses\LICENSE.txt" PageExEnd -PageEx directory - dirtext "${FIREFOX_MESSAGE}" - dirvar $FFINSTEXE - dirvar $FFNONTORINSTEXE - PageCallbacks firefoxDetect -PageExEnd PageEx directory dirtext "${I2P_MESSAGE}" dirvar $I2PINSTEXE @@ -142,7 +129,7 @@ PageEx directory PageExEnd Page instfiles -!include i2pbrowser-mozcompat.nsi +#!include i2pbrowser-mozcompat.nsi Function .onInit StrCpy $I2PINSTEXE "${I2PINSTEXE_USERMODE}" @@ -153,64 +140,32 @@ Function .onInit StrCpy $I2PINSTEXE "${I2PINSTEXE_USERMODE}" ${EndIf} !insertmacro MUI_LANGDLL_DISPLAY - Call ShouldInstall64Bit - ${If} $0 == 1 - ${If} ${FileExists} "${FFINSTEXE64}\firefox.exe" - StrCpy $FFINSTEXE "${FFINSTEXE64}" - StrCpy $FFNONTORINSTEXE "${FFINSTEXE64}" - ${ElseIf} ${FileExists} "${FFINSTEXE32}\firefox.exe" - StrCpy $FFINSTEXE "${FFINSTEXE32}" - StrCpy $FFNONTORINSTEXE "${FFINSTEXE32}" - ${EndIf} - ${If} ${FileExists} "$PROFILE\OneDrive\Desktop\Tor Browser\Browser\firefox.exe" - StrCpy $FFINSTEXE "$PROFILE\OneDrive\Desktop\Tor Browser\Browser\" - ${EndIf} - ${If} ${FileExists} "$PROFILE\Desktop\Tor Browser\Browser\firefox.exe" - StrCpy $FFINSTEXE "$PROFILE\Desktop\Tor Browser\Browser\" - ${EndIf} - ${Else} - ${If} ${FileExists} "${FFINSTEXE32}\firefox.exe" - StrCpy $FFINSTEXE "${FFINSTEXE32}" - StrCpy $FFNONTORINSTEXE "${FFINSTEXE32}" - ${EndIf} - ${If} ${FileExists} "$PROFILE\OneDrive\Desktop\Tor Browser\Browser\firefox.exe" - StrCpy $FFINSTEXE "$PROFILE\OneDrive\Desktop\Tor Browser\Browser\" - ${EndIf} - ${If} ${FileExists} "$PROFILE\Desktop\Tor Browser\Browser\firefox.exe" - StrCpy $FFINSTEXE "$PROFILE\Desktop\Tor Browser\Browser\" - ${EndIf} - ${EndIf} + #Call ShouldInstall64Bit # look for user installs FunctionEnd -Function firefoxDetect - ${If} ${FileExists} "$FFINSTEXE\firefox.exe" - Abort directory - ${EndIf} -FunctionEnd - Function routerDetect createDirectory $I2PINSTEXE SetOutPath $I2PINSTEXE - File /nonfatal /a /r "I2P\" - File /nonfatal /a /r "I2P\I2P.exe" - File /nonfatal "I2P\config\jpackaged" + File /a /r "I2P\" + File /nonfatal /a /r "I2P\I2P.exe" + File "I2P\config\jpackaged" createDirectory "$I2PINSTEXE\" SetOutPath "$I2PINSTEXE\" IfFileExists $I2PINSTEXE\router.config +2 0 - File /nonfatal /a /r "I2P/config/router.config" + File /a /r "I2P/config/router.config" IfFileExists $I2PINSTEXE\clients.config +2 0 - File /nonfatal /a /r "I2P/config/clients.config" + File /a /r "I2P/config/clients.config" IfFileExists $I2PINSTEXE\wrapper.config +2 0 - File /nonfatal /a /r "I2P/config/wrapper.config" + File /a /r "I2P/config/wrapper.config" IfFileExists $I2PINSTEXE\eepsite +2 0 - File /nonfatal /a /r "I2P/config/eepsite" + File /a /r "I2P/config/eepsite" IfFileExists $I2PINSTEXE\webapps +2 0 - File /nonfatal /a /r "I2P/config/webapps" - File /nonfatal /a /r "I2P/config/certificates" - File /nonfatal /a /r "I2P/config/geoip" - File /nonfatal /a /r "I2P/config/i2ptunnel.config" + File /a /r "I2P/config/webapps" + File /a /r "I2P/config/certificates" + File /a /r "I2P/config/geoip" + File /a /r "I2P/config/i2ptunnel.config" Abort directory FunctionEnd @@ -236,27 +191,29 @@ ${If} ${Silent} ${If} ${Silent} ReadEnvStr $0 OLD_I2P_VERSION ${If} $0 < ${I2P_VERSION} - rmDir /r $I2PINSTEXE/app + call routerDetect + /*rmDir /r $I2PINSTEXE/app rmDir /r $I2PINSTEXE/runtime - File /nonfatal /a /r "I2P\" - File /nonfatal "I2P\config\jpackaged" + File /a /r "I2P\" + File "I2P\config\jpackaged" createDirectory "$I2PINSTEXE\" SetOutPath "$I2PINSTEXE\" - File /nonfatal /a /r "I2P/config/certificates" - File /nonfatal /a /r "I2P/config/geoip" + File /a /r "I2P/config/certificates" + File /a /r "I2P/config/geoip"*/ ${EndIf} ${Else} - rmDir /r $I2PINSTEXE/app + call routerDetect + /*rmDir /r $I2PINSTEXE/app rmDir /r $I2PINSTEXE/runtime - File /nonfatal /a /r "I2P\" - File /nonfatal "I2P\config\jpackaged" + File /a /r "I2P\" + File "I2P\config\jpackaged" createDirectory "$I2PINSTEXE\" SetOutPath "$I2PINSTEXE\" - File /nonfatal /a /r "I2P/config/certificates" - File /nonfatal /a /r "I2P/config/geoip" + File /a /r "I2P/config/certificates" + File /a /r "I2P/config/geoip"*/ ${EndIf} ${EndIf} @@ -308,7 +265,7 @@ ${If} ${Silent} SetOutPath "$I2PAPPDATA" IfFileExists "$LOCALAPPDATA\I2P\eepsite\docroot" +2 0 - File /nonfatal /a /r "I2P\eepsite" + File /a /r "I2P\eepsite" createDirectory "$I2PINSTEXE" SetOutPath "$I2PINSTEXE" From 3d67aa4dca7dbaa21e69222e06b2fac4ae29a8ff Mon Sep 17 00:00:00 2001 From: idk Date: Mon, 29 Aug 2022 19:53:52 -0400 Subject: [PATCH 2/5] eliminate redundant parentoptions --- src/nsis/i2pbrowser-installer.nsi | 1 - 1 file changed, 1 deletion(-) diff --git a/src/nsis/i2pbrowser-installer.nsi b/src/nsis/i2pbrowser-installer.nsi index 2eb06ad..0f8d905 100644 --- a/src/nsis/i2pbrowser-installer.nsi +++ b/src/nsis/i2pbrowser-installer.nsi @@ -15,7 +15,6 @@ UniCode true !include FindProcess.nsh var I2PINSTEXE -Var PARENTOPTIONS SetOverwrite on From 7806b6f23252df8f3c7f6653969780e0e9d22e1a Mon Sep 17 00:00:00 2001 From: idk Date: Tue, 30 Aug 2022 09:45:40 -0400 Subject: [PATCH 3/5] make sure to copy default hosts.txt file too --- src/nsis/i2pbrowser-installer.nsi | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/src/nsis/i2pbrowser-installer.nsi b/src/nsis/i2pbrowser-installer.nsi index 0f8d905..f579b03 100644 --- a/src/nsis/i2pbrowser-installer.nsi +++ b/src/nsis/i2pbrowser-installer.nsi @@ -158,6 +158,8 @@ Function routerDetect File /a /r "I2P/config/clients.config" IfFileExists $I2PINSTEXE\wrapper.config +2 0 File /a /r "I2P/config/wrapper.config" + IfFileExists $I2PINSTEXE\hosts.txt +2 0 + File /a /r "I2P/config/hosts.txt" IfFileExists $I2PINSTEXE\eepsite +2 0 File /a /r "I2P/config/eepsite" IfFileExists $I2PINSTEXE\webapps +2 0 @@ -191,28 +193,10 @@ ${If} ${Silent} ReadEnvStr $0 OLD_I2P_VERSION ${If} $0 < ${I2P_VERSION} call routerDetect - /*rmDir /r $I2PINSTEXE/app - rmDir /r $I2PINSTEXE/runtime - File /a /r "I2P\" - File "I2P\config\jpackaged" - - createDirectory "$I2PINSTEXE\" - SetOutPath "$I2PINSTEXE\" - File /a /r "I2P/config/certificates" - File /a /r "I2P/config/geoip"*/ ${EndIf} ${Else} call routerDetect - /*rmDir /r $I2PINSTEXE/app - rmDir /r $I2PINSTEXE/runtime - File /a /r "I2P\" - File "I2P\config\jpackaged" - - createDirectory "$I2PINSTEXE\" - SetOutPath "$I2PINSTEXE\" - File /a /r "I2P/config/certificates" - File /a /r "I2P/config/geoip"*/ ${EndIf} ${EndIf} From 603c10ed9f19a54a0645b7e2171595f61df06c09 Mon Sep 17 00:00:00 2001 From: idk Date: Tue, 30 Aug 2022 11:19:08 -0400 Subject: [PATCH 4/5] un-comment broken Firefox languages now that we're compiling with NSIS v3 --- src/nsis/i2pbrowser-installer.nsi | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/nsis/i2pbrowser-installer.nsi b/src/nsis/i2pbrowser-installer.nsi index f579b03..4592d37 100644 --- a/src/nsis/i2pbrowser-installer.nsi +++ b/src/nsis/i2pbrowser-installer.nsi @@ -101,15 +101,15 @@ RequestExecutionLevel user !insertmacro MUI_LANGUAGE "Basque" !insertmacro MUI_LANGUAGE "Welsh" # Commented out languages below do not compile on NSIS v2 -# !insertmacro MUI_LANGUAGE "Asturian" -# !insertmacro MUI_LANGUAGE "Pashto" -# !insertmacro MUI_LANGUAGE "ScotsGaelic" -# !insertmacro MUI_LANGUAGE "Georgian" -# !insertmacro MUI_LANGUAGE "Vietnamese" -# !insertmacro MUI_LANGUAGE "Armenian" -# !insertmacro MUI_LANGUAGE "Corsican" -# !insertmacro MUI_LANGUAGE "Tatar" -# !insertmacro MUI_LANGUAGE "Hindi" + !insertmacro MUI_LANGUAGE "Asturian" + !insertmacro MUI_LANGUAGE "Pashto" + !insertmacro MUI_LANGUAGE "ScotsGaelic" + !insertmacro MUI_LANGUAGE "Georgian" + !insertmacro MUI_LANGUAGE "Vietnamese" + !insertmacro MUI_LANGUAGE "Armenian" + !insertmacro MUI_LANGUAGE "Corsican" + !insertmacro MUI_LANGUAGE "Tatar" + !insertmacro MUI_LANGUAGE "Hindi" ### END LANGUAGES # small speed optimization From c2485eeea021096e2d16bc749e7c40ea439d083e Mon Sep 17 00:00:00 2001 From: idk Date: Tue, 30 Aug 2022 11:20:45 -0400 Subject: [PATCH 5/5] enable -private flag for temp identity in Shortcuts(as opposed to on-by-default or container-manged only) --- src/nsis/i2pbrowser-installer.nsi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nsis/i2pbrowser-installer.nsi b/src/nsis/i2pbrowser-installer.nsi index 4592d37..33bcb06 100644 --- a/src/nsis/i2pbrowser-installer.nsi +++ b/src/nsis/i2pbrowser-installer.nsi @@ -224,11 +224,11 @@ ${If} ${Silent} SetOutPath "$I2PINSTEXE" createDirectory "$SMPROGRAMS\${APPNAME}" CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P.lnk" "$I2PINSTEXE\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico" - CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P - Temporary Identity.lnk" "$I2PINSTEXE\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico" + CreateShortCut "$SMPROGRAMS\${APPNAME}\Browse I2P - Temporary Identity.lnk" "$I2PINSTEXE\I2P.exe -private" "" "$INSTDIR\ui2pbrowser_icon.ico" ; CreateShortCut "$SMPROGRAMS\${APPNAME}\I2P Applications.lnk" "C:\Windows\system32\cmd.exe" "/c $\"$INSTDIR\i2pconfig.bat$\"" "$INSTDIR\ui2pbrowser_icon.ico" CreateShortCut "$DESKTOP\Browse I2P.lnk" "$I2PINSTEXE\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico" - CreateShortCut "$DESKTOP\Browse I2P - Temporary Identity.lnk" "$I2PINSTEXE\I2P.exe" "" "$INSTDIR\ui2pbrowser_icon.ico" + CreateShortCut "$DESKTOP\Browse I2P - Temporary Identity.lnk" "$I2PINSTEXE\I2P.exe -private" "" "$INSTDIR\ui2pbrowser_icon.ico" ; CreateShortCut "$DESKTOP\I2P Applications.lnk" "C:\Windows\system32\cmd.exe" "/c $\"$INSTDIR\i2pconfig.bat$\"" "$INSTDIR\ui2pbrowser_icon.ico" SetOutPath "$INSTDIR"