- packaging/make_artifacts.py:本地与 CI 共用的打包脚本 —— 版本取自 cargo metadata
(tag 交叉校验,不一致即失败)、按宿主判定槽位、Windows 裸 exe / UNIX tar.gz
(内含 LICENSE/NOTICE/README.md)、SHA256SUMS.txt;打包前跑 `ull --version` 断言版本;
tar 内 mtime/uid 归零 + gzip header mtime=0 → 同源构建 sha256 可复现
- packaging/README.md:产物矩阵与命名约定、版本唯一真相源、各平台运行时依赖、
软渲染兜底、release profile 取舍、**本机实测**体积与冒烟证据、合规与支持矩阵
- packaging/release-notes.md:GitHub Release 说明模板({{VERSION}}/{{SUMS}},
写清 Win10+ / macOS 12+ / Linux x64 支持矩阵)
- .github/workflows/release.yml:tag v* 触发四槽位矩阵 → 产物 + 重算 SHA256SUMS →
gh release create(pre-release 默认开,workflow_dispatch 只构建);Windows 用
+crt-static 并以 dumpbin 导入表把"单文件"做成硬门禁;归档内容自检 LICENSE/NOTICE/README
- Cargo.toml:release profile lto thin → fat(实测 GUI 16,366,080 → 14,595,584 B
= −10.8%,ull 7,572,992 → 6,157,824 B = −18.7%)
验证:cargo build --release 通过;GUI `--software-renderer --screenshot` 出 1180×760 PNG、
`ull --version` = 0.1.0;PE 导入表 33 个 DLL 全为系统库(无 VCRUNTIME/libwinpthread);
cargo deny licenses/bans/sources ok;workflow 用 python yaml 解析自检。
92 lines
3.5 KiB
Markdown
92 lines
3.5 KiB
Markdown
# Unlucky Launcher {{VERSION}}
|
|
|
|
Rust-native **single-file** Minecraft launcher: Slint + Metro UI, built-in AI agent
|
|
(chat / config edits / crash diagnosis) and an MCP server other agent tools can attach to.
|
|
No WebView, no bundled runtime, no JRE download needed to start the launcher itself.
|
|
|
|
## Downloads
|
|
|
|
| Platform | Asset | Notes |
|
|
| --- | --- | --- |
|
|
| Windows 10/11 x64 | `unlucky-launcher-{{VERSION}}-windows-x64.exe` | single exe, double-click to run |
|
|
| Linux x64 (X11/Wayland) | `unlucky-launcher-{{VERSION}}-linux-x64.tar.gz` | single binary inside, no installer |
|
|
| macOS 12+ Apple Silicon | `unlucky-launcher-{{VERSION}}-macos-arm64.tar.gz` | single binary inside, no installer |
|
|
| macOS 12+ Intel | `unlucky-launcher-{{VERSION}}-macos-x64.tar.gz` | single binary inside, no installer |
|
|
|
|
`LICENSE`, `NOTICE` and `README.md` ship in every archive; on Windows they are attached to
|
|
this release next to the `.exe` (a lone exe cannot carry them), so the license terms travel
|
|
with the download on every platform.
|
|
|
|
## Support matrix
|
|
|
|
| Platform | Level | Runtime requirements |
|
|
| --- | --- | --- |
|
|
| Windows 10/11 x64 | first class | nothing beyond the OS (UCRT is part of Win10+) |
|
|
| macOS 12+ (arm64 / x64) | first class | nothing; unsigned build, see Gatekeeper note |
|
|
| Linux x64, X11 | first class | `libxkbcommon`, `fontconfig`, `libGL` (or software renderer), `libxcb` |
|
|
| Linux x64, Wayland | supported | `wayland-client`, `libxkbcommon`, plus the X11 set for XWayland apps |
|
|
| Windows 8.1/8/7 | unsupported | baseline was raised to Win10 (decision D21) |
|
|
|
|
## Install
|
|
|
|
**Windows** — put the `.exe` anywhere and run it. Portable data lives next to the exe when a
|
|
`portable.marker` file is present, otherwise under `%APPDATA%`.
|
|
|
|
**Linux**
|
|
|
|
```bash
|
|
tar -xzf unlucky-launcher-{{VERSION}}-linux-x64.tar.gz
|
|
cd unlucky-launcher-{{VERSION}}-linux-x64
|
|
chmod +x unlucky-launcher && ./unlucky-launcher
|
|
```
|
|
|
|
**macOS**
|
|
|
|
```bash
|
|
tar -xzf unlucky-launcher-{{VERSION}}-macos-arm64.tar.gz
|
|
cd unlucky-launcher-{{VERSION}}-macos-arm64
|
|
xattr -d com.apple.quarantine unlucky-launcher # unsigned build, Gatekeeper quarantine
|
|
chmod +x unlucky-launcher && ./unlucky-launcher
|
|
```
|
|
|
|
## No GPU? Software renderer
|
|
|
|
The UI prefers OpenGL (femtovg) and falls back to Slint's CPU renderer when no usable GL
|
|
driver is present. Force it on any machine with:
|
|
|
|
```bash
|
|
unlucky-launcher --software-renderer # or: SLINT_BACKEND=winit-software unlucky-launcher
|
|
```
|
|
|
|
## Verify the download
|
|
|
|
```bash
|
|
# Linux / macOS
|
|
sha256sum -c SHA256SUMS.txt --ignore-missing
|
|
# Windows (PowerShell)
|
|
Get-FileHash .\unlucky-launcher-{{VERSION}}-windows-x64.exe -Algorithm SHA256
|
|
```
|
|
|
|
## Checksums
|
|
|
|
```
|
|
{{SUMS}}
|
|
```
|
|
|
|
## Known limitations of this build
|
|
|
|
- Microsoft (MSA) account login depends on a Mojang app-id whitelist that is still pending;
|
|
until it is granted, use offline accounts or authlib-injector (the 403 is reported with a
|
|
readable diagnostic instead of a silent failure).
|
|
- Binaries are not code-signed / notarized yet: Windows SmartScreen and macOS Gatekeeper warn
|
|
on first launch. Checksums above are the integrity reference for now.
|
|
- macOS ships the bare binary (single-file promise), not a `.app` bundle: no Dock icon or
|
|
Finder double-click — launch it from a terminal.
|
|
|
|
## License
|
|
|
|
Apache-2.0. Third-party notices (including Slint's Royalty-Free 2.0 track) are in `NOTICE`.
|
|
Unlucky Launcher is not affiliated with Mojang or Microsoft; it does not ship game files.
|
|
|
|
Made with [Slint](https://slint.dev) — Slint Royalty-Free 2.0 track, unmodified.
|