diff --git a/build/Updater.exe b/build/Updater.exe
new file mode 100644
index 0000000000000000000000000000000000000000..f3aef3a80f4815bcaec31389efc23eaf2a383aba
Binary files /dev/null and b/build/Updater.exe differ
diff --git a/build/Updater.jar b/build/Updater.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b868472f67e3d52550ab77618d3bde436a074a2b
Binary files /dev/null and b/build/Updater.jar differ
diff --git a/build/Updater.xml b/build/Updater.xml
new file mode 100644
index 0000000000000000000000000000000000000000..19a89d2aa14992e23ca0831b7ead66097063c928
--- /dev/null
+++ b/build/Updater.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launch4jConfig>
+  <dontWrapJar>false</dontWrapJar>
+  <headerType>gui</headerType>
+  <jar>C:\Programmierung\eclipse\workspace\BudgetMaster\build\Updater.jar</jar>
+  <outfile>C:\Programmierung\eclipse\workspace\BudgetMaster\build\Updater.exe</outfile>
+  <errTitle></errTitle>
+  <cmdLine></cmdLine>
+  <chdir>.</chdir>
+  <priority>normal</priority>
+  <downloadUrl>http://java.com/download</downloadUrl>
+  <supportUrl></supportUrl>
+  <stayAlive>false</stayAlive>
+  <restartOnCrash>false</restartOnCrash>
+  <manifest></manifest>
+  <icon></icon>
+  <classPath>
+    <mainClass>application.Main</mainClass>
+    <cp>.</cp>
+  </classPath>
+  <jre>
+    <path></path>
+    <bundledJre64Bit>false</bundledJre64Bit>
+    <bundledJreAsFallback>false</bundledJreAsFallback>
+    <minVersion>1.8.0</minVersion>
+    <maxVersion></maxVersion>
+    <jdkPreference>preferJre</jdkPreference>
+    <runtimeBits>64/32</runtimeBits>
+  </jre>
+</launch4jConfig>
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/updater/Updater.java b/src/de/deadlocker8/budgetmaster/logic/updater/Updater.java
index f969d027697615e491abf257f7c84bcf70ca5531..68370afb9da695cd24f9892dc5a53458b58f1c03 100644
--- a/src/de/deadlocker8/budgetmaster/logic/updater/Updater.java
+++ b/src/de/deadlocker8/budgetmaster/logic/updater/Updater.java
@@ -18,7 +18,10 @@ import com.google.gson.JsonParser;
 
 import de.deadlocker8.budgetmaster.logic.utils.Strings;
 import logger.Logger;
+import nativeWindows.NativeLauncher;
 import tools.Localization;
+import tools.OS;
+import tools.OS.OSType;
 import tools.PathUtils;
 
 public class Updater
@@ -113,10 +116,16 @@ public class Updater
 		return null;
 	}
 	
-	private void downloadLatestUpdater() throws IOException
+	private void downloadLatestUpdater(OSType osType) throws IOException
 	{
-		//download into temp directory and file					
-		Path target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/Updater.jar");			
+		//download into temp directory and file				
+		String ending = "jar";
+		if(osType == OSType.Other.Windows)
+		{
+			ending = "exe";
+		}		
+		
+		Path target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/Updater." + ending);			
 		download(BUILD_FOLDER + "Updater.jar", target);		
 	}
 	
@@ -126,10 +135,9 @@ public class Updater
 	}
 	
 	
-	public void downloadLatestVersion() throws IOException
+	public void downloadLatestVersion() throws Exception
 	{
 		File currentExecutable = getCurrentExecutableName();
-		File currentFolder = currentExecutable.getParentFile();
 		String currentFileName = currentExecutable.getName();
 		String fileEnding;
 		
@@ -148,22 +156,35 @@ public class Updater
 		PathUtils.checkFolder(new File(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER)));
 		
 		//download latest updater.jar
-		downloadLatestUpdater();
+		//DEBUG	
+//		downloadLatestUpdater(OS.getType());		
 		
 		//download into temp directory and file
