/// <summary> /// Silently checks if an update for Zero Install is available. /// </summary> /// <returns>The version number of the newest available update; <c>null</c> if no update is available.</returns> public static ImplementationVersion?SilentUpdateCheck() { if (!IsDeployed || !NetUtils.IsInternetConnected) { return(null); } using var handler = new SilentTaskHandler(); var services = new ServiceProvider(handler) { FeedManager = { Refresh = true } }; if (services.Config is { NetworkUse : NetworkLevel.Offline } or { SelfUpdateUri : null })
/// <summary> /// Silently checks if an update for Zero Install is available. /// </summary> /// <returns>The version number of the newest available update; <c>null</c> if no update is available.</returns> public static ImplementationVersion?SilentUpdateCheck() { if (!IsDeployed || !NetUtils.IsInternetConnected) { return(null); } using var handler = new SilentTaskHandler(); var services = new ServiceProvider(handler) { FeedManager = { Refresh = true } }; if (services.Config.NetworkUse == NetworkLevel.Offline || services.Config.SelfUpdateUri == null) { return(null); } try { var selections = services.Solver.Solve(services.Config.SelfUpdateUri); var newVersion = selections.MainImplementation.Version; return((newVersion > Version) ? newVersion : null); } #region Error handling catch (OperationCanceledException) { return(null); } catch (WebException ex) { Log.Debug(ex); return(null); } catch (Exception ex) when(ex is UriFormatException or IOException or UnauthorizedAccessException or SignatureException or SolverException or InvalidDataException) { Log.Warn("Problem with silent self-update check"); Log.Warn(ex); return(null); } #endregion } }
protected virtual void Execute() { using (var handler = new SilentTaskHandler()) handler.RunTask(Target); }
/// <summary> /// Silently checks if an update for Zero Install is available. /// </summary> /// <returns>The version number of the newest available update; <c>null</c> if no update is available.</returns> public static ImplementationVersion?SilentUpdateCheck() { if (IsRunningFromCache || !NetUtils.IsInternetConnected) { return(null); } using var handler = new SilentTaskHandler(); var services = new ServiceLocator(handler) { FeedManager = { Refresh = true } }; if (services.Config.NetworkUse == NetworkLevel.Offline || services.Config.SelfUpdateUri == null) { return(null); } var requirements = new Requirements(services.Config.SelfUpdateUri); try { var selections = services.Solver.Solve(requirements); var newVersion = selections.MainImplementation.Version; return((newVersion > ImplementationVersion.ZeroInstall) ? newVersion : null); } #region Error handling catch (OperationCanceledException) { return(null); } catch (WebException ex) { Log.Debug(ex); return(null); } catch (IOException ex) { Log.Warn("Problem with silent self-update check"); Log.Warn(ex); return(null); } catch (UnauthorizedAccessException ex) { Log.Warn("Problem with silent self-update check"); Log.Warn(ex); return(null); } catch (SignatureException ex) { Log.Warn("Problem with silent self-update check"); Log.Warn(ex); return(null); } catch (UriFormatException ex) { Log.Warn("Problem with silent self-update check"); Log.Warn(ex); return(null); } catch (SolverException ex) { Log.Warn("Problem with silent self-update check"); Log.Warn(ex); return(null); } catch (InvalidDataException ex) { Log.Warn("Problem with silent self-update check"); Log.Warn(ex); return(null); } #endregion }