<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?> <installation version="1.0"> <info> <appname>i2p</appname> <appversion>0.8.8</appversion> <authors> <author name="I2P" email="http://forum.i2p2.de/"/> </authors> <url>http://www.i2p2.de/</url> <javaversion>1.5</javaversion> <!-- use pack200 compression, saves about 33% see http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/pack200.html Unpack fails on java 1.5 see http://jira.codehaus.org/browse/IZPACK-404 <pack200 /> --> <!-- adding this element will make the installer attempt to launch itself with administrator permissions, but see http://www.nabble.com/Classpath-security-issues-on-Vista-td22456230.html which says it isn't sufficient: Just to let you know that I managed to identify and resolve the problem (in case anyone else has it). The default installation directory for Vista is under "Program Files" which is a "special" directory which can only be written to (create sub-directories) by administrators. However, stupid Vista downgrades an administrator to a normal user when the program is run via the application shortcut menu. As you suggested, I added a script which runs ICACLS which resolved the problem, i.e. icacls %1 /grant Users:F /T > priv.log The command needs to be run as a Process rather than as an executable tag in order to pass $INSTALL_PATH as a parameter. --> <run-privileged condition="izpack.windowsinstall.vista|izpack.windowsinstall.7"/> </info> <guiprefs width="590" height="356" resizable="yes"> <laf name="liquid"> <os family="unix"/> </laf> <!-- full names, not iso3 codes --> <modifier key="langDisplayType" value="native" /> </guiprefs> <locale> <langpack iso3="eng"/> <langpack iso3="cat"/> <langpack iso3="chn"/> <langpack iso3="cze"/> <langpack iso3="dan"/> <langpack iso3="deu"/> <langpack iso3="ell"/> <langpack iso3="fa"/> <langpack iso3="fin"/> <langpack iso3="fra"/> <langpack iso3="glg"/> <langpack iso3="hun"/> <langpack iso3="ind"/> <langpack iso3="ita"/> <langpack iso3="jpn"/> <langpack iso3="kor"/> <langpack iso3="mys"/> <langpack iso3="ned"/> <langpack iso3="nor"/> <langpack iso3="pol"/> <langpack iso3="por"/> <langpack iso3="rom"/> <langpack iso3="rus"/> <langpack iso3="scg"/> <langpack iso3="spa"/> <langpack iso3="svk"/> <langpack iso3="swe"/> <langpack iso3="tur"/> <langpack iso3="twn"/> <langpack iso3="ukr"/> </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 --> <native type="izpack" name="ShellLink.dll" /> <native type="izpack" name="ShellLink_x64.dll" /> <resources> <res id="Installer.image" 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> <panels> <panel classname="HelloPanel"/> <panel classname="InfoPanel"/> <panel classname="PacksPanel"><os family="windows" /></panel> <panel classname="TargetPanel"/> <panel classname="ShortcutPanel"><os family="windows" /></panel> <!-- <panel classname="ProcessPanel"><os family="windows" /></panel> --> <!-- unix|mac doesn't work, displays for windows too --> <!-- Unfortunately unix is used for osx as well, so the XInfoPanel was shown *twice* on OSX. Using the condition this way, the panel is shown on everything *but* Windows. --> <panel classname="XInfoPanel" condition="!izpack.windowsinstall" /> <!--<panel classname="XInfoPanel" ><os family="unix" /></panel> --> <!--<panel classname="XInfoPanel" ><os family="mac" /></panel> --> <panel classname="InstallPanel"/> <panel classname="SimpleFinishPanel"/> </panels> <packs> <pack name="Base" required="yes"> <description>Base installation files</description> <fileset dir="pkg-temp" includes="**/*" targetdir="$INSTALL_PATH"/> <!-- 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="unix|mac" /> <parsable targetfile="$INSTALL_PATH/eepget" type="shell" os="unix|mac" /> <parsable targetfile="$INSTALL_PATH/runplain.sh" type="shell" os="unix|mac" /> <parsable targetfile="$INSTALL_PATH/Start I2P Router.app/Contents/MacOS/i2prouter" type="shell" os="mac" /> <conditions> <condition type="variable" id="is64bit"> <name>SYSTEM_sun_arch_data_model</name> <value>64</value> </condition> </conditions> <!-- postinstall stuff for windows --> <!-- Wrapper for 32bit Windows JVM --> <executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn" condition="!is64bit"> <os family="windows" /> <args><arg value="$INSTALL_PATH\lib\wrapper\win32\I2Psvc.exe" /><arg value="$INSTALL_PATH" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn" condition="!is64bit"> <os family="windows" /> <args><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/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn" condition="is64bit" > <os family="windows" /> <args><arg value="$INSTALL_PATH\lib\wrapper\win64\I2Psvc.exe" /><arg value="$INSTALL_PATH" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn" condition="is64bit" > <os family="windows" /> <args><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/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn" condition="is64bit" > <os family="windows" /> <args><arg value="$INSTALL_PATH\lib\wrapper\win32\wrapper.dll" /><arg value="$INSTALL_PATH\lib\wrapper-windows-x86-32.dll" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\i2prouter" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\install_i2p_service_unix" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\install-headless.txt" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\runplain.sh" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\osid" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\postinstall.sh" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\uninstall_i2p_service_unix" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\lib\wrapper" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH\eepget" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH/Start I2P Router.app" /></args></executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH/man" /></args></executable> <!-- Placeholder for an OSX 'shortcut' to the router console <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH/I2P Router Console.webloc" /></args></executable> --> <!-- workaround for bad default path for wrapper.log in Windows. --> <executable targetfile="$INSTALL_PATH/fix_logfile_path.cmd" type="bin" stage="postinstall" keep="false"> <os family="windows" /> </executable> <!-- workaround for vista permission problems - see comments above --> <executable targetfile="$INSTALL_PATH/fixperms.bat" type="bin" stage="postinstall" keep="true" failure="warn" condition="izpack.windowsinstall.vista|izpack.windowsinstall.7" > <args><arg value="$INSTALL_PATH" /></args> </executable> <!-- else delete it --> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn" condition="izpack.windowsinstall.xp|izpack.windowsinstall.2003" > <args><arg value="$INSTALL_PATH\fixperms.bat" /></args> </executable> <!-- <executable targetfile="$INSTALL_PATH/installer/exec.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH" /><arg value="$INSTALL_PATH\I2Psvc.exe" /><arg value="-c" /><arg value="$INSTALL_PATH\wrapper.config" /></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="windows"> <args> <arg value="$INSTALL_PATH\wrapper.config" /> <arg value="--nopause" /> </args> </executable> <executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="false" failure="warn"> <os family="windows" /> <args><arg value="$INSTALL_PATH/installer/" /></args></executable> </pack> <!-- to disable by default, add preselected="no" --> <pack name="Windows Service" required="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"> <args> <arg value="$INSTALL_PATH\wrapper.config" /> <arg value="--nopause" /> </args> </executable> <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> </installation>