Index: java/ProgramSettings/src/net/oni2/SettingsManager.java
===================================================================
--- java/ProgramSettings/src/net/oni2/SettingsManager.java	(revision 775)
+++ java/ProgramSettings/src/net/oni2/SettingsManager.java	(revision 776)
@@ -9,5 +9,4 @@
 import java.util.HashMap;
 
-
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.StaxDriver;
@@ -25,4 +24,5 @@
 
 	private static boolean debugRun = false;
+	private static boolean useWorkingDir = false;
 
 	private HashMap<String, Object> prefs = new HashMap<String, Object>();
@@ -55,4 +55,19 @@
 	public static boolean isDebug() {
 		return debugRun;
+	}
+
+	/**
+	 * @param useWd
+	 *            Use working directory instead of jar path
+	 */
+	public static void setUseWorkingDir(boolean useWd) {
+		useWorkingDir = useWd;
+	}
+
+	/**
+	 * @return Do we want to use working directory
+	 */
+	public static boolean getUseWorkingDir() {
+		return useWorkingDir;
 	}
 
Index: java/installer2/src/net/oni2/aeinstaller/AEInstaller2.java
===================================================================
--- java/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 775)
+++ java/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 776)
@@ -116,4 +116,5 @@
 
 		boolean debug = false;
+		boolean useWd = false;
 		boolean noCacheUpdate = false;
 		boolean offline = false;
@@ -125,4 +126,6 @@
 			if (a.equalsIgnoreCase("-offline"))
 				offline = true;
+			if (a.equalsIgnoreCase("-usewd"))
+				useWd = true;
 		}
 		if (!debug) {
@@ -140,4 +143,5 @@
 		SettingsManager.deserializeFromFile(Paths.getSettingsFilename());
 		SettingsManager.setDebug(debug);
+		SettingsManager.setUseWorkingDir(useWd);
 		SettingsManager.getInstance().setNoCacheUpdateMode(noCacheUpdate);
 
@@ -257,5 +261,5 @@
 			try {
 				int x = svn.checkSVN("http://svn.aei.oni2.net",
-						new File(Paths.getPrefsPath(), "bin"));
+						Paths.getJarPath());
 				if (x > 0) {
 					// Update available or missing files
Index: java/installer2/src/net/oni2/aeinstaller/backend/Paths.java
===================================================================
--- java/installer2/src/net/oni2/aeinstaller/backend/Paths.java	(revision 775)
+++ java/installer2/src/net/oni2/aeinstaller/backend/Paths.java	(revision 776)
@@ -32,18 +32,25 @@
 	 */
 	public static File getInstallerPath() {
-		if (SettingsManager.isDebug()) {
+		if (SettingsManager.isDebug() || SettingsManager.getUseWorkingDir()) {
 			String wd = System.getProperty("user.dir");
 			return new File(wd);
 		} else {
-			String jarPath = Paths.class.getProtectionDomain()
-					.getCodeSource().getLocation().getPath();
-			String decodedPath = null;
-			try {
-				decodedPath = URLDecoder.decode(jarPath, "UTF-8");
-			} catch (UnsupportedEncodingException e) {
-				e.printStackTrace();
-			}
-			return new File(decodedPath).getParentFile().getParentFile();
+			return getJarPath();
 		}
+	}
+
+	/**
+	 * @return Path of jar
+	 */
+	public static File getJarPath() {
+		String jarPath = Paths.class.getProtectionDomain().getCodeSource()
+				.getLocation().getPath();
+		String decodedPath = null;
+		try {
+			decodedPath = URLDecoder.decode(jarPath, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		return new File(decodedPath).getParentFile().getParentFile();
 	}
 
@@ -108,5 +115,6 @@
 	 */
 	public static File getVanillaGDF() {
-		return CaseInsensitiveFile.getCaseInsensitiveFile(getOniBasePath(), "GameDataFolder");
+		return CaseInsensitiveFile.getCaseInsensitiveFile(getOniBasePath(),
+				"GameDataFolder");
 	}
 
