Example #1
0
        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();
        }
Example #2
0
        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);
        }
Example #3
0
        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;
        }