mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-01-12 15:39:33 +08:00
b96b4fcb0f
* [Updating] Refactor autoupdate mechanism to use Settings window buttons * [Updating] Don't use underscores in update_state (#11029) * [Updating] Rename action_runner to be consisent with accepted format * [Updating] Make UpdateState values explicit * [Setup] Set default bootstrapper log severity to debug * [BugReport] Include all found bootstrapper logs * [Setup] Use capital letter for ActionRunner * [Updating] Simple UI to test UpdateState * [Action Runner] cleanup and coding style * [BugReportTool] fix coding convension * [Auto-update][PT Settings] Updated general page in the Settings (#11227) * [Auto-update][PT Settings] File watcher monitoring UpdateState.json (#11282) * Handle button clicks (#11288) * [Updating] Document ActionRunner cmd flags * [Auto-update][PT Settings] Updated UI (#11335) * [Updating] Do not reset update state when msi cancellation detected * [Updating] Directly launch update_now PT action instead of using custom URI scheme * Checking for updates UI (#11354) * [Updating] Fix cannotDownload state in action runner * [Updating] Reset update state to CannotDownload if action runner encountered an error * [Updating][PT Settings] downloading label, disable button in error state * Changed error message * [Updating rename CannotDownload to ErrorDownloading * [Updating] Add trace logging for Check for updates callback * [Updating][PT Settings] simplify downloading checks * [Updating][PT Settings] Updated text labels * [Updating][PT Settings] Retry to load settings if failed * [Updating][PT Settings] Text fix * [Updating][PT Settings] Installed version links removed * [Updating][PT Settings] Error text updated * [Updating][PT Settings] Show label after version checked * [Updating][PT Settings] Text foreground fix * [Updating][PT Settings] Clean up * [Updating] Do not reset releasePageUrl in case of error/cancellation * [Updating][PT Settings] fixed missing string * [Updating][PT Settings] checked for updates state fix Co-authored-by: yuyoyuppe <a.yuyoyuppe@gmail.com> Co-authored-by: Andrey Nekrasov <yuyoyuppe@users.noreply.github.com> Co-authored-by: Enrico Giordani <enrico.giordani@gmail.com>
127 lines
4.0 KiB
C#
127 lines
4.0 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.IO.Abstractions;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace Microsoft.PowerToys.Settings.UI.Library
|
|
{
|
|
public class UpdatingSettings
|
|
{
|
|
public enum UpdatingState
|
|
{
|
|
UpToDate = 0,
|
|
ErrorDownloading,
|
|
ReadyToDownload,
|
|
ReadyToInstall,
|
|
}
|
|
|
|
// Gets or sets a value of the updating state
|
|
[JsonPropertyName("state")]
|
|
public UpdatingState State { get; set; }
|
|
|
|
// Gets or sets a value of the release page url
|
|
[JsonPropertyName("releasePageUrl")]
|
|
public string ReleasePageLink { get; set; }
|
|
|
|
// Gets or sets a value of the github last checked date
|
|
[JsonPropertyName("githubUpdateLastCheckedDate")]
|
|
public string LastCheckedDate { get; set; }
|
|
|
|
// Gets or sets a value of the updating state
|
|
[JsonPropertyName("downloadedInstallerFilename")]
|
|
public string DownloadedInstallerFilename { get; set; }
|
|
|
|
// Non-localizable strings: Files
|
|
public const string SettingsFilePath = "\\Microsoft\\PowerToys\\";
|
|
public const string SettingsFile = "UpdateState.json";
|
|
|
|
public string NewVersion
|
|
{
|
|
get
|
|
{
|
|
if (ReleasePageLink == null)
|
|
{
|
|
return string.Empty;
|
|
}
|
|
|
|
try
|
|
{
|
|
string version = ReleasePageLink.Substring(ReleasePageLink.LastIndexOf('/') + 1);
|
|
return version.Trim();
|
|
}
|
|
#pragma warning disable CA1031 // Do not catch general exception types
|
|
catch (Exception)
|
|
#pragma warning restore CA1031 // Do not catch general exception types
|
|
{
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
public string LastCheckedDateLocalized
|
|
{
|
|
get
|
|
{
|
|
try
|
|
{
|
|
long seconds = long.Parse(LastCheckedDate, CultureInfo.CurrentCulture);
|
|
var date = DateTimeOffset.FromUnixTimeSeconds(seconds).UtcDateTime;
|
|
return date.ToLocalTime().ToString(CultureInfo.CurrentCulture);
|
|
}
|
|
#pragma warning disable CA1031 // Do not catch general exception types
|
|
catch (Exception)
|
|
#pragma warning restore CA1031 // Do not catch general exception types
|
|
{
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
public UpdatingSettings()
|
|
{
|
|
State = UpdatingState.UpToDate;
|
|
}
|
|
|
|
public static UpdatingSettings LoadSettings()
|
|
{
|
|
FileSystem fileSystem = new FileSystem();
|
|
var localAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
|
|
var file = localAppDataDir + SettingsFilePath + SettingsFile;
|
|
|
|
if (fileSystem.File.Exists(file))
|
|
{
|
|
try
|
|
{
|
|
Stream inputStream = fileSystem.File.Open(file, FileMode.Open);
|
|
StreamReader reader = new StreamReader(inputStream);
|
|
string data = reader.ReadToEnd();
|
|
inputStream.Close();
|
|
reader.Dispose();
|
|
|
|
return JsonSerializer.Deserialize<UpdatingSettings>(data);
|
|
}
|
|
#pragma warning disable CA1031 // Do not catch general exception types
|
|
catch (Exception)
|
|
#pragma warning restore CA1031 // Do not catch general exception types
|
|
{
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public string ToJsonString()
|
|
{
|
|
return JsonSerializer.Serialize(this);
|
|
}
|
|
}
|
|
}
|