From ce43e1b11b0b6b921723386467ff4e1b03ad1606 Mon Sep 17 00:00:00 2001 From: sim Date: Thu, 10 Sep 2026 00:26:11 +0800 Subject: [PATCH] =?UTF-8?q?build(macos):=20DMG=20=E5=85=9C=E5=BA=95?= =?UTF-8?q?=EF=BC=88hdiutil=20+=20Applications=20=E6=9B=BF=E8=BA=AB?= =?UTF-8?q?=EF=BC=89=E5=B9=B6=E6=8C=89=E7=AC=AC=E4=B8=80=E6=80=A7=E5=8E=9F?= =?UTF-8?q?=E5=88=99=E6=94=B6=E7=B4=A7=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - tauri build 退出码非零不再夭折脚本:.app 已生成时用 hdiutil 兜底打包 DMG, 内容含 /Applications 替身,保留拖拽安装 - Cargo.toml Xcode 27 beta 构建注释压缩为一行事实 + 对策 --- openless-all/app/scripts/build-mac.sh | 18 +++++++++++++++++- openless-all/app/src-tauri/Cargo.toml | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/openless-all/app/scripts/build-mac.sh b/openless-all/app/scripts/build-mac.sh index a7fe0d5e..d799e34c 100755 --- a/openless-all/app/scripts/build-mac.sh +++ b/openless-all/app/scripts/build-mac.sh @@ -53,11 +53,27 @@ esac if [ -n "${TAURI_SIGNING_PRIVATE_KEY:-}" ] || [ -n "${TAURI_SIGNING_PRIVATE_KEY_PATH:-}" ]; then TAURI_BUILD_ARGS+=(--config '{"bundle":{"createUpdaterArtifacts":true}}') fi -npm run tauri -- "${TAURI_BUILD_ARGS[@]}" +# bundle_dmg(AppleScript)在 Xcode beta 上可能失败;.app 已生成时继续,由下方兜底补 DMG。 +npm run tauri -- "${TAURI_BUILD_ARGS[@]}" || echo "⚠ tauri build 退出码非零(可能仅 DMG 打包失败),继续校验" APP_VERSION="$(node -p "require('./package.json').version")" DMG_PATH="$DMG_DIR/OpenLess_${APP_VERSION}_${MAC_BUNDLE_ARCH}.dmg" +if [ ! -d "$APP" ]; then + echo "✗ 未生成 $APP —— 编译或打包失败,中止" + exit 1 +fi + +# DMG 兜底:OpenLess.app + /Applications 替身(拖拽安装)。 +if [ ! -f "$DMG_PATH" ]; then + echo "⚠ Tauri 未生成 DMG,使用 hdiutil 兜底(含 Applications 替身)" + DMG_STAGE="$(mktemp -d "${TMPDIR:-/tmp}/openless-dmg-stage.XXXXXX")" + cp -R "$APP" "$DMG_STAGE/OpenLess.app" + ln -s /Applications "$DMG_STAGE/Applications" + hdiutil create -volname "OpenLess" -srcfolder "$DMG_STAGE" -ov -format UDZO "$DMG_PATH" > /dev/null + rm -rf "$DMG_STAGE" +fi + echo "▶ 校验 Info.plist / 签名" /usr/libexec/PlistBuddy -c "Print :NSMicrophoneUsageDescription" "$INFO" > /dev/null bash scripts/check-macos-speech-usage-description.sh "$INFO" diff --git a/openless-all/app/src-tauri/Cargo.toml b/openless-all/app/src-tauri/Cargo.toml index 81385425..964ccf0a 100644 --- a/openless-all/app/src-tauri/Cargo.toml +++ b/openless-all/app/src-tauri/Cargo.toml @@ -185,6 +185,7 @@ custom-protocol = ["tauri/custom-protocol"] opt-level = 3 lto = "thin" codegen-units = 1 +# Xcode 27 beta 的 strip 会损坏 proc-macro dylib;本地构建加 CARGO_PROFILE_RELEASE_STRIP=none。 strip = "symbols" # issue #801: wayland-scanner 0.31.10 still pins vulnerable quick-xml 0.39.