public void uninstallModWorker() { InstalledMod installedMod = this.modManager.config.getInstalledModById(this.currentMod.id); string pluginsPath = this.modManager.config.amongUsPath + "\\BepInEx\\plugins"; foreach (string modDep in this.currentMod.dependencies) { if (modDep.Contains("Essentials")) { FileInfo[] files = new DirectoryInfo(pluginsPath).GetFiles(); foreach (FileInfo plugin in files) { if (plugin.Name.Contains("Essentials")) { this.modManager.utils.FileDelete(plugin.FullName); } } this.modManager.config.installedDependencies.Remove(modDep); } } foreach (string plugin in installedMod.plugins) { this.modManager.utils.FileDelete(pluginsPath + "\\" + plugin); } string assetsPath = this.modManager.config.amongUsPath + "\\Assets"; foreach (string asset in installedMod.assets) { this.modManager.utils.FileDelete(assetsPath + "\\" + asset); } this.modManager.config.installedMods.Remove(installedMod); this.modManager.config.update(); }
public bool installModWorker() { if (this.modManager.config.containsMod(this.currentMod.id) == false) { bool isCompat = this.installDependencies(); if (isCompat == false) { return(false); } string pluginsPath = this.modManager.config.amongUsPath + "\\BepInEx\\plugins"; bool foundZip = false; foreach (ReleaseAsset tab in this.modManager.currentRelease.Assets) { string fileName = tab.Name; if (fileName.Contains(".zip") && !fileName.Contains("2020.12.9s")) { foundZip = true; this.installZip(this.modManager.currentRelease, tab); return(true); } } if (foundZip == true) { return(true); } List <string> plugins = new List <string>(); foreach (ReleaseAsset tab in this.modManager.currentRelease.Assets) { string fileName = tab.Name; if (fileName.Contains(".dll")) { plugins.Add(fileName); this.installDll(this.modManager.currentRelease, tab); } } if (plugins.Count != 0) { InstalledMod newMod = new InstalledMod(this.currentMod.id, this.modManager.currentRelease.TagName, new List <string>(), plugins); this.modManager.config.installedMods.Add(newMod); this.modManager.config.update(); return(true); } } return(true); }
public void installZip(Release jObject, ReleaseAsset file) { string fileName = file.Name; string fileUrl = file.BrowserDownloadUrl; string fileTag = jObject.TagName; string tempPath = Path.GetTempPath() + "\\ModManager"; this.modManager.utils.DirectoryDelete(tempPath); Directory.CreateDirectory(tempPath); string zipPath = tempPath + "\\" + fileName; try { using (var client = new WebClient()) { client.DownloadFile(fileUrl, zipPath); } } catch { MessageBox.Show("Can't reach Mod Manager server.\nPlease verify your internet connection and try again !", "Mod Manager server unavailable", MessageBoxButtons.OK, MessageBoxIcon.Information); Environment.Exit(0); } this.modManager.utils.DirectoryDelete(tempPath + "\\BepInEx"); this.modManager.utils.DirectoryDelete(tempPath + "\\Assets"); this.modManager.utils.DirectoryDelete(tempPath + "\\mono"); this.modManager.utils.FileDelete(tempPath + "\\doorstop_config.ini"); this.modManager.utils.FileDelete(tempPath + "\\winhttp.dll"); ZipFile.ExtractToDirectory(zipPath, tempPath); // Install dll DirectoryInfo dirInfo = new DirectoryInfo(tempPath + "\\BepInEx\\plugins"); List <string> plugins = new List <string>(); if (dirInfo.Exists) { FileInfo[] files = dirInfo.GetFiles("*.dll"); foreach (FileInfo f in files) { if (!(f.Name.Contains("Essentials-") || f.Name.Contains("Reactor-"))) { this.modManager.utils.FileCopy(f.FullName, this.modManager.config.amongUsPath + "\\BepInEx\\plugins\\" + f.Name); plugins.Add(f.Name); } } } DirectoryInfo dirInfo2 = new DirectoryInfo(tempPath + "\\Assets"); List <string> assets = new List <string>(); if (dirInfo2.Exists) { FileInfo[] files = dirInfo2.GetFiles(); foreach (FileInfo f in files) { this.modManager.utils.FileCopy(f.FullName, this.modManager.config.amongUsPath + "\\Assets\\" + f.Name); assets.Add(f.Name); } } InstalledMod newMod = new InstalledMod(this.currentMod.id, fileTag, assets, plugins); this.modManager.config.installedMods.Add(newMod); this.modManager.config.update(); return; }