Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ name: Release
#
# git tag v1.1.0 && git push origin v1.1.0
#
# which builds a Windows .msi, macOS .dmg for both architectures, the sdist and
# which builds the Windows installer, a macOS app and disk image for both
# architectures, the sdist and
# the wheel, and attaches them all to a GitHub release. Each packaged build runs
# its own self-test first, so an incomplete bundle fails here rather than in
# somebody's dialog box.
Expand All @@ -25,7 +26,7 @@ on:
- "packaging/**"
- "tools/build_app.py"
- "tools/fetch_platform_tools.py"
- "tools/pyinstaller_entry.py"
- "tools/build_macos.py"
- "tools/make_icon.py"
- ".github/workflows/release.yml"
workflow_dispatch:
Expand Down Expand Up @@ -59,11 +60,11 @@ jobs:
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[gui]" pyinstaller
python -m pip install -e ".[draw]" pyinstaller
dotnet tool install --global wix --version ${{ env.WIX_VERSION }}

- name: Build app, installer, WinUI front end and archive
run: python tools/build_app.py --msi --winui --archive
- name: Build the engine, the front end and the installer
run: python tools/build_app.py --msi

- uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -97,10 +98,13 @@ jobs:
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[gui]" pyinstaller
python -m pip install -e ".[draw]" pyinstaller

- name: Build app and disk image
run: python tools/build_app.py --dmg
- name: Build the engine
run: python tools/build_app.py

- name: Build the front end and its disk image
run: python tools/build_macos.py --dmg

- uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -149,8 +153,7 @@ jobs:

| | |
|---|---|
| **Windows** | `MThreadDraw-*-x64.msi` — installs like any other program, Start Menu entry included. `MThreadDraw-*-windows-x64.zip` is the same app with no installer. |
| **Windows, native interface** | `MThreadDraw-WinUI-*-x64.zip` — the WinUI 3 front end. Unzip anywhere and run `MThreadDraw.exe`; it needs no runtime installed and carries its own copy of the engine. Larger, and the newer of the two. |
| **Windows** | `MThreadDraw-*-x64.msi` — installs the native WinUI 3 application, Start Menu entry included. `MThreadDraw-WinUI-*-x64.zip` is the same application with no installer: unzip anywhere and run `MThreadDraw.exe`. |
| **macOS** | `MThreadDraw-*-arm64.dmg` for Apple Silicon, `MThreadDraw-*-x64.dmg` for Intel. Drag it to Applications. |
| **Linux** | Run from source — see the [README](https://github.com/MAXAWER/MThread-Draw#install-variants). |

Expand Down
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ most people twenty.
|---|---|
| **Windows** | [**Download the installer**](https://github.com/MAXAWER/MThread-Draw/releases/latest) — `MThreadDraw-x.y.z-x64.msi`. Installs like any other program, Start Menu entry and uninstaller included. |
| **macOS** | [**Download the app**](https://github.com/MAXAWER/MThread-Draw/releases/latest) — `.dmg` for Apple Silicon or Intel. Drag it to Applications. |
| **Linux** | Run from source; three commands, [below](#from-source). |
| **Linux** | The command line, from source; three commands, [below](#from-source). |

Both windows are native: WinUI 3 on Windows, SwiftUI on macOS, and each drives
the same engine over a pipe. Linux has the command line and the library, which
is everything except a window.

**Nothing else to install.** Python, OpenCV and **adb** all travel inside the
application — no Android SDK, no platform-tools download, no `PATH` to edit.
Expand Down Expand Up @@ -447,6 +451,7 @@ explained in plain English and Russian in **[TERMS.md](TERMS.md)**.
|---|---|
| **Windows** | [**Скачать установщик**](https://github.com/MAXAWER/MThread-Draw/releases/latest) — `MThreadDraw-x.y.z-x64.msi`. Ставится как обычная программа, с ярлыком в меню «Пуск» и деинсталлятором. |
| **macOS** | [**Скачать приложение**](https://github.com/MAXAWER/MThread-Draw/releases/latest) — `.dmg` для Apple Silicon или Intel, перетащить в Applications. |
| **Linux** | Командная строка из исходников. Окна для Linux нет: оба интерфейса нативные — WinUI 3 и SwiftUI. |
| **Linux** | Из исходников, три команды — [ниже](#из-исходников). |

**Больше ничего ставить не нужно.** Python, OpenCV и **adb** лежат внутри самого
Expand Down
4 changes: 2 additions & 2 deletions TERMS.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ of the code.

The packaged builds include Google's Android platform-tools (`adb`) under its
own terms, with its `NOTICE.txt` alongside; Python, OpenCV, NumPy, Pillow and
customtkinter keep their own licences. Those are aggregated with this software,
Pillow keep their own licences. Those are aggregated with this software,
not part of it.

### No warranty
Expand Down Expand Up @@ -123,7 +123,7 @@ Open Source Initiative. На практике это значит:
### Сторонние компоненты

В собранных версиях лежит `adb` от Google на своих условиях, вместе с его
`NOTICE.txt`; Python, OpenCV, NumPy, Pillow и customtkinter остаются под своими
`NOTICE.txt`; Python, OpenCV, NumPy и Pillow остаются под своими
лицензиями. Они соседствуют с этой программой, но её частью не являются.

### Гарантий нет
Expand Down
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
| Artifact | Built on |
|---|---|
| `MThread Draw-<version>-x64.msi`, and the same app as a `.zip` | windows-latest |
| `MThread Draw-<version>-arm64.dmg` | macos-latest |
| `MThread Draw-<version>-x64.dmg` | macos-13 |
| `MThreadDraw-<version>-arm64.dmg` | macos-latest |
| `MThreadDraw-<version>-x64.dmg` | macos-15-intel |
| sdist and wheel | ubuntu-latest |

Tags must start with `v`. Anything else is ignored by the workflow. The same
Expand Down
22 changes: 22 additions & 0 deletions macos/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// swift-tools-version:5.9
//
// The macOS front end. A window and nothing more: tracing, ADB and touch
// injection all live in the Python engine, which Windows uses too, and which
// this launches as a child process and speaks JSON lines to over a pipe.
//
// A Swift package rather than an Xcode project on purpose - it builds with
// `swift build` on a CI runner with no Xcode project file to keep in sync, and
// tools/build_macos.py assembles the .app bundle around the binary afterwards.
import PackageDescription

let package = Package(
name: "MThreadDraw",
platforms: [.macOS(.v13)],
targets: [
.executableTarget(
name: "MThreadDraw",
path: "Sources/MThreadDraw",
swiftSettings: [.unsafeFlags(["-parse-as-library"])]
)
]
)
Loading
Loading