Index: java/installer2/src/net/oni2/aeinstaller/backend/oni/XMLTools.java
===================================================================
--- java/installer2/src/net/oni2/aeinstaller/backend/oni/XMLTools.java	(revision 810)
+++ java/installer2/src/net/oni2/aeinstaller/backend/oni/XMLTools.java	(revision 924)
@@ -7,4 +7,5 @@
 import net.oni2.aeinstaller.backend.CaseInsensitiveFile;
 import net.oni2.aeinstaller.backend.Paths;
+import net.oni2.platformtools.PlatformInformation;
 import net.oni2.platformtools.applicationinvoker.ApplicationInvoker;
 import net.oni2.platformtools.applicationinvoker.ApplicationInvocationResult;
@@ -18,23 +19,23 @@
 
 	/**
-	 * Patch the given XML file with the given patch
+	 * Patch the XML files in the path with the patches in the other path
 	 * 
-	 * @param patch
-	 *            Patchfile
-	 * @param source
-	 *            File to patch
+	 * @param folderWithPatches
+	 *            Path containing patches to apply
+	 * @param folderWithXml
+	 *            Path containing XML files to patch
 	 * 
 	 * @return XMLTools output
 	 */
-	public static ApplicationInvocationResult patch(File patch, File source) {
+	public static ApplicationInvocationResult patch(File folderWithPatches,
+			File folderWithXml) {
 		Vector<String> params = new Vector<String>();
-		// xmlTools.exe patchfile -filename:PATCH -forceinfiles:TOPATCH
-		params.add("patchfile");
-		params.add("-filename:" + patch.getPath());
-		if (source != null)
-			params.add("-forceinfiles:" + source.getPath());
+		// xmlTools.exe --patch-files PATCH --force-target-files TOPATCH
+		params.add("--patch-files "
+				+ new File(folderWithPatches, "*.oni-patch").getPath());
+		params.add("--use-patch-filename " + folderWithXml.getPath());
 		ApplicationInvocationResult res = null;
 		try {
-			res = ApplicationInvoker.executeAndWait(EExeType.DOTNET, null,
+			res = ApplicationInvoker.executeAndWait(EExeType.OSBINARY, null,
 					getProgramFile(), params, false);
 		} catch (IOException e) {
@@ -49,6 +50,17 @@
 		File toolsPath = CaseInsensitiveFile.getCaseInsensitiveFile(
 				Paths.getEditionBasePath(), "Tools");
-		return CaseInsensitiveFile.getCaseInsensitiveFile(toolsPath,
-				"xmlTools.exe");
+		File xmlToolsPath = CaseInsensitiveFile.getCaseInsensitiveFile(
+				toolsPath, "XmlTools");
+		switch (PlatformInformation.getPlatform()) {
+			case WIN:
+				return CaseInsensitiveFile.getCaseInsensitiveFile(xmlToolsPath,
+						"XmlTools.exe");
+			case LINUX:
+			case MACOS:
+				return CaseInsensitiveFile.getCaseInsensitiveFile(xmlToolsPath,
+						"XmlTools");
+			default:
+		}
+		return null;
 	}
 }
Index: java/installer2/src/net/oni2/aeinstaller/backend/oni/management/Installer.java
===================================================================
--- java/installer2/src/net/oni2/aeinstaller/backend/oni/management/Installer.java	(revision 810)
+++ java/installer2/src/net/oni2/aeinstaller/backend/oni/management/Installer.java	(revision 924)
@@ -7,5 +7,4 @@
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.PrintWriter;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -480,29 +479,15 @@
 			log.logAppOutput(res, true);
 
-			// Create masterpatch file (containing calls to all individual
-			// patches)
-			File masterpatch = new File(levelFolderXML, "masterpatch.oni-patch");
-			PrintWriter masterpatchWriter = null;
-			try {
-				masterpatchWriter = new PrintWriter(masterpatch);
-			} catch (FileNotFoundException e) {
-				e.printStackTrace();
-			}
-			for (File patch : patches.get(level)) {
-				String patternWildcard = patch.getName();
-				patternWildcard = patternWildcard.substring(0,
-						patternWildcard.indexOf(".oni-patch"));
-				patternWildcard = patternWildcard + ".xml";
-				patternWildcard = patternWildcard.replace('-', '*');
-				File xmlFilePath = new File(levelFolderXML, patternWildcard);
-				masterpatchWriter
-						.println(String
-								.format("@COMMAND patchfile -filename:\"%s\" -forceinfiles:\"%s\"",
-										patch.getPath(), xmlFilePath.getPath()));
-			}
-			masterpatchWriter.close();
-			// Apply patches through masterpatch in levelFolderXML
-			res = XMLTools.patch(masterpatch, null);
-			log.logAppOutput(res, false);
+			// Apply patches in levelFolderXML
+			File lastFolder = null;
+			for (File f : patches.get(level)) {
+				File pathOfPatch = f.getParentFile();
+				if (!pathOfPatch.equals(lastFolder)) {
+					lastFolder = pathOfPatch;
+
+					res = XMLTools.patch(pathOfPatch, levelFolderXML);
+					log.logAppOutput(res, false);
+				}
+			}
 
 			// Create .oni files from XML
