/**
		 * @public
		 *
		 * Erzeugt das File KnownModules
		 */
		public function BuildKnownModules() {
			$knownRepositories    = $this->GetKnownRepositories();
			$knownModules         = array();
			$repositoryVersions   = array();
			$changeList           = array();
			$requiredModules      = array();
			foreach ($knownRepositories as $repositoryIdx=>$repository) {
				echo 'Process Repsoitory '.$repository.PHP_EOL;
				$fileHandler         = new IPSFileHandler();
				$repository = IPSFileHandler::AddTrailingPathDelimiter($repository);
				$localAvailableModuleList      = sys_get_temp_dir().'\\AvailableModules.ini';
				$repositoryAvailableModuleList = $repository.'IPSLibrary\\config\\AvailableModules.ini';
				$fileHandler->CopyFiles(array($repositoryAvailableModuleList), array($localAvailableModuleList));

				$availableModules = parse_ini_file($localAvailableModuleList, true);
				foreach ($availableModules as $moduleName=>$moduleData) {
					$moduleProperties  = explode('|',$moduleData);
					$modulePath        = $moduleProperties[0];
					$moduleDescription = '';
					if (array_key_exists(1, $moduleProperties)) {
						$moduleDescription = $moduleProperties[1];
					}
					
					$localDownloadIniFile      = sys_get_temp_dir().'\\DownloadListfile.ini';
					$repositoryDownloadIniFile = $repository.'IPSLibrary\\install\\DownloadListFiles\\'.$moduleName.'_FileList.ini';
					$result = $fileHandler->CopyFiles(array($repositoryDownloadIniFile), array($localDownloadIniFile), false);
					if ($result===false) {
						echo '   '.$moduleName.'could NOT be found in '.$repository.PHP_EOL;
					} else {
						echo '   Processing '.$moduleName.' in '.$repository.PHP_EOL;
						$configHandler    = new IPSIniConfigHandler($localDownloadIniFile);
						$availableVersion = $configHandler->GetValue(IPSConfigHandler::SCRIPTVERSION);
						$changeListModule = $configHandler->GetValueDef(IPSConfigHandler::CHANGELIST, null, array());
						$requiredModulesOfModule = $configHandler->GetValueDef(IPSConfigHandler::REQUIREDMODULES, null, array());

						$replaceModule = false;
						if (!array_key_exists($moduleName, $knownModules)) {
							$replaceModule = true;
						} elseif ($versionHandler->CompareVersionsNewer($knownModules[$moduleName]['Version'], $availableVersion)) {
							$replaceModule = true;
						} elseif ($versionHandler->CompareVersionsEqual($knownModules[$moduleName]['Version'], $availableVersion)
								  and $versionHandler->IsModuleInstalled($moduleName)) {
							$versionHandler   = new IPSFileVersionHandler($moduleName);
							if ($versionHandler->GetModuleRepository()==$repository) {
								$replaceModule = true;
							}
						} else {
						}

						if ($replaceModule) {
							$knownModules[$moduleName]['Version']     = $availableVersion;
							$knownModules[$moduleName]['Repository']  = $repository;
							$knownModules[$moduleName]['Description'] = $moduleDescription;
							$knownModules[$moduleName]['Path']        = $modulePath;
							if ($this->IsModuleInstalled($moduleName)) {
								$versionHandler   = new IPSFileVersionHandler($moduleName);
							}
							$knownModules[$moduleName]['LastRepository'] = $versionHandler->GetModuleRepository();
							$changeList[$moduleName] = $changeListModule;
							$requiredModules[$moduleName] = $requiredModulesOfModule;
						}
						$repositoryVersions[$moduleName][$repository] = $availableVersion;
					}
				}

			}

			$fileContent = '';
			foreach ($knownModules as $moduleName=>$moduleData) {
				$fileContent .= '['.$moduleName.']'.PHP_EOL;
				foreach ($moduleData as $property=>$value) {
					// "//192.168..." not handled correct in case of usage ""
					if ($property=='Repository') {
						$fileContent .= $property.'='.$value.''.PHP_EOL;
					} else {
						$fileContent .= $property.'="'.$value.'"'.PHP_EOL;
					}
				}
			}
			file_put_contents($this->fileNameKnownModules, $fileContent);

			$fileContent = '';
			foreach ($repositoryVersions as $moduleName=>$moduleData) {
				$fileContent .= '['.$moduleName.']'.PHP_EOL;
				foreach ($moduleData as $property=>$value) {
					$fileContent .= $property.'="'.$value.'"'.PHP_EOL;
				}
			}
			file_put_contents($this->fileNameRepositoryVersions, $fileContent);

			$fileContent = '';
			foreach ($changeList as $moduleName=>$moduleData) {
				$fileContent .= '['.$moduleName.']'.PHP_EOL;
				foreach ($moduleData as $property=>$value) {
					$fileContent .= $property.'="'.$value.'"'.PHP_EOL;
				}
			}
			file_put_contents($this->fileNameChangeList, $fileContent);

			$fileContent = '';
			foreach ($requiredModules as $moduleName=>$moduleData) {
				$fileContent .= '['.$moduleName.']'.PHP_EOL;
				foreach ($moduleData as $property=>$value) {
					$fileContent .= $property.'="'.$value.'"'.PHP_EOL;
				}
			}
			file_put_contents($this->fileNameRequiredModules, $fileContent);

			$this->LoadFileKnownModules();
			$this->LoadFileRepositoryVersions();
			$this->LoadFileChangeList();
			$this->LoadFileRequiredModules();
		}
	function SearchLastRepositories() {
		IPSUtils_Include ("IPSModuleManager.class.php", "IPSLibrary::install::IPSModuleManager");
		$moduleManager = $_IPS['MODULEMANAGER'];
		$infos    = $moduleManager->GetModuleInfos();
		$modules  = $moduleManager->GetInstalledModules();

		//print_r($modules);
		foreach ($modules as $module=>$data) {
			$downloadFile = IPS_GetKernelDir().'scripts\\IPSLibrary\\install\\DownloadListFiles\\'.$module.'_FileList.ini';
			$configFile   = IPS_GetKernelDir().'scripts\\IPSLibrary\\install\\InitializationFiles\\'.$module.'.ini';
			if (!file_exists($downloadFile) or !file_exists($configFile)) {
				$moduleManager->LogHandler()->Debug('Remove Module "'.$module.'" from InstalledModules (No Ini Files found)');
				$versionHandler = new IPSFileVersionHandler($module);
				$versionHandler->DeleteModule();
			} else {
				$moduleManager  = new IPSModuleManager($module, '', sys_get_temp_dir(), true);
				$versionHandler = $moduleManager->VersionHandler();
				$repository     = $versionHandler->GetModuleRepository();

				// Search current Repository
				if ($repository=='') {
					$files = scandir(IPS_GetKernelDir().'\\logs\\', 1);
					foreach ($files as $file) {
						// Found LogFile
						if ($repository<>'') {
							break;
						} elseif (strpos($file,'IPSModuleManager_')!==false) {
							$fileContent = file_get_contents(IPS_GetKernelDir().'\\logs\\'.$file);
							$lines = explode(PHP_EOL, $fileContent);
							$line1 = '';
							$line2 = '';
							if (count($lines)>0) {
								$line1 = $lines[0];
							}
							if (count($lines)>1) {
								$line2 = $lines[1];
							}

							// Found LogFile for Module
							if (   strpos($line1,'Set Version '.$module.'=')!==false
							    or strpos($line2,''.$module.'_FileList.ini')!==false) {
								//echo 'found '.$module; //return;

								// Search Repository
								foreach ($lines as $idx=>$line) {

									// Found Repository
									if (strpos($line,' --> '.IPS_GetKernelDir().'scripts\\IPSLibrary\\install\\DownloadListFiles\\'.$module.'_FileList.ini')!==false) {
										$start = strpos($line,'Copy ')+5;
										$end   = strpos($line,'IPSLibrary',strpos($line,'IPSLibrary')+1);
										$repository = substr($line, $start, $end-$start);
										break;
									}
								}
							}
						}
					}
					$moduleManager->LogHandler()->Debug('Add Last Repository: '.$module.'='.$repository);
					$versionHandler->SetModuleRepository($repository);
				}
				echo $module.'='.$repository.PHP_EOL;
			}
		}
	}