+		Path target;
 		if(fileEnding.equalsIgnoreCase("exe"))
 		{			
-			Path target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/update_BudgetMaster.exe");			
+			target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/update_BudgetMaster.exe");			
 			download(BUILD_FOLDER + "BudgetMaster.exe", target);
 		}
 		else
 		{
-			Path target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/update_BudgetMasterClient.jar");			
+			target = Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/update_BudgetMasterClient.jar");			
 			download(BUILD_FOLDER + "BudgetMasterClient.jar", target);
 		}
 		
-		//TODO start upater with params
-		//--> move temp jar/exe to currentFolder with currentFileName
+		String params = target.toString().replace(" ", "%20") + " " + currentExecutable.getAbsolutePath().replace(" ", "%20") + " "  + Localization.getString(Strings.APP_NAME);
+		Logger.debug(params);		
+	
+		if(OS.getType() == OSType.Windows)
+		{
+			NativeLauncher.executeAsAdministrator(Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/Updater.exe").toString(), params);
+		}
+		else
+		{
+			ProcessBuilder pb = new ProcessBuilder("java", "-jar", Paths.get(PathUtils.getOSindependentPath() + Localization.getString(Strings.FOLDER) + "/Updater.jar").toString(), target.toString().replace(" ", "%20"), currentExecutable.toString().replace(" ", "%20"), Localization.getString(Strings.APP_NAME)); 				
+			pb.start();	
+		}
+		System.exit(0);
 	}
 	
 	public void download(String url, Path target) throws IOException
diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
index c018357fb1b0dc181e0341a93ecec7debe89efe8..b0b1939bf35d461331d72e07786d8591f53d46d4 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Strings.java
@@ -138,6 +138,9 @@ public class Strings
     public static final String INFO_TITLE_UPDATE_AVAILABLE = "info.title.update.available";
     public static final String INFO_TEXT_UPDATE_AVAILABLE = "info.text.update.available";
     public static final String INFO_TEXT_UPDATE_AVAILABLE_NOW = "info.text.update.available.now";
+    public static final String INFO_TITLE_START_AFTER_UPDATE = "info.title.start.after.update";
+    public static final String INFO_HEADER_TEXT_START_AFTER_UPDATE = "info.header.text.start.after.update";
+    public static final String INFO_TEXT_START_AFTER_UPDATE = "info.text.start.after.update";
         
     //WARNING
     public static final String WARNING_ENDDATE_BEFORE_STARTDATE = "warning.enddate.before.startdate";
diff --git a/src/de/deadlocker8/budgetmaster/main/Main.java b/src/de/deadlocker8/budgetmaster/main/Main.java
index ba19acfd72f8c788be3ebb1929488dd50f60b86e..68dec6f3fa6cff1e32a8786b3672fac7afe95529 100644
--- a/src/de/deadlocker8/budgetmaster/main/Main.java
+++ b/src/de/deadlocker8/budgetmaster/main/Main.java
@@ -43,7 +43,7 @@ public class Main extends Application
 			
 			Scene scene = new Scene(root, 450, 230);
 
-			((SplashScreenController)loader.getController()).init(stage, icon);
+			((SplashScreenController)loader.getController()).init(stage, icon, getParameters().getNamed().get("update") != null);
 
 			stage.setResizable(false);			
 			stage.getIcons().add(icon);
diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
index 3a8c9004931bb7fd7056e05ddd957d5315e27273..630f6939883ed33102c5f59405e25d9b95c0311e 100644
--- a/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
+++ b/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties
@@ -1,6 +1,6 @@
 # DEFAULT
 app.name=BudgetMaster
-version.code=9
+version.code=3
 version.name=1.5.0_alpha
 version.date=23.08.17
 author=Robert Goldmann
@@ -135,6 +135,9 @@ info.text.language.changed.restart.later=Sp
 info.title.update.available=Update verf�gbar
 info.text.update.available=Ein Update ist verf�gbar.\nNeue Version: {0}\n\n�nderungen:\n{1}
 info.text.update.available.now=Jetzt updaten
