
Some checks failed
Sync Primary Repository to GitHub Mirror / sync (push) Has been cancelled
Daily Workflow / daily-job (push) Has been cancelled
Daily Workflow / javadoc-latest (push) Has been cancelled
Daily Workflow / build-java7 (push) Has been cancelled
Java CI / build (push) Has been cancelled
Java CI / javadoc-latest (push) Has been cancelled
Java CI / build-java7 (push) Has been cancelled
Dockerhub / docker (push) Has been cancelled
Java with IzPack Snapshot Setup / setup (push) Has been cancelled
454 lines
20 KiB
XML
454 lines
20 KiB
XML
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
|
|
<!--
|
|
This is for izpack 5.
|
|
See install.xml for izpack 4.
|
|
-->
|
|
<izpack:installation version="5.0"
|
|
xmlns:izpack="http://izpack.org/schema/installation"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://izpack.org/schema/installation http://izpack.org/schema/5.0/izpack-installation-5.0.xsd">
|
|
|
|
<info>
|
|
<appname>i2p</appname>
|
|
<appversion>2.9.0</appversion>
|
|
<authors>
|
|
<author name="I2P" email="https://geti2p.net/"/>
|
|
</authors>
|
|
<url>https://geti2p.net/</url>
|
|
<javaversion>1.8</javaversion>
|
|
|
|
<!-- adding this element will make the installer attempt to launch itself with administrator permissions,
|
|
-->
|
|
<run-privileged condition="izpack.windowsinstall.vista|izpack.windowsinstall.7"/>
|
|
</info>
|
|
|
|
<guiprefs width="590" height="356" resizable="yes">
|
|
<!--
|
|
Not in 5.1.2, pick another one
|
|
https://izpack.atlassian.net/wiki/spaces/IZPACK/pages/491730/GUI+Preferences
|
|
<laf name="liquid">
|
|
<os family="unix"/>
|
|
</laf>
|
|
-->
|
|
<!-- full names, not iso3 codes -->
|
|
<modifier key="langDisplayType" value="native" />
|
|
<modifier key="headingPanelCounter" value="progressbar"/>
|
|
<modifier key="headingPanelCounterPos" value="inNavigationPanel"/>
|
|
</guiprefs>
|
|
|
|
<!--
|
|
Locales:
|
|
|
|
This is poorly documented, like a lot of things in izpack, but these can
|
|
be 2 OR 3 character country OR language codes.
|
|
Whatever it is, there must be xx.xml and xx.gif files available at
|
|
build time or the build will error out.
|
|
|
|
At runtime, izpack loads all the JVM's locales and tries to find
|
|
the "best match" locale for the code. See izpack DefaultLocales.java.
|
|
It then uses Locale.getDisplayLanguage() on that best match to show the (translated) language name
|
|
when langDisplayType=native, which we set in guiprefs above.
|
|
|
|
At https://izpack.atlassian.net/wiki/spaces/IZPACK/pages/491613/Overriding+Built-in+Translations
|
|
it says:
|
|
"In IzPack, language packs are identified by a 3 character ISO country or language code.
|
|
Country codes are converted to lowercase.
|
|
Country codes are used in preference to language codes.
|
|
This is to handle the case where a language variation is spoken for which there is no ISO language code."
|
|
|
|
This is wrong in that 2-character country and language codes are also allowed.
|
|
|
|
It is also wrong in that, unfortunately,
|
|
country codes combined with "best match" can go very badly.
|
|
Izpack 4 used the language code "ind" for Indonesian, but
|
|
Izpack 5 switched to use the country code "idn" instead.
|
|
This worked fine on Java 8, but on Java 21, the best match finds Javanese/Jawa for "idn",
|
|
which is a completely different language than Indonesian.
|
|
See: https://old.reddit.com/r/i2p/comments/1e61lsp/wrong_country_name_indonesia_as_jawa/
|
|
|
|
Renamed or custom langpacks (xml + gif) must be checked in to
|
|
installer/lib/izpack5/patches/resources
|
|
and may then be added below, and will be bundled with the installer.
|
|
|
|
Note that the JVM's installed locales varies widely by Java version.
|
|
For example, as of 2024 on Ubuntu, Java 8 has 159 locales and Java 21 has 1050.
|
|
The selected locale may even depend on the ordering of locales returned by getAvailableLocales() in the JVM.
|
|
|
|
If no locale for any code is found, it outputs "WARNING: No locale for xx"
|
|
which is annoying. Even worse, if no locale found, it doesn't display the translation
|
|
as an option.
|
|
But that shouldn't stop us from including it if some JVMs have it.
|
|
|
|
-->
|
|
|
|
<locale>
|
|
<langpack iso3="eng"/>
|
|
<!--
|
|
Brazilian Portuguese
|
|
see above, wrongly matches neegatu, replaced by por.
|
|
Portuguese (Portugal) is prt below.
|
|
<langpack iso3="bra"/>
|
|
-->
|
|
<langpack iso3="por"/>
|
|
<langpack iso3="cat"/>
|
|
<langpack iso3="ces"/>
|
|
<!--
|
|
Chinese
|
|
see above, wrongly matches Sichuan Yi (iii), replaced by zho
|
|
<langpack iso3="chn"/>
|
|
-->
|
|
<langpack iso3="zho"/>
|
|
<langpack iso3="dan"/>
|
|
<langpack iso3="deu"/>
|
|
<langpack iso3="ell"/>
|
|
<!-- fa not found in older JVMs, may generate warning, see above -->
|
|
<langpack iso3="fa"/>
|
|
<langpack iso3="fin"/>
|
|
<langpack iso3="fra"/>
|
|
<langpack iso3="hun"/>
|
|
<!--
|
|
see above, replaced by ind
|
|
<langpack iso3="idn"/>
|
|
-->
|
|
<langpack iso3="ind"/>
|
|
<langpack iso3="ita"/>
|
|
<langpack iso3="jpn"/>
|
|
<langpack iso3="kor"/>
|
|
<langpack iso3="msa"/>
|
|
<langpack iso3="nld"/>
|
|
<langpack iso3="nor"/>
|
|
<langpack iso3="pol"/>
|
|
<langpack iso3="prt"/>
|
|
<langpack iso3="ron"/>
|
|
<langpack iso3="rus"/>
|
|
<langpack iso3="slk"/>
|
|
<langpack iso3="spa"/>
|
|
<langpack iso3="srp"/>
|
|
<langpack iso3="swe"/>
|
|
<langpack iso3="tur"/>
|
|
<langpack iso3="twn"/>
|
|
<langpack iso3="ukr"/>
|
|
<!--
|
|
At runtime, if the JVM does not have a locale:
|
|
"WARNING: No locale for:"
|
|
<langpack iso3="eus"/> Basque
|
|
<langpack iso3="glg"/> Galician
|
|
-->
|
|
</locale>
|
|
|
|
<!--
|
|
The <os> tag can be used to restrict the inclusion into the uninstaller
|
|
to a specific operating system family, architecture or version.
|
|
The inclusion into the installer will be always done.
|
|
Here's a sample :
|
|
|
|
<native type="izpack" name="ShellLink.dll">
|
|
<os family="windows"/>
|
|
</native>
|
|
|
|
This doesn't appear to be necessary, the dlls don't get put in Uninstaller/uninstaller.jar on linux
|
|
-->
|
|
<natives>
|
|
<native type="izpack" name="ShellLink.dll" />
|
|
<native type="izpack" name="ShellLink_x64.dll" />
|
|
<!--
|
|
https://izpack.atlassian.net/wiki/spaces/IZPACK/pages/491532/Advanced+Features
|
|
<native type="izpack" name="WinSetupAPI.dll" />
|
|
<native type="izpack" name="WinSetupAPI_x64.dll" />
|
|
https://izpack.atlassian.net/wiki/spaces/IZPACK/pages/491676/RegistryInstallerListener+RegistryUninstallerListener
|
|
<native type="3rdparty" name="COIOSHelper.dll" />
|
|
<native type="3rdparty" name="COIOSHelper_x64.dll" />
|
|
-->
|
|
</natives>
|
|
|
|
<resources>
|
|
<res id="Installer.image" src="installer/resources/i2plogo.png" />
|
|
<res id="installer.langsel.img" src="installer/resources/i2plogo.png" />
|
|
<res id="InfoPanel.info" src="installer/resources/readme.license.txt"/>
|
|
<!-- <res id="ProcessPanel.Spec.xml" src="installer/resources/ProcessPanel.Spec.xml"/> -->
|
|
<res id="shortcutSpec.xml" src="installer/resources/shortcutSpec.xml" />
|
|
<res id="XInfoPanel.info" src="installer/resources/start-i2p.txt" />
|
|
</resources>
|
|
|
|
<variables>
|
|
<!-- desktop shortcuts enabled by default in ShortcutPanel -->
|
|
<variable name="DesktopShortcutCheckboxEnabled" value="true" />
|
|
</variables>
|
|
|
|
<dynamicvariables>
|
|
<variable name="datamodel" value="${SYSTEM[sun.arch.data.model]}"/>
|
|
</dynamicvariables>
|
|
|
|
<conditions>
|
|
<condition type="variable" id="is64bit">
|
|
<name>datamodel</name>
|
|
<value>64</value>
|
|
</condition>
|
|
</conditions>
|
|
|
|
<!-- XInfoConsolePanel -->
|
|
<jar src="installer/lib/izpack5/patches/java/build/izpack-i2p.jar" />
|
|
|
|
<panels>
|
|
<panel classname="HelloPanel"/>
|
|
<panel classname="InfoPanel"/>
|
|
<panel classname="TargetPanel"/>
|
|
<!-- In 5.1.2, PacksPanel will NPE at install time if before TargetPanel -->
|
|
<panel classname="PacksPanel"><os family="windows" /></panel>
|
|
<panel classname="InstallPanel"/>
|
|
<!-- In 5.1.2, ShortcutPanel must be after InstallPanel, so the .ico files will be there,
|
|
unless <lateShortcutInstall/> is set in shorcutSpec.xml.
|
|
If you don't do this right, the shortcuts won't have our icons.
|
|
-->
|
|
<panel classname="ShortcutPanel"><os family="windows" /></panel>
|
|
<!--
|
|
Using the condition this way, the panel is shown on everything *but* Windows.
|
|
Fails in console mode: Installer says:
|
|
No console mode helper found for class com.izforge.izpack.panels.xinfo.XInfoPanel, panel type will be skipped in console mode installation
|
|
No automation helper found for class com.izforge.izpack.panels.xinfo.XInfoPanel, panel type will be skipped in automated installation
|
|
But isn't actually skipped when installing with -console:
|
|
SEVERE: com.izforge.izpack.api.exception.IzPackException: Console implementation not found for panel: com.izforge.izpack.panels.xinfo.XInfoPanel
|
|
-->
|
|
<panel classname="XInfoPanel" condition="!izpack.windowsinstall" />
|
|
<panel classname="SimpleFinishPanel"/>
|
|
</panels>
|
|
|
|
<packs>
|
|
<pack name="Base" required="yes">
|
|
<description>Base installation files</description>
|
|
<!-- non-jars -->
|
|
<fileset dir="pkg-temp" excludes="**/*.jar" targetdir="$INSTALL_PATH"/>
|
|
<!-- pack200 jars -->
|
|
<fileset dir="pkg-temp" includes="**/*.jar"
|
|
excludes="lib/commons-logging.jar lib/jasper-compiler.jar lib/jetty-java5-threadpool.jar lib/jetty-sslengine.jar lib/jbigi.jar"
|
|
targetdir="$INSTALL_PATH">
|
|
<!--
|
|
<pack200/>
|
|
-->
|
|
</fileset>
|
|
<!-- non-pack200 jars -->
|
|
<fileset dir="pkg-temp"
|
|
includes="lib/commons-logging.jar lib/jasper-compiler.jar lib/jetty-java5-threadpool.jar lib/jetty-sslengine.jar lib/jbigi.jar"
|
|
targetdir="$INSTALL_PATH">
|
|
</fileset>
|
|
<!--
|
|
Do variable substitution in these files. See:
|
|
http://www.javalobby.org/forums/thread.jspa?threadID=15967&tstart=0
|
|
and the izpack docs for some guidance.
|
|
-->
|
|
<parsable targetfile="$INSTALL_PATH/wrapper.config" type="plain" />
|
|
<parsable targetfile="$INSTALL_PATH/i2prouter" type="shell"> <os family="unix" /> </parsable>
|
|
<parsable targetfile="$INSTALL_PATH/eepget" type="shell"> <os family="unix" /> </parsable>
|
|
<parsable targetfile="$INSTALL_PATH/eepget.bat" type="shell"><os family="windows" /></parsable>
|
|
<parsable targetfile="$INSTALL_PATH/runplain.sh" type="shell"> <os family="unix" /> </parsable>
|
|
<parsable targetfile="$INSTALL_PATH/Start I2P Router.app/Contents/MacOS/i2prouter" type="shell"><os family="mac" /></parsable>
|
|
|
|
<!-- postinstall stuff for windows -->
|
|
<!-- Wrapper for 32bit Windows JVM -->
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall"
|
|
keep="true"
|
|
failure="warn"
|
|
condition="!is64bit">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="copy" />
|
|
<arg value="$INSTALL_PATH\lib\wrapper\win32\I2Psvc.exe" />
|
|
<arg value="$INSTALL_PATH" />
|
|
</args>
|
|
</executable>
|
|
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall"
|
|
keep="true"
|
|
failure="warn"
|
|
condition="!is64bit">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="copy" />
|
|
<arg value="$INSTALL_PATH\lib\wrapper\win32\wrapper.dll" />
|
|
<arg value="$INSTALL_PATH\lib" />
|
|
</args>
|
|
</executable>
|
|
|
|
<!-- wrapper for 64bit Windows JVM -->
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall"
|
|
keep="true"
|
|
failure="warn"
|
|
condition="is64bit">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="copy" />
|
|
<arg value="$INSTALL_PATH\lib\wrapper\win64\I2Psvc.exe" />
|
|
<arg value="$INSTALL_PATH" />
|
|
</args>
|
|
</executable>
|
|
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall"
|
|
keep="true"
|
|
failure="warn"
|
|
condition="is64bit">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="copy" />
|
|
<arg value="$INSTALL_PATH\lib\wrapper\win64\wrapper.dll" />
|
|
<arg value="$INSTALL_PATH\lib" />
|
|
</args>
|
|
</executable>
|
|
|
|
<!--
|
|
We still copy the 32 bit version of wrapper.dll (even with a
|
|
64bit jvm) so that if a 32 bit jvm is installed in the future,
|
|
nothing breaks.
|
|
-->
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall"
|
|
keep="true"
|
|
failure="warn"
|
|
condition="is64bit">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="copy" />
|
|
<arg value="$INSTALL_PATH\lib\wrapper\win32\wrapper.dll" />
|
|
<arg value="$INSTALL_PATH\lib\wrapper-windows-x86-32.dll" />
|
|
</args>
|
|
</executable>
|
|
|
|
<!-- workaround for bad default path for wrapper.log in Windows. -->
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall" keep="true">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="fixwinpaths" />
|
|
<arg value="$INSTALL_PATH\wrapper.config" />
|
|
</args>
|
|
</executable>
|
|
|
|
<!-- Now we'll get rid of the UNIX-only stuff -->
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall" keep="true" failure="warn">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="delete" />
|
|
<arg value="$INSTALL_PATH\i2prouter" />
|
|
<arg value="$INSTALL_PATH\install_i2p_service_unix" />
|
|
<arg value="$INSTALL_PATH\install-headless.txt" />
|
|
<arg value="$INSTALL_PATH\runplain.sh" />
|
|
<arg value="$INSTALL_PATH\osid" />
|
|
<arg value="$INSTALL_PATH\postinstall.sh" />
|
|
<arg value="$INSTALL_PATH\uninstall_i2p_service_unix" />
|
|
<arg value="$INSTALL_PATH\lib\wrapper" />
|
|
<arg value="$INSTALL_PATH\eepget" />
|
|
<arg value="$INSTALL_PATH/Start I2P Router.app" />
|
|
<arg value="$INSTALL_PATH/net.i2p.router.plist.template" />
|
|
<arg value="$INSTALL_PATH/install_i2p_service_osx.command" />
|
|
<arg value="$INSTALL_PATH/uninstall_i2p_service_osx.command" />
|
|
<arg value="$INSTALL_PATH/man" />
|
|
<arg value="$INSTALL_PATH/locale" />
|
|
<!-- Placeholder for an OSX 'shortcut' to the router console
|
|
<arg value="$INSTALL_PATH/I2P Router Console.webloc" />
|
|
-->
|
|
</args>
|
|
</executable>
|
|
|
|
<!-- change owner to %username% so updates will work -->
|
|
<executable targetfile="$INSTALL_PATH/fixperms.bat" type="bin" stage="postinstall" keep="true" failure="warn"
|
|
condition="!izpack.windowsinstall.xp+!izpack.windowsinstall.2003" >
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="$INSTALL_PATH" />
|
|
</args>
|
|
</executable>
|
|
<!-- else delete it -->
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall" keep="true" failure="warn" condition="izpack.windowsinstall.xp|izpack.windowsinstall.2003">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="delete" />
|
|
<arg value="$INSTALL_PATH\fixperms.bat" />
|
|
</args>
|
|
</executable>
|
|
|
|
<!--
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall" keep="true" failure="warn">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="exec" />
|
|
<arg value="$INSTALL_PATH" />
|
|
<arg value="$INSTALL_PATH\I2Psvc.exe" />
|
|
<arg value="-c" />
|
|
<arg value="$INSTALL_PATH\wrapper.config" />
|
|
</args>
|
|
</executable>
|
|
-->
|
|
|
|
<!--
|
|
and now we delete the installer utility jar.
|
|
I moved this out of installer/ because the directory
|
|
couldn't be deleted while the jar was active and would
|
|
remain on the system.
|
|
|
|
This, however, works fine.
|
|
-->
|
|
<executable targetfile="$INSTALL_PATH/utility.jar"
|
|
type="jar"
|
|
class="net.i2p.installer.Main"
|
|
stage="postinstall" keep="false" failure="warn">
|
|
<os family="windows" />
|
|
<args>
|
|
<arg value="delete" />
|
|
<arg value="$INSTALL_PATH/utility.jar" />
|
|
</args>
|
|
</executable>
|
|
|
|
<!-- postinstall stuff for *nix -->
|
|
<!-- stage=never means chmod a+x -->
|
|
<executable targetfile="$INSTALL_PATH/postinstall.sh" type="bin" stage="never" keep="true" failure="warn"><os family="unix" /></executable>
|
|
<executable targetfile="$INSTALL_PATH/postinstall.sh" type="bin" stage="postinstall" keep="true" failure="warn"><os family="unix" />
|
|
<args><arg value="$INSTALL_PATH" /></args></executable>
|
|
<!--
|
|
Removal of the I2P service in Windows should be done in the base pack
|
|
so that even if a user installed the service manually it will still be
|
|
removed when uninstalling.
|
|
-->
|
|
<executable targetfile="$INSTALL_PATH/uninstall_i2p_service_winnt.bat" stage="uninstall"><os family="windows" /></executable>
|
|
</pack>
|
|
|
|
<!-- to disable by default, add preselected="no" -->
|
|
<pack name="Windows Service" required="no" preselected="no">
|
|
<description>Automatically start I2P in the background</description>
|
|
<os family="windows" />
|
|
<executable targetfile="$INSTALL_PATH/set_config_dir_for_nt_service.bat" stage="postinstall" failure="warn" keep="true" />
|
|
<executable targetfile="$INSTALL_PATH/install_i2p_service_winnt.bat" stage="postinstall" failure="warn" keep="true" />
|
|
<executable targetfile="$INSTALL_PATH/I2Psvc.exe" stage="postinstall" failure="warn" keep="true">
|
|
<args>
|
|
<arg value="-t" />
|
|
<arg value="$INSTALL_PATH\wrapper.config" />
|
|
</args>
|
|
</executable>
|
|
</pack>
|
|
</packs>
|
|
|
|
</izpack:installation>
|