private void Reinstall(PackageAction action) { var package = (Package)action.Package; if (ShouldFetch(package)) { action.AddAction(new PackageAction(package, "fetch")); } action.AddAction(new PackageAction(package, "uninstall")); action.AddAction(new PackageAction(package, "install")); CreateTask(action.Actions).RunSynchronously(); }
private void Update(PackageAction action) { var package = (Package)action.Package; if (package.Flags.All(n => n != "installed")) { action.Progress = 100; action.Status = "failed"; return; } var latest = _packages.SingleOrDefault( n => n.Id == package.Id && n.Flags.All(m => m != "installed") && n.Flags.Any(m => m == "latest")); if (latest == null) { action.Progress = 100; action.Status = "failed"; return; } if (ShouldFetch(latest)) { action.AddAction(new PackageAction(latest, "fetch")); } if (ShouldInstall(latest)) { action.AddAction(new PackageAction(latest, "install")); } if (!action.Actions.Any()) { action.Progress = 100; action.Status = "failed"; return; } action.IsIndeterminate = true; action.Status = "updating"; CreateTask(action.Actions).RunSynchronously(); action.Progress = 100; action.Status = "updated"; package.RemoveFlags("updatable"); }
private void Install(PackageAction action) { lock (_installLock) { var package = (Package) action.Package; if (ShouldFetch(package)) { action.AddAction(new PackageAction(package, "fetch")); CreateTask(action.Actions).RunSynchronously(); } action.Status = "installing"; SimulateProgressUpdate(action); action.Status = "installed"; package.AddFlags("installed"); } }