Index: trunk/src/lib/com/izforge/izpack/Info.java =================================================================== --- trunk/src/lib/com/izforge/izpack/Info.java (revision 2495) +++ trunk/src/lib/com/izforge/izpack/Info.java (working copy) @@ -79,6 +79,10 @@ */ private String uninstallerName = "uninstaller.jar"; /** + * The uninstaller path + */ + private String uninstallerPath = "$INSTALL_PATH/Uninstaller"; + /** * condition for writing the uninstaller */ private String uninstallerCondition = null; @@ -280,6 +284,24 @@ return this.uninstallerName; } + /** + * Sets the path to the uninstaller + * + * @param path the path to the uninstaller + */ + public void setUninstallerPath(String path) { + this.uninstallerPath = path; + } + + /** + * Returns the path to the uninstaller + * + * @return the path to the uninstaller + */ + public String getUninstallerPath() { + return this.uninstallerPath; + } + public boolean isJdkRequired() { return jdkRequired; Index: trunk/src/lib/com/izforge/izpack/compiler/CompilerConfig.java =================================================================== --- trunk/src/lib/com/izforge/izpack/compiler/CompilerConfig.java (revision 2462) +++ trunk/src/lib/com/izforge/izpack/compiler/CompilerConfig.java (working copy) @@ -1828,6 +1828,11 @@ { info.setUninstallerName(uninstallerName); } + String uninstallerPath = uninstallInfo.getAttribute("path"); + if (uninstallerPath != null) + { + info.setUninstallerPath(uninstallerPath); + } if (uninstallInfo.hasAttribute("condition")) { // there's a condition for uninstaller Index: trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java =================================================================== --- trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java (revision 2482) +++ trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java (working copy) @@ -965,7 +965,7 @@ { if (logfile.toLowerCase().startsWith("default")) { - logfile = "$INSTALL_PATH/Uninstaller/install.log"; + logfile = installdata.info.getUninstallerPath() + "/install.log"; } logfile = IoHelper.translatePath(logfile, new VariableSubstitutor(installdata .getVariables())); Index: trunk/src/lib/com/izforge/izpack/installer/Unpacker.java =================================================================== --- trunk/src/lib/com/izforge/izpack/installer/Unpacker.java (revision 2462) +++ trunk/src/lib/com/izforge/izpack/installer/Unpacker.java (working copy) @@ -41,7 +41,7 @@ */ public class Unpacker extends UnpackerBase { - private static final String tempPath = "$INSTALL_PATH/Uninstaller/IzpackWebTemp"; + private static final String tempSubPath = "/IzpackWebTemp"; private Pack200.Unpacker unpacker; @@ -559,7 +559,7 @@ // See compiler.Packager#getJarOutputStream for the counterpart String baseName = idata.info.getInstallerBase(); String packURL = webDirURL + "/" + baseName + ".pack" + packid + ".jar"; - String tf = IoHelper.translatePath(Unpacker.tempPath, vs); + String tf = IoHelper.translatePath(idata.info.getUninstallerPath()+ Unpacker.tempSubPath, vs); String tempfile; try { Index: trunk/src/lib/com/izforge/izpack/installer/UnpackerBase.java =================================================================== --- trunk/src/lib/com/izforge/izpack/installer/UnpackerBase.java (revision 2485) +++ trunk/src/lib/com/izforge/izpack/installer/UnpackerBase.java (working copy) @@ -674,7 +674,7 @@ in[1] = UnpackerBase.class.getResourceAsStream("/res/IzPack.uninstaller-ext"); // Me make the .uninstaller directory - String dest = IoHelper.translatePath("$INSTALL_PATH", vs) + File.separator + "Uninstaller"; + String dest = IoHelper.translatePath(idata.info.getUninstallerPath(), vs); String jar = dest + File.separator + idata.info.getUninstallerName(); File pathMaker = new File(dest); pathMaker.mkdirs();