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()