Index: java/installer2/src/net/oni2/aeinstaller/AEInstaller.properties
===================================================================
--- java/installer2/src/net/oni2/aeinstaller/AEInstaller.properties	(revision 722)
+++ java/installer2/src/net/oni2/aeinstaller/AEInstaller.properties	(revision 730)
@@ -1,2 +1,2 @@
 appname=AE Installer 2
-appversion=0.99v
+appversion=0.99w
Index: java/installer2/src/net/oni2/aeinstaller/AEInstaller2.java
===================================================================
--- java/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 722)
+++ java/installer2/src/net/oni2/aeinstaller/AEInstaller2.java	(revision 730)
@@ -32,5 +32,8 @@
 import net.oni2.platformtools.PlatformInformation;
 import net.oni2.platformtools.PlatformInformation.Platform;
+import net.oni2.platformtools.applicationinvoker.ApplicationInvoker;
 import net.oni2.platformtools.applicationinvoker.DotNet;
+import net.oni2.platformtools.applicationinvoker.EExeType;
+import net.oni2.svnaccess.SVN;
 
 import org.javabuilders.swing.SwingJavaBuilder;
@@ -64,7 +67,8 @@
 		}
 	}
-	
+
 	private static void initBundles() {
-		File localesDir = CaseInsensitiveFile.getCaseInsensitiveFile(Paths.getInstallerPath(), "locales");
+		File localesDir = CaseInsensitiveFile.getCaseInsensitiveFile(
+				Paths.getInstallerPath(), "locales");
 		if (localesDir.isDirectory())
 			addClassPath(localesDir);
@@ -121,5 +125,5 @@
 			}
 		}
-		
+
 		initBundles();
 
@@ -173,5 +177,6 @@
 		System.out.println("ValidPath: " + Installer.verifyRunningDirectory());
 		System.out.println("Platform:  " + PlatformInformation.getPlatform());
-		System.out.println("Architect: " + PlatformInformation.getArchitecture());
+		System.out.println("Architect: "
+				+ PlatformInformation.getArchitecture());
 		System.out.println(".NET:      " + DotNet.isInstalled());
 		System.out.println("OniSplit:  " + OniSplit.isOniSplitInstalled());
@@ -241,4 +246,33 @@
 		SettingsManager.getInstance().setOfflineMode(offline);
 
+		if (!offline) {
+			SVN svn = new SVN();
+			try {
+				int x = svn.checkSVN("http://svn.aei.oni2.net",
+						new File(Paths.getPrefsPath(), "bin"));
+				if (x > 0) {
+					// Update available
+					int res = JOptionPane.showConfirmDialog(null,
+							globalBundle.getString("aeiUpdateAvailable.text"),
+							globalBundle.getString("aeiUpdateAvailable.title"),
+							JOptionPane.YES_NO_OPTION,
+							JOptionPane.INFORMATION_MESSAGE);
+					if (res == JOptionPane.YES_OPTION) {
+						File updater = new File(Paths.getInstallerPath(),
+								"AEInstaller2Updater.jar");
+						ApplicationInvoker.execute(EExeType.JAR, null, updater,
+								null);
+						return;
+					}
+				} else if (x == 0) {
+					// Up to date
+				} else if (x < 0) {
+					// No WC at given path
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+
 		SwingUtilities.invokeLater(new Runnable() {
 			public void run() {
Index: java/installer2/src/net/oni2/aeinstaller/backend/Paths.java
===================================================================
--- java/installer2/src/net/oni2/aeinstaller/backend/Paths.java	(revision 722)
+++ java/installer2/src/net/oni2/aeinstaller/backend/Paths.java	(revision 730)
@@ -36,5 +36,5 @@
 			return new File(wd);
 		} else {
-			String jarPath = SettingsManager.class.getProtectionDomain()
+			String jarPath = Paths.class.getProtectionDomain()
 					.getCodeSource().getLocation().getPath();
 			String decodedPath = null;
@@ -44,5 +44,5 @@
 				e.printStackTrace();
 			}
-			return new File(decodedPath).getParentFile();
+			return new File(decodedPath).getParentFile().getParentFile();
 		}
 	}
Index: java/installer2/src/net/oni2/aeinstaller/localization/Global.properties
===================================================================
--- java/installer2/src/net/oni2/aeinstaller/localization/Global.properties	(revision 722)
+++ java/installer2/src/net/oni2/aeinstaller/localization/Global.properties	(revision 730)
@@ -10,2 +10,5 @@
 offlineModeStartup.title=Offline mode
 offlineModeStartup.text=Connection to the ModDepot could not be established.\nAEI will run in offline mode.\nUpdates or installation of mods not already downloaded will not be possible.
+
+aeiUpdateAvailable.title=Update available!
+aeiUpdateAvailable.text=An update for the AEInstaller is available.\nPlease update now by selecting Yes.
