in JetBrains.Etw.HostService.Updater/src/Views/MainWindow.xaml.cs [21:68]
public MainWindow([NotNull] ILogger logger, [NotNull] Options options)
{
if (options == null) throw new ArgumentNullException(nameof(options));
myLogger = logger ?? throw new ArgumentNullException(nameof(logger));
myDownloadDelay = options.CheckInterval != null;
var loggerContext = Logger.Context;
var anonymousPermanentUserId = new AnonymousPermanentUserIdAccessor(logger);
void CheckForUpdate()
{
try
{
var installedVersion = options.CheckForVersion ?? VersionControl.GetInstalledVersion(logger);
var updateRequest = installedVersion != null ? UpdateChecker.Check(logger, options.BaseUri ?? UpdateChecker.PublicBaseUri, "EHS", installedVersion, anonymousPermanentUserId.GetOrGenerate()) : null;
Interlocked.Exchange(ref myUpdateRequest, updateRequest);
myViewModel.SetUpdateRequest(updateRequest);
if (updateRequest == null)
{
logger.Info($"{loggerContext} res=exit_no_update");
Application.Current.Shutdown();
}
}
catch (Exception e)
{
logger.Exception(e);
logger.Info($"{loggerContext} res=exit_exception");
Application.Current.Shutdown();
}
}
CheckForUpdate();
// Note(ww898): Prevent blinking the tray icon!!!
if (myUpdateRequest == null)
return;
InitializeComponent();
DataContext = myViewModel;
var timer = new DispatcherTimer {Interval = options.CheckInterval ?? UpdateChecker.DefaultCheckInterval};
timer.Tick += (_, _) => CheckForUpdate();
Closed += (_, _) => timer.Stop();
timer.Start();
}