+info.title.start.after.update=Update erfolgreich
+info.header.text.start.after.update=BudgetMaster wurde erfolgreich auf Version {0} aktualisiert
+info.text.start.after.update=Hinweis: Der BudgetMasterServer muss manuell von dir geupdated werden!
 
 # WARNING
 warning.enddate.before.startdate=Das Enddatum darf zeitlich nicht vor dem Startdatum liegen.
diff --git a/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties b/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
index eeda9a8d506e74c321a3c593e03b88836e94abb9..16a50847fd91a816d8312d9272dd6059fdf79757 100644
--- a/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
+++ b/src/de/deadlocker8/budgetmaster/resources/languages/_en.properties
@@ -135,6 +135,9 @@ info.text.language.changed.restart.later=Restart Later
 info.title.update.available=Update available
 info.text.update.available=An update is available.\nNew version: {0}\n\nChanges:\n{1}
 info.text.update.available.now=Update Now
+info.title.start.after.update=Update successfull
+info.header.text.start.after.update=Successfully updated BudgetMaster to version {0}
+info.text.start.after.update=Note: You have to update the BudgetMasterServer manually!
 
 # WARNING
 warning.enddate.before.startdate=The end date can not be earlier than the start date.
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
index e6be8ee3043cc89465906dcfa5ba59bea4d15220..6c3a9b295b52b36236233145737fc769ecd88c42 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
@@ -375,9 +375,7 @@ public class Controller
 				
 				Optional<ButtonType> result = alert.showAndWait();						
 				if (result.get() == buttonTypeOne)
-				{		
-					//TODO download latest updater first
-				
+				{					
 					Stage modalStage = Helpers.showModal(Localization.getString(Strings.TITLE_MODAL), Localization.getString(Strings.LOAD_UPDATE), stage, icon);
 					
 					Worker.runLater(() -> {
@@ -391,7 +389,7 @@ public class Controller
 								}							
 							});
 						}
-						catch(IOException ex)
+						catch(Exception ex)
 						{
 							Logger.error(ex);
 							Platform.runLater(() -> {
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
index 57c1e1190e9859ce75056ae8dd843cf57a41d467..30edabc73c34c988ed7c835dab01d2beb23a42ae 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
@@ -331,7 +331,7 @@ public class SettingsController
 					
 					Scene scene = new Scene(root, 450, 230);
 
-					((SplashScreenController)loader.getController()).init(Main.primaryStage, icon);
+					((SplashScreenController)loader.getController()).init(Main.primaryStage, icon, false);
 
 					Main.primaryStage.setResizable(false);			
 					Main.primaryStage.getIcons().add(icon);
diff --git a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
index 2279f648c1a25c02fd56bcbfd0c9644bafa8574c..810442be8db65abf86b50b66f573b35249dcd4d0 100644
--- a/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
@@ -41,7 +41,7 @@ public class SplashScreenController
 	private Settings settings;
 	private boolean isFirstStart;
 
-	public void init(Stage stage, Image icon)
+	public void init(Stage stage, Image icon, boolean isStartingAfterUpdate)
 	{
 		this.stage = stage;
 		this.icon = icon;
@@ -61,6 +61,20 @@ public class SplashScreenController
 			}
 		});
 		
+		if(isStartingAfterUpdate)
+		{
+			Platform.runLater(() -> {
+				AlertGenerator.showAlert(AlertType.INFORMATION, 
+										Localization.getString(Strings.INFO_TITLE_START_AFTER_UPDATE), 
+										Localization.getString(Strings.INFO_HEADER_TEXT_START_AFTER_UPDATE, Localization.getString(Strings.VERSION_NAME)),
+										Localization.getString(Strings.INFO_TEXT_START_AFTER_UPDATE),
+										icon, 
+										stage, 
+										null, 
+										false);
+			});
+		}
+		
 		settings = FileHelper.loadSettings();		
 		
 		if(settings == null)