#!/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" DMG="dist/${APP_NAME}-macOS.dmg" 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 签名未公证)。"