From 028c588d2a964fa5d992bf937b736672530fa54b Mon Sep 17 00:00:00 2001 From: Exest Date: Mon, 10 Aug 2026 12:41:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=BB=D0=B8=D0=B7=202.0:=20=D0=BA?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D1=81-=D0=BF=D0=BB=D0=B0=D1=82=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=B0,=20=D0=B1=D1=80=D0=B5=D0=BD=D0=B4=D0=BE?= =?UTF-8?q?=D0=B2=D1=8B=D0=B9=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D1=89=D0=B8=D0=BA,=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=86=D0=B0=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Версия 2.0.0, self-contained публикация под win/osx/linux - Установщик Inno перенастроен на Avalonia + брендовые картинки мастера (бирюзовый градиент, аптечный крест, ЭльФиСА) - exe переименовывается в «Электронная Фармация.exe» (совместимо с авто-обновлением) - Иконки приложения 256/512/1024 - Красивая страница загрузки web/download с авто-определением ОС (Win/Mac/Linux) Co-Authored-By: Claude Opus 4.8 --- .gitignore | 5 + installer/ElfisaPharmacy.iss | 12 +- installer/assets/elfisa-1024.png | Bin 0 -> 103416 bytes installer/assets/elfisa-256.png | Bin 0 -> 12878 bytes installer/assets/elfisa-512.png | Bin 0 -> 41170 bytes installer/assets/wizard-side.bmp | Bin 206038 -> 154542 bytes installer/assets/wizard-small.bmp | Bin 12154 -> 9798 bytes scripts/build-installer.ps1 | 17 +- src/Elfisa.Avalonia/Elfisa.Avalonia.csproj | 7 + web/download/index.html | 261 +++++++++++++++++++++ 10 files changed, 292 insertions(+), 10 deletions(-) create mode 100644 installer/assets/elfisa-1024.png create mode 100644 installer/assets/elfisa-256.png create mode 100644 installer/assets/elfisa-512.png create mode 100644 web/download/index.html diff --git a/.gitignore b/.gitignore index 5314b94..a7f8587 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,8 @@ packages/ installer/output/ dist/ + +# Кросс-платформенные публикации и артефакты сборки +publish/ +build/ +installer/output/ diff --git a/installer/ElfisaPharmacy.iss b/installer/ElfisaPharmacy.iss index 430daf5..2b1a93b 100644 --- a/installer/ElfisaPharmacy.iss +++ b/installer/ElfisaPharmacy.iss @@ -3,7 +3,7 @@ #define MyAppName "Электронная Фармация" #define MyAppBrand "ЭльФиСА" -#define MyAppVersion "1.0.20" +#define MyAppVersion "2.0.0" #define MyAppPublisher "PharmData" #define MyAppURL "https://cdn.24pharmdata.ru" #define MyAppSupportURL "https://24pharmdata.ru" @@ -89,12 +89,10 @@ russian.BrandLine=ЭльФиСА — удобный заказ лекарств Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] -; Основной выпуск Release (без отладочных PDB и XML-документации) -Source: "..\src\ElectronicPharmacy\bin\Release\*.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\src\ElectronicPharmacy\bin\Release\*.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\src\ElectronicPharmacy\bin\Release\*.config"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\src\ElectronicPharmacy\bin\Release\x86\*"; DestDir: "{app}\x86"; Flags: ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist -Source: "..\src\ElectronicPharmacy\bin\Release\x64\*"; DestDir: "{app}\x64"; Flags: ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist +; Avalonia self-contained выпуск (весь рантайм .NET внутри — без зависимостей у клиента). +; Сборка кладётся в ..\publish\win-x64 скриптом build-installer.ps1, exe уже переименован +; в «Электронная Фармация.exe» (совместимо с авто-обновлением старых клиентов). +Source: "..\publish\win-x64\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "assets\elfisa.ico"; DestDir: "{app}"; DestName: "elfisa.ico"; Flags: ignoreversion [Icons] diff --git a/installer/assets/elfisa-1024.png b/installer/assets/elfisa-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4b83f07ce32c657e1286fbd7dc9e2c6644678b GIT binary patch literal 103416 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