docs(packaging): M129 发布说明重写到现行事实(下划线资产名 / MSA client id / 删 Termux 下载引导)
资产名全部改成 make_artifacts.py::asset_stem() 的 `名字_版本号_平台_架构`(下划线): 六行矩阵、ull 资产、tar 包名与解压出的顶层目录、PowerShell 校验命令。旧的连字符名 按文档下载会 404(D49 2026-11-05 改名,文档没跟)。 删掉「微软登录等 Mojang 白名单审批」整条(白名单 2026-11-03 已批准并真机验签), 换成真缺口:发布版不带 Azure 公共客户端 id,要 ULL_MSA_CLIENT_ID(环境变量或构建期 注入),未配置时界面说「未配置」而不是静默失败。不写任何 id 值。 Termux:删掉「下 ull 资产」的引导(ull 的 Linux 资产是 glibc 版,Android/bionic 上跑 不起来),矩阵行只留「构建自源码、GUI 未验证、不在本发布矩阵」。 顺带清掉三处过期陈述:Windows 数据根(原文说有 `portable.marker` 就便携、否则落 %APPDATA%——实际 portable 是默认模式,首次运行在 exe 旁建 .ULL/ 与 .minecraft/); CLI 子命令表漏了 `pack import`;arm64 行里的内部决策编号 D21。124 → 107 行。
This commit is contained in:
1 parent
494a45fe12
commit
59eefdb052
1 file changed
+52
-69
+52
-69
@@ -1,124 +1,107 @@
|
||||
# Unlucky Launcher {{VERSION}}
|
||||
|
||||
Rust-native **single-file** Minecraft launcher: iced 0.14 + Material 3 Expressive UI, built-in AI agent
|
||||
(chat / config edits / crash diagnosis) and an MCP server other agent tools can attach to.
|
||||
(chat / setting 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
|
||||
|
||||
Asset names are `<name>_<version>_<platform>_<arch>`, underscore separated — the rule
|
||||
`packaging/make_artifacts.py::asset_stem()` applies:
|
||||
|
||||
| Platform | Asset | Notes |
|
||||
| --- | --- | --- |
|
||||
| Windows 10/11 x64 | `unlucky-launcher-{{VERSION}}-windows-x64.exe` | single exe, double-click to run |
|
||||
| Windows 11 ARM64 | `unlucky-launcher-{{VERSION}}-windows-arm64.exe` | single exe, runs natively on ARM64 Windows |
|
||||
| Linux x64 (X11/Wayland) | `unlucky-launcher-{{VERSION}}-linux-x64.tar.gz` | single binary inside, no installer |
|
||||
| Linux arm64 (X11/Wayland) | `unlucky-launcher-{{VERSION}}-linux-arm64.tar.gz` | single binary inside; needs glibc 2.35+ |
|
||||
| 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 |
|
||||
| Windows 10/11 x64 | `unlucky-launcher_{{VERSION}}_windows_x64.exe` | single exe, double-click to run |
|
||||
| Windows 11 ARM64 | `unlucky-launcher_{{VERSION}}_windows_arm64.exe` | single exe, runs natively on ARM64 Windows |
|
||||
| Linux x64 (X11/Wayland) | `unlucky-launcher_{{VERSION}}_linux_x64.tar.gz` | single binary inside, no installer |
|
||||
| Linux arm64 (X11/Wayland) | `unlucky-launcher_{{VERSION}}_linux_arm64.tar.gz` | single binary inside; needs glibc 2.35+ |
|
||||
| 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.
|
||||
Each archive unpacks to one top-level directory of the same name holding the binary plus `LICENSE`,
|
||||
`NOTICE` and `README.md`; the Windows assets are bare `.exe` files, so those three documents are attached
|
||||
to this release next to them — the license terms travel with every download.
|
||||
|
||||
Every slot also ships the command line as its own small asset — `ull-{{VERSION}}-<slot>`
|
||||
(`.exe` on Windows):
|
||||
Every slot also ships the command line as its own small bare asset,
|
||||
`ull_{{VERSION}}_<platform>_<arch>` (`.exe` on Windows):
|
||||
|
||||
```bash
|
||||
chmod +x ull-{{VERSION}}-linux-x64 # Release 资产不带可执行位,先补上
|
||||
./ull-{{VERSION}}-linux-x64 instances list # servers / CI / Termux: no graphics stack needed
|
||||
unlucky-launcher instances list # desktops: the GUI binary answers the same commands
|
||||
chmod +x ull_{{VERSION}}_linux_x64 # release assets carry no executable bit
|
||||
./ull_{{VERSION}}_linux_x64 instances list # servers and CI: no graphics stack needed
|
||||
```
|
||||
|
||||
`ull` runs `instances`, `install`, `launch`, `accounts`, `sessions`, `logs`, `diag`, `config`,
|
||||
`java` and `agent`, and links no graphics library at all. The GUI binary accepts the same set
|
||||
before it ever opens a window, so on a machine with a desktop you do not need `ull`.
|
||||
`ull` runs `instances`, `install`, `pack import`, `launch`, `accounts`, `sessions`, `logs`, `diag`,
|
||||
`config`, `java` and `agent`, and links no graphics library at all. The GUI binary accepts the same set
|
||||
before it ever opens a window, so a desktop machine does not need `ull`.
|
||||
|
||||
## Support matrix
|
||||
|
||||
| Platform | Level | Runtime requirements |
|
||||
| --- | --- | --- |
|
||||
| Windows 10/11 x64 | first class | nothing beyond the OS (UCRT is part of Win10+) |
|
||||
| Windows 11 ARM64 | first class (launcher artifact) | nothing extra; launcher runs natively, the game itself runs through the OS x64 emulation layer with an x64 JDK |
|
||||
| macOS 12+ (arm64 / x64) | first class | nothing; unsigned build, see Gatekeeper note |
|
||||
| Windows 11 ARM64 | first class (launcher artifact) | nothing extra; the launcher runs natively, the game itself runs through the OS x64 emulation layer with an x64 JDK |
|
||||
| macOS 12+ (arm64 / x64) | first class | nothing; unsigned build, see the 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 |
|
||||
| Linux arm64, X11 | first class | glibc 2.35+ (built on `ubuntu-22.04-arm`, same floor as x64), `libxkbcommon`, `fontconfig`, `libGL`, `libxcb` |
|
||||
| Linux arm64, X11 | first class | glibc 2.35+ (same floor as x64), `libxkbcommon`, `fontconfig`, `libGL`, `libxcb` |
|
||||
| Linux arm64, Wayland | supported | the above plus `wayland-client` |
|
||||
| Windows 8.1/8/7 | unsupported | baseline was raised to Win10 (decision D21) |
|
||||
| Android — Termux + X11 | experimental, not promised | CLI only (the `ull` asset, or build from source), GUI unverified; not part of this release matrix |
|
||||
| Windows 8.1/8/7 | unsupported | the baseline is Windows 10 |
|
||||
| Android — Termux + X11 | experimental, not promised | CLI only and only when built from source; GUI unverified; not part of this release matrix |
|
||||
|
||||
Both arm64 rows are **formally released slots** (the assets ship in this release and in
|
||||
`SHA256SUMS.txt`), not the experimental Termux path: Linux arm64 is built and smoke-tested on a
|
||||
native ARM64 runner, Windows ARM64 is cross-built with the same static-CRT gate as x64.
|
||||
Both arm64 rows are **formally released slots** (assets ship here and in `SHA256SUMS.txt`), not the
|
||||
experimental Termux path: Linux arm64 is built and smoke-tested on a native ARM64 runner, Windows ARM64 is
|
||||
cross-built with the same static-CRT gate as x64.
|
||||
|
||||
## Install
|
||||
|
||||
**Windows** — put the `.exe` anywhere and run it (pick `-windows-arm64.exe` on ARM64 Windows,
|
||||
`-windows-x64.exe` everywhere else). Portable data lives next to the exe when a
|
||||
`portable.marker` file is present, otherwise under `%APPDATA%`.
|
||||
**Windows** — put the `.exe` anywhere and run it (pick `_windows_arm64.exe` on ARM64 Windows,
|
||||
`_windows_x64.exe` everywhere else). The first run creates `.ULL/` and `.minecraft/` next to the exe
|
||||
(portable is the default data mode); the per-user `%APPDATA%\ULL` plus `%APPDATA%\.minecraft`, or a custom
|
||||
root, are selectable instead.
|
||||
|
||||
**Linux**
|
||||
**Linux / macOS**
|
||||
|
||||
```bash
|
||||
tar -xzf unlucky-launcher-{{VERSION}}-linux-x64.tar.gz # use linux-arm64 on aarch64
|
||||
cd unlucky-launcher-{{VERSION}}-linux-x64 # ditto
|
||||
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
|
||||
tar -xzf unlucky-launcher_{{VERSION}}_linux_x64.tar.gz # _linux_arm64 on aarch64; _macos_arm64 / _macos_x64 on macOS
|
||||
cd unlucky-launcher_{{VERSION}}_linux_x64 # ditto
|
||||
xattr -d com.apple.quarantine unlucky-launcher # macOS only: unsigned build, Gatekeeper
|
||||
chmod +x unlucky-launcher && ./unlucky-launcher
|
||||
```
|
||||
|
||||
## No GPU? Software renderer
|
||||
|
||||
The UI renders through `wgpu` (GPU) and falls back to the `tiny-skia` CPU rasteriser when no usable
|
||||
adapter is present. Force the CPU path on any machine with:
|
||||
|
||||
```bash
|
||||
unlucky-launcher --software-renderer # the documented switch
|
||||
unlucky-launcher --renderer=cpu # equivalent: pick the CPU renderer explicitly
|
||||
```
|
||||
adapter is present; `--software-renderer` (or its equivalent `--renderer=cpu`) forces that path.
|
||||
|
||||
## Verify the download
|
||||
|
||||
```bash
|
||||
# Linux / macOS
|
||||
sha256sum -c SHA256SUMS.txt --ignore-missing
|
||||
# Windows (PowerShell)
|
||||
Get-FileHash .\unlucky-launcher-{{VERSION}}-windows-x64.exe -Algorithm SHA256
|
||||
sha256sum -c SHA256SUMS.txt --ignore-missing # Linux / macOS
|
||||
Get-FileHash .\unlucky-launcher_{{VERSION}}_windows_x64.exe -Algorithm SHA256 # Windows PowerShell
|
||||
```
|
||||
|
||||
## 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.
|
||||
- Microsoft (MSA) sign-in needs an Azure public client id, and release binaries do not carry one: set
|
||||
`ULL_MSA_CLIENT_ID=<id>` before launching, or build with that variable set. Until then the app says
|
||||
"not configured" (with the command to fix it) instead of failing silently. Offline profiles and
|
||||
authlib-injector servers need no id.
|
||||
- Binaries are not code-signed / notarized yet: Windows SmartScreen and macOS Gatekeeper warn on first
|
||||
launch. The 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 are in `NOTICE`. Unlucky Launcher is not affiliated with Mojang or
|
||||
Microsoft; it does not ship game files.
|
||||
Apache-2.0, third-party notices in `NOTICE`. Not affiliated with Mojang or Microsoft; no game files ship.
|
||||
|
||||
## UI framework in this build
|
||||
|
||||
Every asset in this release is built from the iced UI (`crates/app-iced`, iced 0.14, MIT) — no Slint
|
||||
code is linked into it. The earlier Slint UI (`crates/app`) stays in the repository as historical
|
||||
source only: excluded from the cargo workspace, not built, not part of any asset here and not part of
|
||||
the release matrix. It did ship in the previous `v0.1.0` release; that release's Slint Royalty-Free
|
||||
2.0 attribution remains where it was published, and no asset in this build carries that obligation.
|
||||
There is deliberately no "Made with Slint" badge on this page: the obligation follows a Slint-linked
|
||||
binary, and this release has none.
|
||||
Every asset here is built from the iced UI (`crates/app-iced`, iced 0.14, MIT); no Slint code is linked
|
||||
into it. The earlier Slint UI (`crates/app`) stays in the repository as historical source only —
|
||||
excluded from the workspace, not built, in no asset and in no release slot. The Slint Royalty-Free 2.0
|
||||
attribution it carried belongs to the `v0.1.0` release and remains where it was published.
|
||||
Reference in new issue
Block a user