private static void Start(string identifier, bool waitForExit) { RepoManagement.GetReposFromDisk(); App[] apps = AppExtras.FindApps(identifier); if (apps.Length == 0) { Console.WriteLine("Package not found."); } else { App tmp = apps.First(); if (tmp.Runnable) { Console.WriteLine($"Starting {tmp.Name}"); Process tmp1 = AppExtras.RunApp(tmp); if (waitForExit) { tmp1.WaitForExit(); } } else { Console.WriteLine($"{tmp.Name} is not runnable"); } } Console.WriteLine("Done!"); }
public MainForm() { InitializeComponent(); _tasks = new List <IAppTask>(); _help = MainForm_HelpRequested; HelpRequested += _help; filterBox.DataSource = Enum.GetValues(typeof(Status)); if (Program.Online) { RepoManagement.FetchRepos(); } else { MessageBox.Show("Starting in offline mode!"); controls_reload.Enabled = false; filterBox.Enabled = false; filterBox.SelectedIndex = 2; } Program.SetSplash(8, "Reloading data"); ReloadElements(); if (!Directory.Exists(PathTool.AppsPath)) { Directory.CreateDirectory(PathTool.AppsPath); } }
private static void Show(string identifier) { RepoManagement.GetReposFromDisk(); App[] apps = AppExtras.FindApps(identifier); if (apps.Length == 0) { Console.WriteLine("Package not found."); } else { Console.WriteLine(apps.First()); } }
private static void List() { RepoManagement.GetReposFromDisk(); Console.WriteLine(GlobalVariables.Apps.Where(s => (s.Value.Status & Status.Installed) == Status.Installed) .ToStringTable(new[] { "Name", "State", "Guid" }, u => u.Value.Name, u => u.Value.Local ? "Local" : (u.Value.Status & Status.Updatable) == Status.Updatable ? "Updatable" : "None", u => u.Key)); }
private static void Install(bool noPrep) { WebClient client = new WebClient(); Console.WriteLine("Downloading metadata"); UpdateCheck.Reload("https://github.com/JFronny/UpTool2/releases/latest/download/meta.xml"); Console.WriteLine("Downloading binary"); byte[] dl = client.DownloadData(UpdateCheck.App); Console.WriteLine("Verifying integrity"); using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider()) { string pkgHash = BitConverter.ToString(sha256.ComputeHash(dl)).Replace("-", string.Empty) .ToUpper(); if (pkgHash != UpdateCheck.AppHash) { throw new Exception($@"The hash is not equal to the one stored in the repo: Package: {pkgHash} Online: {UpdateCheck.AppHash}"); } } Console.WriteLine("Extracting"); if (Directory.Exists(PathTool.GetRelative("Install"))) { foreach (string file in Directory.GetFiles(PathTool.GetRelative("Install"))) { File.Delete(file); } foreach (string dir in Directory.GetDirectories(PathTool.GetRelative("Install"))) { if (Path.GetFileName(dir) != "tmp") { Directory.Delete(dir, true); } } } Directory.CreateDirectory(PathTool.GetRelative("Install")); using (MemoryStream ms = new MemoryStream(dl)) { using ZipArchive ar = new ZipArchive(ms); ar.ExtractToDirectory(PathTool.GetRelative("Install"), true); } if (noPrep) { return; } Console.WriteLine("Preparing Repos"); XmlTool.FixXml(); RepoManagement.FetchRepos(); }
private static void Search(string identifier) { RepoManagement.GetReposFromDisk(); App[] apps = AppExtras.FindApps(identifier); Console.WriteLine($"Found {apps.Length} app(s)"); if (apps.Length > 0) { Console.WriteLine(apps.ToStringTable(new[] { "Name", "Guid" }, u => u.Name, u => u.Id)); } }
private static void Reinstall(string identifier, bool force) { RepoManagement.GetReposFromDisk(); App[] apps = AppExtras.FindApps(identifier); if (apps.Length == 0) { Console.WriteLine("Package not found."); } else { App tmp = apps.First(); Console.WriteLine($"Reinstalling {tmp.Name}"); AppExtras.Update(tmp, force); } Console.WriteLine("Done!"); }
private static void DistUpgrade() { RepoManagement.GetReposFromDisk(); foreach (KeyValuePair <Guid, App> app in GlobalVariables.Apps.Where(s => (s.Value.Status & Status.Updatable) == Status.Updatable)) { Console.WriteLine($"Updating {app.Value.Name}"); AppExtras.Update(app.Value, false); } #if !DEBUG if (Assembly.GetExecutingAssembly().GetName().Version < UpdateCheck.OnlineVersion) { Console.WriteLine("Updating self"); Other.UpgradeSelf(false); } #endif Console.WriteLine("Done!"); }
private static void Purge(string identifier) { RepoManagement.GetReposFromDisk(); App[] apps = AppExtras.FindApps(identifier); if (apps.Length == 0) { Console.WriteLine("Package not found."); } else { App tmp = apps.First(); if ((tmp.Status & Status.Installed) == Status.Installed) { Console.WriteLine($"Purging {tmp.Name}"); AppExtras.Remove(tmp, true); } else { Console.WriteLine("Package is not installed"); } } Console.WriteLine("Done!"); }
private static void Upgrade(string identifier, bool force) { RepoManagement.GetReposFromDisk(); App[] apps = AppExtras.FindApps(identifier); if (apps.Length == 0) { Console.WriteLine("Package not found."); } else { App tmp = apps.First(); if ((tmp.Status & Status.Updatable) == Status.Updatable) { Console.WriteLine($"Upgrading {tmp.Name}"); AppExtras.Update(tmp, force); } else { Console.WriteLine("Package is up-to-date"); } } Console.WriteLine("Done!"); }
private static void Install(string identifier, bool force) { RepoManagement.GetReposFromDisk(); App[] apps = AppExtras.FindApps(identifier); if (apps.Length == 0) { if (File.Exists(identifier)) { Console.WriteLine("Name:"); string name = Console.ReadLine(); AppInstall.InstallZip(identifier, new App(name, "Locally installed package, removal only", GlobalVariables.MinimumVer, "", true, "", Guid.NewGuid(), Color.Red, "", false, ""), force); Console.WriteLine($"Successfully installed \"{name}\""); } else { Console.WriteLine("Package not found."); Console.WriteLine(identifier); } } else { App tmp = apps.First(); if ((tmp.Status & Status.Installed) == Status.Installed) { Console.WriteLine("Package is already installed"); } else { Console.WriteLine($"Installing {tmp.Name}"); AppInstall.Install(tmp, true); } } Console.WriteLine("Done!"); }
private static void Update() { Console.WriteLine("Fetching Repos..."); RepoManagement.FetchRepos(); RepoManagement.GetReposFromDisk(); Console.WriteLine(); IEnumerable <App> tmp = GlobalVariables.Apps.Where(s => (s.Value.Status & Status.Updatable) == Status.Updatable).Select(s => s.Value); IEnumerable <App> apps = tmp as App[] ?? tmp.ToArray(); int updatableCount = apps.Count(); Console.WriteLine(updatableCount == 0 ? "All up-to-date" : $@"Found {updatableCount} Updates: {string.Join(Environment.NewLine, apps.Select(s => $"- {s.Name} ({s.Version})"))}"); #if !DEBUG Version vLocal = Assembly.GetExecutingAssembly().GetName().Version; Version vOnline = UpdateCheck.OnlineVersion; if (vLocal < vOnline) { Console.WriteLine($"uptool is outdated ({vLocal} vs {vOnline}), update using \"uptool upgrade-self\""); } #endif }
private void install_Click(object sender, EventArgs e) { log.Visible = false; try { progress.Visible = true; WebClient client = new WebClient(); Step(1, "Downloading metadata"); XElement meta = XDocument.Load("https://github.com/JFronny/UpTool2/releases/latest/download/meta.xml") .Element("meta"); Step(2, "Downloading binary"); byte[] dl = client.DownloadData(meta.Element("File").Value); Step(3, "Verifying integrity"); using (SHA256CryptoServiceProvider sha256 = new SHA256CryptoServiceProvider()) { string pkgHash = BitConverter.ToString(sha256.ComputeHash(dl)).Replace("-", string.Empty).ToUpper(); if (pkgHash != meta.Element("Hash").Value.ToUpper()) { throw new Exception( $@"The hash is not equal to the one stored in the repo: Package: {pkgHash} Online: {meta.Element("Hash").Value.ToUpper()}"); } } Step(4, "Extracting"); if (Directory.Exists(PathTool.GetRelative("Install"))) { Directory.Delete(PathTool.GetRelative("Install"), true); } Directory.CreateDirectory(PathTool.GetRelative("Install")); using (MemoryStream ms = new MemoryStream(dl)) { using ZipArchive ar = new ZipArchive(ms); ar.ExtractToDirectory(PathTool.GetRelative("Install"), true); } Step(5, "Creating shortcut"); Shortcut.Make(PathTool.GetRelative("Install", "UpTool2.exe"), System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs), "UpTool2.lnk")); Step(6, "Preparing Repos"); XmlTool.FixXml(); RepoManagement.FetchRepos(); if (pathBox.Checked) { Step(7, startupBox.Checked ? "Creating PATH & Autostart entry" : "Creating PATH entry"); if (!Path.Content.Contains(Path.GetName(PathTool.GetRelative("Install")))) { Path.Append(PathTool.GetRelative("Install")); } if (startupBox.Checked) { _rkApp.SetValue(AppName, updateAppsBox.Checked ? "uptool dist-upgrade" : "uptool upgrade-self"); } else if (_rkApp.GetValue(AppName) != null) { _rkApp.DeleteValue(AppName, false); } } Step(8, "Done!"); } catch (Exception ex) { Step(progress.Value, $"Failed!{Environment.NewLine}{ex}"); BackColor = Color.Red; processLabel.Text = "Failed"; new Thread(() => { Thread.Sleep(1000); Invoke(new Action(() => { BackColor = SystemColors.Control; progress.Visible = false; })); }).Start(); } finally { log.Visible = true; } }