feat(installer): show version info and offer worker restart in settings
- Surface Latest version and flag unparseable pre-release tags in VersionLabel so users know why auto-update was skipped. - Prompt to stop/start the worker service after Save, since the worker only reads its config at process start.
This commit is contained in:
@@ -50,7 +50,12 @@ public partial class SettingsViewModel : ObservableObject
|
||||
_uninstallRunner = uninstallRunner;
|
||||
_selectedPage = Pages.FirstOrDefault();
|
||||
|
||||
VersionLabel = $"Installed: {context.InstalledVersion ?? "?"} Installer: {context.InstallerVersion ?? "?"}";
|
||||
var label = $"Installed: {context.InstalledVersion ?? "?"} Installer: {context.InstallerVersion ?? "?"}";
|
||||
if (!string.IsNullOrEmpty(context.LatestVersion))
|
||||
label += $" Latest: {context.LatestVersion}";
|
||||
if (context.LatestTagUnparseable)
|
||||
label += " (pre-release tag — auto-update disabled)";
|
||||
VersionLabel = label;
|
||||
|
||||
_ = LoadAllAsync();
|
||||
}
|
||||
@@ -98,8 +103,39 @@ public partial class SettingsViewModel : ObservableObject
|
||||
};
|
||||
uiCfg.Save();
|
||||
|
||||
StatusMessage = "Settings saved.";
|
||||
IsStatusError = false;
|
||||
StatusMessage = "Settings saved.";
|
||||
|
||||
// Worker reads its config at process start, so changes only take effect after a restart.
|
||||
var restart = MessageBox.Show(
|
||||
"Restart the worker service now so the new settings take effect?",
|
||||
"Restart Worker",
|
||||
MessageBoxButton.YesNo,
|
||||
MessageBoxImage.Question);
|
||||
|
||||
if (restart != MessageBoxResult.Yes)
|
||||
{
|
||||
StatusMessage = "Settings saved. Restart the worker service manually to apply.";
|
||||
return;
|
||||
}
|
||||
|
||||
var progress = new Progress<string>(msg => StatusMessage = msg);
|
||||
var stop = await _stopService.ExecuteAsync(_context, progress, CancellationToken.None);
|
||||
if (!stop.Success)
|
||||
{
|
||||
StatusMessage = $"Saved, but worker stop failed: {stop.ErrorMessage}";
|
||||
IsStatusError = true;
|
||||
return;
|
||||
}
|
||||
var start = await _startService.ExecuteAsync(_context, progress, CancellationToken.None);
|
||||
if (!start.Success)
|
||||
{
|
||||
StatusMessage = $"Saved, but worker start failed: {start.ErrorMessage}";
|
||||
IsStatusError = true;
|
||||
return;
|
||||
}
|
||||
|
||||
StatusMessage = "Settings saved. Worker restarted.";
|
||||
}
|
||||
|
||||
[RelayCommand]
|
||||
|
||||
Reference in New Issue
Block a user