Index: /AE/Installer/trunk/source/installer.cpp
===================================================================
--- /AE/Installer/trunk/source/installer.cpp	(revision 542)
+++ /AE/Installer/trunk/source/installer.cpp	(revision 543)
@@ -1275,4 +1275,5 @@
 bool ProcessAEUpdate(Install_info_cfg *currentAE, Install_info_cfg *updateAE, bool *installerJustUpdated)
 {
+	try {
 	fstream file;
 	string line;
@@ -1294,10 +1295,11 @@
 #else
 	string strOniApp = "Oni.app";
-#endif
 	bool needNewTrashDir = false;
+#endif
+	
 	bool readingVerAndDate = false;
 	
 #ifdef WIN32
-	string strTrashDir = "Trash\\"; // string unused in Windows because files are simply deleted
+	//string strTrashDir = "Trash\\"; // string unused in Windows because files are simply deleted
 #else
 	FILE *fUserName = NULL;
@@ -1334,4 +1336,5 @@
 				tokenize(tokens[2], updateStarted, "-");
 		}
+#ifndef WIN32
 		if (updateStarted.capacity() < 3)
 			needNewTrashDir = true;
@@ -1343,4 +1346,5 @@
 				needNewTrashDir = true;
 		}
+#endif
 	}
 #ifndef WIN32
@@ -1360,5 +1364,9 @@
 	{
 		if (exists(strOniApp))
+#ifdef WIN32
+			remove((path)strOniApp);
+#else
 			rename((path)strOniApp, (path)(strTrashDir + strOniApp));
+#endif
 		rename((path)(strPathToEUFN + strOniApp), (path)strOniApp);
 	}
@@ -1368,5 +1376,9 @@
 		{
 			if (exists(strOniSplit))
+#ifdef WIN32
+				remove((path)strOniSplit);
+#else
 				rename((path)strOniSplit, (path)(strTrashDir + strOniSplit));
+#endif
 			rename((path)(strPathToEUFNInstall + strOniSplit), (path)strOniSplit);
 		}
@@ -1378,5 +1390,5 @@
 		{
 			if (exists(("../" + strDaodan)))
-				rename((path)("../" + strDaodan), (path)(strTrashDir + strDaodan));
+				remove((path)("../" + strDaodan));
 			rename((path)(strPathToEUFN + strDaodan), (path)("../" + strDaodan));
 		}
@@ -1387,7 +1399,7 @@
 		{
 			if (exists((path)strWinGUI))
-				rename((path)strWinGUI, (path)(strTrashDir + strWinGUI));
+				remove((path)strWinGUI);
 			if (exists(strWinGUILang))
-				rename((path)strWinGUILang, (path)(strTrashDir + strWinGUILang));
+				remove((path)strWinGUILang);
 			rename((path)(strPathToEUFNInstall + strWinGUI), (path)strWinGUI);
 			rename((path)(strPathToEUFNInstall + strWinGUILang), (path)strWinGUILang);
@@ -1422,6 +1434,8 @@
 			{
 				aParentPath = aParentPath + thePath.substr(lastPos, curPos - lastPos);
+#ifndef WIN32
 				if (!exists(strTrashDir + aParentPath))
 					create_directory(strTrashDir + aParentPath);
+#endif
 				lastPos = curPos + 1;
 				curPos = thePath.find("/", lastPos);
@@ -1468,12 +1482,19 @@
 	{
 		if (exists(strPathToPackages + strGlobalize + *iter))
+#ifdef WIN32
+			remove((path)(strPathToPackages + strGlobalize + *iter));
+#else
 			rename((path)(strPathToPackages + strGlobalize + *iter), (path)(strTrashDir + *iter));
+#endif
 		rename((path)(strPathToEUFNPackages + strGlobalize + *iter), (path)(strPathToPackages + strGlobalize + *iter));
 	}
 	
 	// Clean up after ourselves, trashing any packages or programs in the update package that are not newer than the current AE
+#ifdef WIN32
+	remove((path)strPathToEUFN);
+#else
 	create_directory(strTrashDir + "Unneeded update files");
 	rename((path)strPathToEUFN, (path)(strTrashDir + "Unneeded update files/" + strEUFN));
-	
+#endif
 	// Write to log that we are finished with update
 	ptime end_time(second_clock::local_time());
@@ -1496,4 +1517,11 @@
 	TheWindow->OnRefreshButtonClick( e );
 	return true;
+	}
+	catch (exception & ex)
+	{
+		setStatusArea("Warning, handled exception: " + (string)ex.what());
+		return false;
+	}
+	
 }
 
