From 4403827c2680cb6f074e0746766827769ea63da0 Mon Sep 17 00:00:00 2001 From: Egor Deev Date: Tue, 6 Oct 2026 22:20:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B4=D0=B8=D0=BD=D0=BE=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20SchoolTable.exe:=20=D0=BF=D1=83=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=B1=D0=B0=D0=B7=D0=B0=20=D0=B8=20=D0=B8=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D0=BA=D0=B0=20=D0=B2=D1=88=D0=B8=D1=82=D1=8B=20?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B2=D0=BE?= =?UTF-8?q?=D0=BC=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D0=B4=D1=83=D1=82=D1=81=D1=8F=20=D1=80=D1=8F=D0=B4?= =?UTF-8?q?=D0=BE=D0=BC;=20.exe=20=E2=80=94=20=D0=B2=20=D1=80=D0=B5=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B5=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=BC=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 4 ++-- README.en.md | 6 +++--- README.md | 5 +++-- main.py | 6 ++++++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1095a60..eea09c2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,10 +16,10 @@ jobs: python-version: "3.12" - run: pip install pyinstaller -r requirements.txt - name: Сборка .exe - run: pyinstaller --onefile --windowed --icon image.ico --name SchoolTable main.py + run: pyinstaller --onefile --windowed --icon image.ico --add-data "table.db;." --add-data "image.ico;." --name SchoolTable main.py - name: Архив с программой, пустой базой и иконкой run: Compress-Archive -Path dist/SchoolTable.exe, table.db, image.ico -DestinationPath SchoolTable-windows.zip - name: Файл в релиз env: GH_TOKEN: ${{ github.token }} - run: gh release upload "${{ github.ref_name }}" SchoolTable-windows.zip --clobber + run: gh release upload "${{ github.ref_name }}" dist/SchoolTable.exe SchoolTable-windows.zip --clobber diff --git a/README.en.md b/README.en.md index 616d513..6955eae 100644 --- a/README.en.md +++ b/README.en.md @@ -26,9 +26,9 @@ on their own. The interface is in Russian. ## Running -A ready-made Windows build is `SchoolTable-windows.zip` in the -[releases](https://github.com/EDeev/school_table/releases): unpack it and run `SchoolTable.exe` (keep -`table.db` next to it). +A ready-made Windows build is in the [releases](https://github.com/EDeev/school_table/releases): +`SchoolTable.exe` — just run it (an empty `table.db` and the icon appear next to it on first start), or +`SchoolTable-windows.zip` — the same with the database and icon in an archive. From source: diff --git a/README.md b/README.md index 0dafcd2..31f97a6 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,9 @@ ## Запуск -Готовая сборка для Windows — `SchoolTable-windows.zip` в [релизах](https://github.com/EDeev/school_table/releases): -распакуйте и запустите `SchoolTable.exe` (база `table.db` должна лежать рядом). +Готовая сборка для Windows — в [релизах](https://github.com/EDeev/school_table/releases): `SchoolTable.exe` — просто +запустите (при первом запуске рядом появятся пустая база `table.db` и иконка), или `SchoolTable-windows.zip` — то же +с базой и иконкой в архиве. Из исходников: diff --git a/main.py b/main.py index aadec8a..2277c99 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import datetime as dt import os +import shutil import sqlite3 import sys @@ -1325,6 +1326,11 @@ class MyWidget(QMainWindow, Ui_MainWindow): if __name__ == '__main__': # table.db ищется рядом с программой (или с .exe), а не в текущей папке терминала os.chdir(os.path.dirname(sys.executable if getattr(sys, "frozen", False) else os.path.abspath(__file__))) + if getattr(sys, "frozen", False): + # одиночный .exe: пустая база и иконка вшиты внутрь и при первом запуске кладутся рядом + for name in ("table.db", "image.ico"): + if not os.path.exists(name): + shutil.copy(os.path.join(sys._MEIPASS, name), name) app = QApplication(sys.argv) ex = MyWidget() ex.show()