fix(tray): load icon from embedded resource stream so it actually shows
icon.ico is a WPF <Resource> embedded in the assembly, but the code loaded it from the filesystem (AppContext.BaseDirectory) where no copy exists -> FileNotFoundException, silently swallowed by the catch -> blank tray icon. Load via pack:// resource stream instead. Also log the failure to Debug output instead of swallowing it silently. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
d2f8319772
commit
bc45d28f26
|
|
@ -33,12 +33,18 @@ public partial class App : Application
|
|||
_tray = new TaskbarIcon { ToolTipText = "JournalBot" };
|
||||
try
|
||||
{
|
||||
_tray.Icon = new System.Drawing.Icon(
|
||||
Path.Combine(AppContext.BaseDirectory, "icon.ico"));
|
||||
// icon.ico is embedded as a WPF Resource (see .csproj), so load it
|
||||
// from the resource stream — not the filesystem, which would fail
|
||||
// because no icon.ico is copied next to the EXE.
|
||||
var uri = new Uri("pack://application:,,,/icon.ico", UriKind.Absolute);
|
||||
using var stream = Application.GetResourceStream(uri).Stream;
|
||||
_tray.Icon = new System.Drawing.Icon(stream);
|
||||
}
|
||||
catch
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Missing/corrupt icon must not prevent startup; tray still works.
|
||||
// Don't swallow silently — a blank tray icon is otherwise a mystery.
|
||||
System.Diagnostics.Debug.WriteLine($"Tray icon load failed: {ex}");
|
||||
}
|
||||
_tray.TrayLeftMouseUp += (_, _) => ToggleWindow();
|
||||
_tray.ContextMenu = BuildMenu();
|
||||
|
|
|
|||
Loading…
Reference in New Issue