Files
2026-09-23 18:45:57 +08:00

44 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
# 资安信插件助手 macOS 打包:release 构建 → ad-hoc 就地签名 → dmg
# 用法:bash tool/package_macos.sh
# 分发说明(ad-hoc 未公证):用户首次打开需「右键 .app → 打开」确认一次。
set -euo pipefail
cd "$(dirname "$0")/.."
APP_NAME="资安信插件助手"
APP="build/macos/Build/Products/Release/${APP_NAME}.app"
# 版本号 = 1.0.<MMdd.HHmm>.<git短哈希>,写入 build_info.g.dart 并用于 dmg 文件名
GIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo nogit)
STAMP=$(date +%m%d.%H%M)
VERSION="1.0.${STAMP}.${GIT_HASH}"
printf '// 由打包脚本自动生成(tool/package_windows.ps1 / tool/package_macos.sh),勿手改。\n// 手动 flutter build 未跑脚本时保持上次打包的值;脚本打包会写入"版本+git提交+时间"。\nconst String kBuildVersion = '"'"'%s'"'"';\n' "$VERSION" > lib/build_info.g.dart
DMG="dist/${APP_NAME}-macOS-${VERSION}.dmg"
echo "==> 版本号:$VERSION"
echo "==> flutter build macos --release"
flutter build macos --release
echo "==> 检查内置驱动"
if ls assets/drivers/*.dmg >/dev/null 2>&1; then
echo "已内置:$(ls assets/drivers/*.dmg)"
else
echo "警告:assets/drivers/ 下没有驱动 dmg,产出的安装包在向导中将只提供官网链接(一键安装不可用)。"
echo " 将 HiTiCardTypeMacDrivers_2.4.2.dmg 放入 assets/drivers/ 后重新打包即可内置。"
fi
echo "==> ad-hoc 就地签名(含全部嵌入内容;构建产物位于最终位置,直接在此重签)"
# 注意:ad-hoc 签名不要加 --options=runtime——hardened runtime 的库校验(library validation)
# 要求所有嵌入库与主程序同 Team ID,ad-hoc 无 Team 会导致 framework 加载被 dyld 拒绝
codesign --force --sign - --deep "$APP"
codesign --verify --verbose=2 "$APP"
echo "==> 打 dmg"
mkdir -p dist
rm -f "$DMG"
hdiutil create -volname "$APP_NAME" -srcfolder "$APP" -ov -format UDZO "$DMG"
echo "==> 完成"
ls -lh "$DMG"
echo "安装方式:双击 dmg 拖入「应用程序」;首次打开请右键 → 打开(ad-hoc 签名未公证)。"