mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-01-30 16:07:29 +01:00
Compare commits
4 Commits
leilzh/rel
...
copilot/fi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7bdb5d8d3 | ||
|
|
516e9878a9 | ||
|
|
eb35b3a249 | ||
|
|
5daec13bc4 |
@@ -201,6 +201,13 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
||||
|
||||
if (action == UPDATE_NOW_LAUNCH_STAGE1)
|
||||
{
|
||||
// Check if user has admin permissions before proceeding
|
||||
if (!check_user_is_admin())
|
||||
{
|
||||
Logger::error("Update failed: Administrator permissions required to install updates");
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool isUpToDate = false;
|
||||
auto installerPath = ObtainInstaller(isUpToDate);
|
||||
bool failed = !installerPath.has_value();
|
||||
@@ -217,6 +224,12 @@ int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
||||
}
|
||||
else if (action == UPDATE_NOW_LAUNCH_STAGE2)
|
||||
{
|
||||
// Check if user has admin permissions before proceeding
|
||||
if (!check_user_is_admin())
|
||||
{
|
||||
Logger::error("Update failed: Administrator permissions required to install updates");
|
||||
return 1;
|
||||
}
|
||||
using namespace std::string_view_literals;
|
||||
const bool failed = !InstallNewVersionStage2(args[2]);
|
||||
if (failed)
|
||||
|
||||
@@ -49,7 +49,9 @@ namespace Awake.Core
|
||||
|
||||
private static DateTimeOffset ExpireAt { get; set; }
|
||||
|
||||
private static readonly CompositeFormat AwakeMinute = CompositeFormat.Parse(Resources.AWAKE_MINUTE);
|
||||
private static readonly CompositeFormat AwakeMinutes = CompositeFormat.Parse(Resources.AWAKE_MINUTES);
|
||||
private static readonly CompositeFormat AwakeHour = CompositeFormat.Parse(Resources.AWAKE_HOUR);
|
||||
private static readonly CompositeFormat AwakeHours = CompositeFormat.Parse(Resources.AWAKE_HOURS);
|
||||
private static readonly BlockingCollection<ExecutionState> _stateQueue;
|
||||
private static CancellationTokenSource _tokenSource;
|
||||
@@ -451,7 +453,7 @@ namespace Awake.Core
|
||||
Dictionary<string, uint> optionsList = new()
|
||||
{
|
||||
{ string.Format(CultureInfo.InvariantCulture, AwakeMinutes, 30), 1800 },
|
||||
{ string.Format(CultureInfo.InvariantCulture, AwakeHours, 1), 3600 },
|
||||
{ string.Format(CultureInfo.InvariantCulture, AwakeHour, 1), 3600 },
|
||||
{ string.Format(CultureInfo.InvariantCulture, AwakeHours, 2), 7200 },
|
||||
};
|
||||
return optionsList;
|
||||
|
||||
@@ -159,6 +159,15 @@ namespace Awake.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} hour.
|
||||
/// </summary>
|
||||
internal static string AWAKE_HOUR {
|
||||
get {
|
||||
return ResourceManager.GetString("AWAKE_HOUR", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} hours.
|
||||
/// </summary>
|
||||
@@ -240,6 +249,15 @@ namespace Awake.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} minute.
|
||||
/// </summary>
|
||||
internal static string AWAKE_MINUTE {
|
||||
get {
|
||||
return ResourceManager.GetString("AWAKE_MINUTE", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} minutes.
|
||||
/// </summary>
|
||||
|
||||
@@ -123,6 +123,10 @@
|
||||
<data name="AWAKE_EXIT" xml:space="preserve">
|
||||
<value>Exit</value>
|
||||
</data>
|
||||
<data name="AWAKE_HOUR" xml:space="preserve">
|
||||
<value>{0} hour</value>
|
||||
<comment>{0} shouldn't be removed. It will be replaced by the number 1 at runtime by the application. Used for defining a period to keep the PC awake.</comment>
|
||||
</data>
|
||||
<data name="AWAKE_HOURS" xml:space="preserve">
|
||||
<value>{0} hours</value>
|
||||
<comment>{0} shouldn't be removed. It will be replaced by a number greater than 1 at runtime by the application. Used for defining a period to keep the PC awake.</comment>
|
||||
@@ -142,6 +146,10 @@
|
||||
<value>Keep awake until expiration date and time</value>
|
||||
<comment>Keep the system awake until expiration date and time</comment>
|
||||
</data>
|
||||
<data name="AWAKE_MINUTE" xml:space="preserve">
|
||||
<value>{0} minute</value>
|
||||
<comment>{0} shouldn't be removed. It will be replaced by the number 1 at runtime by the application. Used for defining a period to keep the PC awake.</comment>
|
||||
</data>
|
||||
<data name="AWAKE_MINUTES" xml:space="preserve">
|
||||
<value>{0} minutes</value>
|
||||
<comment>{0} shouldn't be removed. It will be replaced by a number greater than 1 at runtime by the application. Used for defining a period to keep the PC awake.</comment>
|
||||
|
||||
@@ -102,6 +102,14 @@
|
||||
IsTabStop="{x:Bind ViewModel.IsNoNetwork, Mode=OneWay}"
|
||||
Severity="Error" />
|
||||
|
||||
<!-- Insufficient permissions error -->
|
||||
<InfoBar
|
||||
x:Uid="General_InsufficientPermissions"
|
||||
IsClosable="False"
|
||||
IsOpen="{x:Bind ViewModel.IsInsufficientPermissions, Mode=OneWay}"
|
||||
IsTabStop="{x:Bind ViewModel.IsInsufficientPermissions, Mode=OneWay}"
|
||||
Severity="Error" />
|
||||
|
||||
<!-- New version available -->
|
||||
<InfoBar
|
||||
x:Uid="General_NewVersionAvailable"
|
||||
|
||||
@@ -2414,6 +2414,9 @@ From there, simply click on one of the supported files in the File Explorer and
|
||||
<data name="General_CantCheck.Title" xml:space="preserve">
|
||||
<value>Network error. Please try again later</value>
|
||||
</data>
|
||||
<data name="General_InsufficientPermissions.Title" xml:space="preserve">
|
||||
<value>Administrator permissions required. Please restart PowerToys as administrator to install updates.</value>
|
||||
</data>
|
||||
<data name="General_DownloadAndInstall.Content" xml:space="preserve">
|
||||
<value>Download & install</value>
|
||||
</data>
|
||||
|
||||
@@ -260,6 +260,7 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
private bool _isNewVersionDownloading;
|
||||
private bool _isNewVersionChecked;
|
||||
private bool _isNoNetwork;
|
||||
private bool _isInsufficientPermissions;
|
||||
private bool _isBugReportRunning;
|
||||
|
||||
private bool _settingsBackupRestoreMessageVisible;
|
||||
@@ -953,6 +954,14 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsInsufficientPermissions
|
||||
{
|
||||
get
|
||||
{
|
||||
return _isInsufficientPermissions;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsBugReportRunning
|
||||
{
|
||||
get
|
||||
@@ -1178,6 +1187,18 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
|
||||
private void UpdateNowClick()
|
||||
{
|
||||
// Check if user has admin permissions before starting update
|
||||
if (!IsAdmin)
|
||||
{
|
||||
_isInsufficientPermissions = true;
|
||||
NotifyPropertyChanged(nameof(IsInsufficientPermissions));
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear any previous permission error
|
||||
_isInsufficientPermissions = false;
|
||||
NotifyPropertyChanged(nameof(IsInsufficientPermissions));
|
||||
|
||||
IsNewVersionDownloading = string.IsNullOrEmpty(UpdatingSettingsConfig.DownloadedInstallerFilename);
|
||||
NotifyPropertyChanged(nameof(IsDownloadAllowed));
|
||||
|
||||
@@ -1299,6 +1320,11 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
|
||||
_isNoNetwork = PowerToysUpdatingState == UpdatingSettings.UpdatingState.NetworkError;
|
||||
NotifyPropertyChanged(nameof(IsNoNetwork));
|
||||
|
||||
// Clear permission error when updating state changes
|
||||
_isInsufficientPermissions = false;
|
||||
NotifyPropertyChanged(nameof(IsInsufficientPermissions));
|
||||
|
||||
NotifyPropertyChanged(nameof(IsNewVersionDownloading));
|
||||
NotifyPropertyChanged(nameof(IsUpdatePanelVisible));
|
||||
_isNewVersionChecked = PowerToysUpdatingState == UpdatingSettings.UpdatingState.UpToDate && !IsNewVersionDownloading;
|
||||
|
||||
@@ -51,4 +51,5 @@ std::vector<std::wstring> processes =
|
||||
L"PowerToys.WorkspacesWindowArranger.exe",
|
||||
L"PowerToys.WorkspacesEditor.exe",
|
||||
L"PowerToys.ZoomIt.exe",
|
||||
L"Microsoft.CmdPal.UI.exe",
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user