Значок: icon.ico вшивается в exe
csc собирался без /win32icon, поэтому у exe не было значка вовсе, а окно пыталось сделать значок из icon.png через GetHicon — тот теряет альфу и не даёт нужных размеров. Теперь многоразмерный icon.ico вшит в exe, а окно берёт значок из себя же.
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user