// Cell CONTENT clicked (not just cell, the actual cell content) // This is used for the checkbox enabled toggles. private void _packageList_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e?.ColumnIndex != 4) { return; } var package = GetPackageFromRow(e); if (package == null) { return; } //var cell = _packageList.Rows[e.RowIndex].Cells[4]; if (!package.IsDisabled) { LocalPackageManager.TryDisablePackage(package.GUID); } else { LocalPackageManager.TryEnablePackage(package.GUID); } //RefreshRow(e.RowIndex, package); }
private static void Cmd_DisableAll(string[] obj) { if (!LocalPackageManager.s_enabledPackages.Any()) { return; } LocalPackageManager.DisableAllPackages(); }
internal static void Cmd_RefreshModList(params string[] args) { if (!Folders.IsCurrentOutwardPathValid()) { Console.WriteLine("You need to set the Outward path first!"); return; } WebManifestManager.UpdateWebManifests(); LocalPackageManager.RefreshInstalledPackages(); }
public WebFacade(AppInfo appInfo, PackageDownloadManager packageDownloadManager, PackageDataValidator validator, LocalPackageManager localPackageManager, IPeerRegistry peerRegistry, IPackageRegistry packageRegistry, InstanceHash instanceHash, LongRunningTasksManager tasks, PeersCluster peersCluster) { this.appInfo = appInfo ?? throw new ArgumentNullException(nameof(appInfo)); this.packageDownloadManager = packageDownloadManager ?? throw new ArgumentNullException(nameof(packageDownloadManager)); this.validator = validator ?? throw new ArgumentNullException(nameof(validator)); this.localPackageManager = localPackageManager ?? throw new ArgumentNullException(nameof(localPackageManager)); this.peerRegistry = peerRegistry ?? throw new ArgumentNullException(nameof(peerRegistry)); this.packageRegistry = packageRegistry ?? throw new ArgumentNullException(nameof(packageRegistry)); this.instanceHash = instanceHash ?? throw new ArgumentNullException(nameof(instanceHash)); this.tasks = tasks ?? throw new ArgumentNullException(nameof(tasks)); this.peersCluster = peersCluster ?? throw new ArgumentNullException(nameof(peersCluster)); }
internal static void Cmd_Enable(params string[] args) { if (!Folders.IsCurrentOutwardPathValid()) { Console.WriteLine("You need to set the Outward path first!"); return; } foreach (var guid in args) { LocalPackageManager.TryEnablePackage(guid); } }
/// <summary> /// Refresh all packages, online and local. Optionally re-download new manifests as well, if <paramref name="refreshOnline"/> is <see langword="true"/> /// </summary> public static void RefreshAllPackages(bool refreshOnline = false) { if (refreshOnline) { WebManifestManager.UpdateWebManifests(); } else { WebManifestManager.LoadWebManifestCache(); } // refresh installed packages LocalPackageManager.RefreshInstalledPackages(); }
internal static void Cmd_UninstallAll(params string[] args) { if (!Folders.IsCurrentOutwardPathValid()) { Console.WriteLine("You need to set the Outward path first!"); return; } for (int i = LocalPackageManager.s_enabledPackages.Count - 1; i >= 0; i--) { var pkg = LocalPackageManager.s_enabledPackages.ElementAt(i).Value; LocalPackageManager.TryUninstallPackage(pkg.GUID); } }
internal void RefreshBepInExPanel() { if (!Folders.IsCurrentOutwardPathValid()) { this._bepPanel.Visible = false; this._uninstallButton.Visible = false; MefinoGUI.DisableFeaturePages(); return; } this._bepPanel.Visible = true; if (BepInExHandler.IsBepInExUpdated()) { this._bepStatus.Text = "Installed"; this._bepStatus.ForeColor = Color.LightGreen; this._bepInstallButton.Visible = false; LocalPackageManager.RefreshInstalledPackages(); MefinoGUI.EnabledFeaturePages(); Folders.CheckOutwardMefinoInstall(); this._uninstallButton.Visible = true; } else { this._uninstallButton.Visible = false; MefinoGUI.DisableFeaturePages(); switch (BepInExHandler.s_lastInstallStateResult) { case InstallState.Outdated: this._bepStatus.Text = $"Outdated"; this._bepStatus.ForeColor = Color.DarkKhaki; this._bepInstallButton.Visible = true; this._bepInstallButton.Text = $"Update to {BepInExHandler.s_latestBepInExVersion}"; break; case InstallState.NotInstalled: this._bepStatus.Text = "Not installed"; this._bepStatus.ForeColor = Color.IndianRed; this._bepInstallButton.Visible = true; this._bepInstallButton.Text = $"Install BepInEx {BepInExHandler.s_latestBepInExVersion}"; break; } } }
public AppInstanceBootstrapper( PackageDownloadManager packageDownloadManager, UdpPeerDiscovery udpPeerDiscovery, IPeerRegistry peerRegistry, IPackageRegistry packageRegistry, LocalPackageManager localPackageManager, PeersCluster peersCluster ) { PackageDownloadManager = packageDownloadManager ?? throw new ArgumentNullException(nameof(packageDownloadManager)); UdpPeerDiscovery = udpPeerDiscovery ?? throw new ArgumentNullException(nameof(udpPeerDiscovery)); PeerRegistry = peerRegistry ?? throw new ArgumentNullException(nameof(peerRegistry)); PackageRegistry = packageRegistry ?? throw new ArgumentNullException(nameof(packageRegistry)); LocalPackageManager = localPackageManager ?? throw new ArgumentNullException(nameof(localPackageManager)); PeersCluster = peersCluster ?? throw new ArgumentNullException(nameof(peersCluster)); }
/// <summary> /// True if there are manual changes and we overwrote the profile, otherwise false. /// If true, it will also set that as the active profile.</summary> private static bool DoManualChangesOverwrite(MefinoProfile active) { if (IsProfileDifferentToEnabledPackages(active)) { List <string> uninstalled = new List <string>(); foreach (var pkg in active.packages) { if (LocalPackageManager.TryGetInstalledPackage(pkg) == null) { uninstalled.Add(pkg); } } if (uninstalled.Any()) { var msg = ""; foreach (var entry in uninstalled) { msg += $"\n{entry}"; } var msgResult = MessageBox.Show($"The following packages from the profile '{active.name}' are no longer installed:" + $"\n{msg}" + $"\n\n" + $"Do you want to reinstall them?", "Missing packages!", MessageBoxButtons.YesNo); if (msgResult == DialogResult.Yes) { foreach (var entry in uninstalled) { LocalPackageManager.TryInstallWebPackage(entry, true); } } } active.packages.Clear(); active.packages.AddRange(LocalPackageManager.s_enabledPackages.Keys); SetChangesSinceSave(true); SetActiveProfile(active, true); return(true); } return(false); }
private void _uninstallButton_Click(object sender, EventArgs e) { ProfileManager.SavePrompt(false); var result = OutwardHelper.UninstallFromOutward(); if (result == DialogResult.Cancel) { return; } Folders.IsCurrentOutwardPathValid(out InstallState state); SetOtwPathResult(state); LocalPackageManager.RefreshInstalledPackages(); LauncherPage.Instance.RebuildPackageList(); }
private static void OnFileSystemChanged(object sender, FileSystemEventArgs e) { if (IOHelper.MefinoDoingIO) { return; } // Console.WriteLine("Manual folder IO detected"); LocalPackageManager.RefreshInstalledPackages(); if (ProfileManager.IsProfileDifferentToEnabledPackages()) { ProfileManager.SetChangesSinceSave(true); } LauncherPage.Instance?.Invoke(new MethodInvoker(LauncherPage.Instance.RebuildPackageList)); }
internal static void Cmd_Install(params string[] args) { if (!Folders.IsCurrentOutwardPathValid()) { Console.WriteLine("You need to set the Outward path first!"); return; } foreach (var guid in args) { if (WebManifestManager.s_webManifests.ContainsKey(guid)) { LocalPackageManager.TryInstallWebPackage(guid); } else { Console.WriteLine($"Could not find package by name '{guid}', maybe need to refresh the list?"); } } }
internal PackageManifest GetPackageFromRow(DataGridViewCellEventArgs e) { if (e == null || e.ColumnIndex < 0 || e.RowIndex < 0) { return(null); } var row = _packageList.Rows[e.RowIndex]; var guid = $"{row.Cells[2].Value} {row.Cells[0].Value}"; var package = LocalPackageManager.TryGetInstalledPackage(guid); if (package == null) { Console.WriteLine($"ERROR! could not get package: '{package}'"); return(null); } return(package); }
public static MefinoProfile FromJson(string jsonString) { MefinoProfile ret = null; try { var json = JsonReader.Parse(jsonString); ret = new MefinoProfile { name = json[nameof(name)].AsString }; if (json[nameof(packages)].AsJsonArray is JsonArray array) { ret.packages.AddRange(array.Select(it => it.AsString)); } // verify all GUIDs. for (int i = ret.packages.Count - 1; i >= 0; i--) { var guid = ret.packages[i]; if (!WebManifestManager.s_webManifests.ContainsKey(guid) && LocalPackageManager.TryGetInstalledPackage(guid) == null) { // GUID in package list does not exist, locally or online! ret.packages.RemoveAt(i); } } return(ret); } catch (Exception ex) { Console.WriteLine("Exception parsing Profile from json!"); Console.WriteLine(ex); return(ret); } }
/// <summary> /// Enable all packages in this profile, and disable all other packages. /// </summary> public void EnableProfile() { if (this.packages == null || this.packages.Count == 0) { if (LocalPackageManager.s_enabledPackages.Any()) { LocalPackageManager.DisableAllPackages(); } return; } // Try enable all packages (does nothing if already OK) // its possible our 'packages' list will change during this process, so copy it now. //var copy = packages.ToList(); List <string> missing = new List <string>(); for (int i = 0; i < packages.Count; i++) { var pkg = packages[i]; if (LocalPackageManager.TryGetInstalledPackage(pkg) == null) { missing.Add(pkg); } else { if (!LocalPackageManager.TryEnablePackage(pkg)) { LocalPackageManager.TryDisablePackage(pkg, true); packages.Remove(pkg); } } } if (missing.Any()) { string miss = ""; foreach (var entry in missing) { miss += $"\n{entry}"; } var msgResult = MessageBox.Show($"The following packages in your profile are missing and need to be re-installed:" + $"\n{miss}" + $"\n\n" + $"Do you want to re-install them?", "Missing packages!", MessageBoxButtons.YesNo); if (msgResult == DialogResult.Yes) { foreach (var entry in missing) { LocalPackageManager.TryInstallWebPackage(entry); } } } // Disable currently enabled packages which are not in this profile if (LocalPackageManager.s_enabledPackages.Any()) { for (int i = LocalPackageManager.s_enabledPackages.Count - 1; i >= 0; i--) { var pkg = LocalPackageManager.s_enabledPackages.ElementAt(i); if (!packages.Any(it => it == pkg.Key)) { LocalPackageManager.TryDisablePackage(pkg.Key, true); } } } }
public PackageRegistry(ILoggerFactory loggerFactory, LocalPackageManager localPackageManager) { logger = (loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory))).CreateLogger <PackageRegistry>(); this.localPackageManager = localPackageManager ?? throw new ArgumentNullException(nameof(localPackageManager)); Init(); }