Index: /AE/Installer/trunk/source/installer.cpp
===================================================================
--- /AE/Installer/trunk/source/installer.cpp	(revision 506)
+++ /AE/Installer/trunk/source/installer.cpp	(revision 507)
@@ -1005,4 +1005,25 @@
 				}
 			}
+			else 
+			{
+				file.close();
+				continue;
+			}
+			file.close();
+						
+			file.open( ("packages" + install_iter->path().filename() + "/Mod_Info.cfg").c_str());
+			if (!file.fail())
+			{
+				ModPackage installedPackage = fileToModPackage(file, install_iter->path().filename());
+			}
+			else
+			{
+				file.close();
+				return UPDATE_THIRD_PARTY;
+			}
+			file.close();
+			if(((string)INSTALLER_VERSION).compare(updatePackage.installerVersion) < 1 && updatePackage.modStringVersion > installedPackage.modStringVersion) {
+				return UPDATE_THIRD_PARTY;
+			}
 		}
 	}
@@ -1266,4 +1287,77 @@
 }
 
+
+void CrawlPackages(string pathToUpdate, string strPathToPackages) {
+	try{
+		directory_iterator end;
+		for ( directory_iterator update_iter( pathToUpdate );
+			update_iter != end;
+			++update_iter )
+		{
+
+			ModPackage installedPackage, updatePackage;
+			string updateStr = update_iter->path().string() + "/Mod_Info.cfg";
+			if ( !boost::iequals(update_iter->path().filename(),"Edition")
+				&& !boost::iequals(update_iter->path().filename(),"Edition-patch")
+				&& is_directory( update_iter->path() ) 
+				&& exists( update_iter->path().string() + "/Mod_Info.cfg" ) ) 
+			{
+				bool update = 0;
+				fstream file;
+				file.open( (update_iter->path().string() + "/Mod_Info.cfg").c_str());	
+				if (!file.fail())
+				{
+					updatePackage = fileToModPackage(file, update_iter->path().filename());
+				}
+				else 
+				{
+					file.close();
+					continue;
+				}
+				file.close();
+				file.clear();
+				if(exists(strPathToPackages + "/" + update_iter->path().filename() + "/Mod_Info.cfg"))
+				{
+				file.open((strPathToPackages + "/" + update_iter->path().filename() + "/Mod_Info.cfg").c_str());
+				if (!file.fail())
+				{
+					installedPackage = fileToModPackage(file, update_iter->path().filename());
+					file.close();
+					if(updatePackage.modStringVersion > installedPackage.modStringVersion) {
+						update = 1;
+					}
+				}
+				else
+				{
+					file.close();
+					update = 1;
+				}
+				file.close();
+				}
+				else update = 1;
+				if(update) {
+					if(exists((path)(strPathToPackages +  "/" + updatePackage.modStringName)))
+						remove_all((path)(strPathToPackages +  "/" + updatePackage.modStringName));			
+					rename((path)(pathToUpdate + "/" + updatePackage.modStringName), (path)(strPathToPackages + "/" + updatePackage.modStringName));
+
+				}
+			}
+		}
+	}
+	catch (exception & ex) {
+		//	ex.what();
+		setStatusArea("Warning, handled exception: " + (string)ex.what());
+	}
+}
+
+
+bool ProcessThirdPartyUpdates() {
+CrawlPackages( "../updates",  "./packages");
+return true;
+	//	globalPackages = getPackages(); 
+//	refreshMods(globalInstalledMods);
+}
+
+
 bool ProcessAEUpdate(Install_info_cfg *currentAE, Install_info_cfg *updateAE, bool *installerJustUpdated)
 {
