331 lines
11 KiB
NSIS
331 lines
11 KiB
NSIS
# This now requires v3
|
|
UniCode true
|
|
|
|
!define APPNAME "I2PBrowser-Launcher"
|
|
!define COMPANYNAME "I2P"
|
|
!define DESCRIPTION "This launches Firefox with a browser profile pre-configured to use i2p"
|
|
!define FIREFOX_MESSAGE "Could not find Firefox. Please point to where you have installed Firefox. If you have not installed Firefox yet, exit this installer and install Firefox, then start this installer again."
|
|
!define I2P_MESSAGE "Could not find I2P. Please point to where you have installed I2P. If you have not installed I2P yet, exit this installer and install I2P, then start this installer again."
|
|
!define LAUNCH_TEXT "Start I2P?"
|
|
!define LICENSE_TITLE "Many Licenses"
|
|
!define CONSOLE_URL "http://127.0.0.1:7657/home"
|
|
|
|
!include i2pbrowser-version.nsi
|
|
!include i2pbrowser-jpackage.nsi
|
|
!include FindProcess.nsh
|
|
|
|
var I2PINSTEXE
|
|
|
|
SetOverwrite on
|
|
|
|
!define I2PINSTEXE
|
|
!define I2PINSTEXE_USERMODE "$LOCALAPPDATA\i2p"
|
|
|
|
!define RAM_NEEDED_FOR_64BIT 0x80000000
|
|
|
|
InstallDir "$PROGRAMFILES64\${COMPANYNAME}\${APPNAME}"
|
|
|
|
# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n)
|
|
LicenseData "licenses\LICENSE.txt"
|
|
# This will be in the installer/uninstaller's title bar
|
|
Name "${COMPANYNAME} - ${APPNAME}"
|
|
Icon ui2pbrowser_icon.ico
|
|
OutFile "I2P-Profile-Installer-${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}.exe"
|
|
|
|
RequestExecutionLevel user
|
|
|
|
!include LogicLib.nsh
|
|
!include x64.nsh
|
|
!include FileFunc.nsh
|
|
!define MUI_ICON ui2pbrowser_icon.ico
|
|
!define MUI_FINISHPAGE
|
|
!include "MUI2.nsh"
|
|
|
|
### Available languages
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
!insertmacro MUI_LANGUAGE "French"
|
|
!insertmacro MUI_LANGUAGE "German"
|
|
!insertmacro MUI_LANGUAGE "Spanish"
|
|
!insertmacro MUI_LANGUAGE "SpanishInternational"
|
|
!insertmacro MUI_LANGUAGE "SimpChinese"
|
|
!insertmacro MUI_LANGUAGE "TradChinese"
|
|
!insertmacro MUI_LANGUAGE "Japanese"
|
|
!insertmacro MUI_LANGUAGE "Korean"
|
|
!insertmacro MUI_LANGUAGE "Italian"
|
|
!insertmacro MUI_LANGUAGE "Dutch"
|
|
!insertmacro MUI_LANGUAGE "Danish"
|
|
!insertmacro MUI_LANGUAGE "Swedish"
|
|
!insertmacro MUI_LANGUAGE "Norwegian"
|
|
!insertmacro MUI_LANGUAGE "NorwegianNynorsk"
|
|
!insertmacro MUI_LANGUAGE "Finnish"
|
|
!insertmacro MUI_LANGUAGE "Greek"
|
|
!insertmacro MUI_LANGUAGE "Russian"
|
|
!insertmacro MUI_LANGUAGE "Portuguese"
|
|
!insertmacro MUI_LANGUAGE "PortugueseBR"
|
|
!insertmacro MUI_LANGUAGE "Polish"
|
|
!insertmacro MUI_LANGUAGE "Ukrainian"
|
|
!insertmacro MUI_LANGUAGE "Czech"
|
|
!insertmacro MUI_LANGUAGE "Slovak"
|
|
!insertmacro MUI_LANGUAGE "Croatian"
|
|
!insertmacro MUI_LANGUAGE "Bulgarian"
|
|
!insertmacro MUI_LANGUAGE "Hungarian"
|
|
!insertmacro MUI_LANGUAGE "Thai"
|
|
!insertmacro MUI_LANGUAGE "Romanian"
|
|
!insertmacro MUI_LANGUAGE "Latvian"
|
|
!insertmacro MUI_LANGUAGE "Macedonian"
|
|
!insertmacro MUI_LANGUAGE "Estonian"
|
|
!insertmacro MUI_LANGUAGE "Turkish"
|
|
!insertmacro MUI_LANGUAGE "Lithuanian"
|
|
!insertmacro MUI_LANGUAGE "Slovenian"
|
|
!insertmacro MUI_LANGUAGE "Serbian"
|
|
!insertmacro MUI_LANGUAGE "SerbianLatin"
|
|
!insertmacro MUI_LANGUAGE "Arabic"
|
|
!insertmacro MUI_LANGUAGE "Farsi"
|
|
!insertmacro MUI_LANGUAGE "Hebrew"
|
|
!insertmacro MUI_LANGUAGE "Indonesian"
|
|
!insertmacro MUI_LANGUAGE "Mongolian"
|
|
!insertmacro MUI_LANGUAGE "Luxembourgish"
|
|
!insertmacro MUI_LANGUAGE "Albanian"
|
|
!insertmacro MUI_LANGUAGE "Breton"
|
|
!insertmacro MUI_LANGUAGE "Belarusian"
|
|
!insertmacro MUI_LANGUAGE "Icelandic"
|
|
!insertmacro MUI_LANGUAGE "Malay"
|
|
!insertmacro MUI_LANGUAGE "Bosnian"
|
|
!insertmacro MUI_LANGUAGE "Kurdish"
|
|
!insertmacro MUI_LANGUAGE "Irish"
|
|
!insertmacro MUI_LANGUAGE "Uzbek"
|
|
!insertmacro MUI_LANGUAGE "Galician"
|
|
!insertmacro MUI_LANGUAGE "Afrikaans"
|
|
!insertmacro MUI_LANGUAGE "Catalan"
|
|
!insertmacro MUI_LANGUAGE "Esperanto"
|
|
!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"
|
|
### END LANGUAGES
|
|
|
|
# small speed optimization
|
|
!insertmacro MUI_RESERVEFILE_LANGDLL
|
|
# show all languages, regardless of codepage
|
|
!define MUI_LANGDLL_ALLLANGUAGES
|
|
|
|
PageEx license
|
|
licensetext "${LICENSE_TITLE}"
|
|
licensedata "licenses\LICENSE.txt"
|
|
PageExEnd
|
|
PageEx directory
|
|
dirtext "${I2P_MESSAGE}"
|
|
dirvar $I2PINSTEXE
|
|
PageCallbacks routerDetect
|
|
PageExEnd
|
|
Page instfiles
|
|
|
|
#!include i2pbrowser-mozcompat.nsi
|
|
|
|
Function .onInit
|
|
StrCpy $I2PINSTEXE "${I2PINSTEXE_USERMODE}"
|
|
UserInfo::GetAccountType
|
|
pop $0
|
|
${If} $0 != "admin"
|
|
StrCpy $INSTDIR "$LOCALAPPDATA\${COMPANYNAME}\${APPNAME}"
|
|
StrCpy $I2PINSTEXE "${I2PINSTEXE_USERMODE}"
|
|
${EndIf}
|
|
!insertmacro MUI_LANGDLL_DISPLAY
|
|
#Call ShouldInstall64Bit
|
|
# look for user installs
|
|
FunctionEnd
|
|
|
|
Function routerDetect
|
|
createDirectory $I2PINSTEXE
|
|
SetOutPath $I2PINSTEXE
|
|
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 /a /r "I2P/config/router.config"
|
|
IfFileExists $I2PINSTEXE\clients.config +2 0
|
|
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
|
|
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
|
|
|
|
Function installerFunction
|
|
${If} ${Silent}
|
|
${Do}
|
|
${FindProcess} "I2P.exe" $0
|
|
Sleep 500
|
|
${LoopWhile} $0 <> 0
|
|
${EndIf}
|
|
|
|
# set the installation directory as the destination for the following actions
|
|
createDirectory $INSTDIR
|
|
SetOutPath $INSTDIR
|
|
File ui2pbrowser_icon.ico
|
|
|
|
# Update jpackaged I2P router, if it exists
|
|
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
|
|
createDirectory $I2PINSTEXE
|
|
SetOutPath $I2PINSTEXE
|
|
|
|
${If} ${Silent}
|
|
ReadEnvStr $0 OLD_I2P_VERSION
|
|
${If} $0 < ${I2P_VERSION}
|
|
call routerDetect
|
|
|
|
${EndIf}
|
|
${Else}
|
|
call routerDetect
|
|
|
|
${EndIf}
|
|
${EndIf}
|
|
|
|
# Install the launcher scripts
|
|
createDirectory "$INSTDIR"
|
|
#SetOutPath "$INSTDIR"
|
|
#File "win/*"
|
|
|
|
# Install the licenses
|
|
createDirectory "$INSTDIR\licenses"
|
|
SetOutPath "$INSTDIR\licenses"
|
|
File /a /r "licenses/*"
|
|
|
|
# Install the profile
|
|
createDirectory "$INSTDIR\firefox.profile.i2p"
|
|
SetOutPath "$INSTDIR\firefox.profile.i2p"
|
|
File /a /r "profile/*"
|
|
|
|
# Install the config profile
|
|
createDirectory "$INSTDIR\firefox.profile.config.i2p"
|
|
SetOutPath "$INSTDIR\firefox.profile.config.i2p"
|
|
File /a /r "app-profile/*"
|
|
|
|
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 -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 -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"
|
|
|
|
SetShellVarContext current
|
|
Var /Global I2PAPPDATA
|
|
|
|
IfFileExists "$I2PINSTEXE\clients.config" 0 +2
|
|
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\"
|
|
|
|
createDirectory "$I2PAPPDATA"
|
|
SetOutPath "$I2PAPPDATA"
|
|
|
|
IfFileExists "$LOCALAPPDATA\I2P\eepsite\docroot" +2 0
|
|
File /a /r "I2P\eepsite"
|
|
|
|
createDirectory "$I2PINSTEXE"
|
|
SetOutPath "$I2PINSTEXE"
|
|
|
|
SetOutPath "$INSTDIR"
|
|
# create the uninstaller
|
|
WriteUninstaller "$INSTDIR\uninstall-i2pbrowser.exe"
|
|
|
|
# create a shortcut to the uninstaller
|
|
CreateShortCut "$SMPROGRAMS\${APPNAME}\Uninstall-${APPNAME}.lnk" "$INSTDIR\uninstall-i2pbrowser.exe"
|
|
FunctionEnd
|
|
|
|
|
|
# start default section
|
|
Section Install
|
|
Call installerFunction
|
|
SectionEnd
|
|
|
|
# uninstaller section start
|
|
Section "uninstall"
|
|
# Uninstall the launcher scripts
|
|
Delete $INSTDIR\*
|
|
rmDir /r "$INSTDIR\"
|
|
${If} ${FileExists} "$I2PINSTEXE\jpackaged"
|
|
Delete $I2PINSTEXE\*
|
|
rmDir /r "$I2PINSTEXE"
|
|
${EndIf}
|
|
|
|
# Remove shortcuts and folders
|
|
Delete "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
|
|
Delete "$SMPROGRAMS\${APPNAME}\Private Browsing-${APPNAME}.lnk"
|
|
Delete "$SMPROGRAMS\Uninstall-${APPNAME}.lnk"
|
|
Delete "$SMPROGRAMS\${APPNAME}\Browse I2P.lnk"
|
|
Delete "$DESKTOP\Browse I2P - Temporary Identity.lnk"
|
|
Delete "$DESKTOP\Browse I2P.lnk"
|
|
Delete "$DESKTOP\${APPNAME}.lnk"
|
|
Delete "$DESKTOP\Private Browsing-${APPNAME}.lnk"
|
|
rmDir /r "$SMPROGRAMS\${APPNAME}"
|
|
rmDir /r "$INSTDIR\firefox.profile.i2p\extensions"
|
|
rmDir /r "$INSTDIR\firefox.profile.i2p"
|
|
rmDir /r "$LOCALAPPDATA\${APPNAME}"
|
|
rmDir /r "$INSTDIR"
|
|
|
|
# delete the uninstaller
|
|
Delete "$INSTDIR\uninstall-i2pbrowser.exe"
|
|
|
|
# uninstaller section end
|
|
|
|
SectionEnd
|
|
|
|
!define MUI_FINISHPAGE_RUN
|
|
!define MUI_FINISHPAGE_RUN_TEXT "${LAUNCH_TEXT}"
|
|
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
|
|
!insertmacro MUI_PAGE_FINISH
|
|
|
|
Function LaunchLink
|
|
SetOutPath "$I2PINSTEXE"
|
|
StrCpy $OUTDIR $I2PINSTEXE
|
|
${If} ${Silent}
|
|
ReadEnvStr $0 RESTART_I2P
|
|
${If} $0 != ""
|
|
UserInfo::GetAccountType
|
|
pop $0
|
|
${If} $0 == "admin"
|
|
ShellExecAsUser::ShellExecAsUser "open" "$DESKTOP\Browse I2P.lnk"
|
|
${Else}
|
|
ExecShell "" "$DESKTOP\Browse I2P.lnk"
|
|
${EndIf}
|
|
${EndIf}
|
|
${Else}
|
|
UserInfo::GetAccountType
|
|
pop $0
|
|
${If} $0 == "admin"
|
|
ShellExecAsUser::ShellExecAsUser "open" "$DESKTOP\Browse I2P.lnk"
|
|
${Else}
|
|
ExecShell "" "$DESKTOP\Browse I2P.lnk"
|
|
${EndIf}
|
|
${EndIf}
|
|
FunctionEnd
|