mirror of
https://github.com/storytold/craft-launcher.git
synced 2026-10-14 14:26:48 -04:00
* macOS: open disk images reliably, and say why when they won't open
Installing or updating an app on macOS could fail with only "couldn't open
the disk image". hdiutil's own reason was thrown away, and every install of
an app mounted its image at the same folder, which an attach that was
interrupted or timed out could still be holding.
- Each install mounts its image at a new, empty folder.
- The attach skips hdiutil's checksum pass (-noverify): the download's
SHA-256 is already checked against the release, and on a large image that
pass alone could run past the time limit, now 5 minutes.
- When the image still won't open, or the app won't copy, the message says
why in hdiutil's or ditto's words ("couldn't open the disk image:
Resource temporarily unavailable").
- hdiutil, ditto and codesign are run by full path: a launcher started from
Finder or at login gets a minimal PATH.
process::run is capture's sibling that returns the helper's error message;
capture is now built on it. The launcher's own macOS self-update installs
through the same code, so it gets all of this too.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* Release 0.2.1
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
47 lines
1021 B
TOML
47 lines
1021 B
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*", "apps/*", "xtask"]
|
|
|
|
[workspace.package]
|
|
version = "0.2.1"
|
|
edition = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.90"
|
|
repository = "https://github.com/storytold/craft-launcher"
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
[workspace.lints.clippy]
|
|
dbg_macro = "warn"
|
|
todo = "warn"
|
|
|
|
[workspace.dependencies]
|
|
artcraft-launcher-core = { path = "crates/core" }
|
|
artcraft-launcher-ui-egui = { path = "crates/ui-egui" }
|
|
artcraft-launcher-native = { path = "crates/native" }
|
|
egui = "0.36"
|
|
eframe = { version = "0.36", default-features = false }
|
|
egui_extras = { version = "0.36", default-features = false }
|
|
egui_kittest = "0.36"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
semver = { version = "1", features = ["serde"] }
|
|
log = "0.4"
|
|
|
|
[profile.dev.package."*"]
|
|
opt-level = 2
|
|
|
|
[profile.dev]
|
|
opt-level = 1
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
|
|
[profile.wasm-release]
|
|
inherits = "release"
|
|
opt-level = "s"
|
|
lto = "fat"
|
|
strip = "debuginfo"
|