diff --git a/README.md b/README.md index e951e89..a75e1ab 100644 --- a/README.md +++ b/README.md @@ -178,6 +178,8 @@ deepseek-api.exe `build.cmd` собирает `deepseek-api.exe` (около 20 КБ) компилятором C# из состава Windows — `csc.exe`, он есть на любой машине с .NET Framework 4. +Значок берётся из `icon.ico` и вшивается в exe, так что рядом с ним ничего +лежать не обязано. Ставить ничего не нужно, прав администратора тоже. Сам `.exe` в репозиторий не кладётся: собирается за секунду. @@ -467,7 +469,7 @@ POST /api/chat | `config.json` | настройки; `config.local.json` рядом перебивает их | | `chats.json` | рабочее состояние: id живых чатов (заводится сам) | | `start.cmd` | запуск в консоли | -| `tray.cs`, `build.cmd` | окно с индикатором в трее; `.exe` собирается на месте | +| `tray.cs`, `build.cmd`, `icon.ico` | окно с индикатором в трее; `.exe` собирается на месте | | `test.mjs` | проверка перевода формата, браузер не нужен | Зависимостей нет — только то, что есть в Node 22. diff --git a/build.cmd b/build.cmd index 84e7e4e..6f1f229 100644 --- a/build.cmd +++ b/build.cmd @@ -9,6 +9,7 @@ if not exist "%CSC%" ( exit /b 1 ) "%CSC%" /nologo /target:winexe /optimize+ /out:"%~dp0deepseek-api.exe" ^ + /win32icon:"%~dp0icon.ico" ^ /r:System.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll ^ /r:System.Web.Extensions.dll "%~dp0tray.cs" if errorlevel 1 exit /b 1 diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000..d8eb975 Binary files /dev/null and b/icon.ico differ diff --git a/tray.cs b/tray.cs index 4b0a7ee..526bc1f 100644 --- a/tray.cs +++ b/tray.cs @@ -78,14 +78,11 @@ class Tray : Form tray.Visible = true; tray.DoubleClick += (s, e) => Restore(); - // Значок окна — картинка проекта, если она рядом; значок в трее всё - // равно рисуется цветом состояния, там картинке места нет. - var png = Path.Combine(here, "icon.png"); - if (File.Exists(png)) - try { using (var bmp = new Bitmap(png)) Icon = Icon.FromHandle(bmp.GetHicon()); } - catch { Icon = Dot(Color.Gray); } - else - Icon = Dot(Color.Gray); + // Значок окна берём из самого exe: icon.ico вшит в него при сборке + // (/win32icon), поэтому рядом ничего лежать не обязано. Значок в трее + // всё равно рисуется цветом состояния, там картинке места нет. + try { Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); } + catch { Icon = Dot(Color.Gray); } Mark(Color.Gray, "запуск…"); poll.Interval = 1000;